All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sujith Manoharan <sujith@msujith.org>
To: sandeep suresh <sandeep.suresh@yahoo.co.in>
Cc: Adrian Chadd <adrian@freebsd.org>,
	ath9k-devel <ath9k-devel@lists.ath9k.org>,
	"linux-wireless\@vger.kernel.org"
	<linux-wireless@vger.kernel.org>
Subject: Re: [ath9k-devel] AR9287 ; 2-wire coexistence expected behavior
Date: Fri, 5 Apr 2013 17:01:30 +0530	[thread overview]
Message-ID: <20830.46610.23754.783231@gargle.gargle.HOWL> (raw)
In-Reply-To: <1365152761.13005.YahooMailNeo@web193505.mail.sg3.yahoo.com>

sandeep suresh wrote:
> I had a look at the source code for Ath9k. For 2-wire coexistence, other than
> GPIO configuration (direction, Mux etc) for WLAN_ACTIVE and BT_ACTIVITY, is
> there also weight register configuration for BT and WLAN for 2-wire?  What
> exactly is the meaning of these weight registers?

BTCOEX protocol in ath9k can be of 3 types: 2-wire, 3-wire and MCI.

All chips in the pre-AR9003 family have separate WLAN and BT devices
as part of the same board. In a 2-wire connection between the devices, they
are marked as BT_ACTIVE and WLAN_ACTIVE. BT_ACTIVE is driven by the BT device
and WLAN_ACTIVE by the WLAN device, obviously.

If the Bluetooth device is expecting to TX or RX, it asserts BT_ACTIVE. If
WLAN traffic has been prioritized over BT traffic, WLAN_ACTIVE is asserted and
Bluetooth traffic is "stomped".

Now, the means of "prioritizing" traffic is done based on "weights". For each
combination of BT_PRIORITY/BT_[TX|RX], weights are programmed in the HW.
The same is done for WLAN. So, when the card is operational and BT_ACTIVE is
asserted and if there is current WLAN traffic, the HW checks if the weight
of the BT traffic is lower than WLAN and if so, continues to transmit WLAN frames.
If BT priority is higher, the HW will *abort* WLAN traffic like there was
a collision. I'd assume that at this point, backoff will kick in.

2-wire doesn't have BT_PRIORITY, so traffic classification is very primitive
and coexistence is not optimal. 3-wire is much better and the best of the breed
is the MCI based scheme implemented in AR9462 and AR9565. These two chips, unlike
other WLAN+BT cards like WB195, WB225, WB197 etc. are *combo* chips and hence
have a complex system of message-passing to exchange information between the
BT-core and WLAN. MCI is built on 3-wire, so it uses the same lines at a basic level.

Now, these lines (either 2 or 3) are connected by GPIOs at the WLAN side. They
can be programmed as either input or output and the GPIO number is fixed for
each card. The WLAN-driven line WLAN_ACTIVE is configured as output and the
signals coming in from BT are configured as input. The actual pin numbers can be
found in ath9k_hw_btcoex_init_scheme().

This is only the basic picture - there are a lot of other components which
interact with each other to provide a more dynamic algorithm to distribute
airtime between WLAN and BT. Most of the stuff is in gpio.c and btcoex.c

Hope this helps.

Sujith

WARNING: multiple messages have this Message-ID (diff)
From: Sujith Manoharan <sujith@msujith.org>
To: ath9k-devel@lists.ath9k.org
Subject: [ath9k-devel] AR9287 ; 2-wire coexistence expected behavior
Date: Fri, 5 Apr 2013 17:01:30 +0530	[thread overview]
Message-ID: <20830.46610.23754.783231@gargle.gargle.HOWL> (raw)
In-Reply-To: <1365152761.13005.YahooMailNeo@web193505.mail.sg3.yahoo.com>

sandeep suresh wrote:
> I had a look at the source code for Ath9k. For 2-wire coexistence, other than
> GPIO configuration (direction, Mux etc) for WLAN_ACTIVE and BT_ACTIVITY, is
> there also weight register configuration for BT and WLAN for 2-wire?  What
> exactly is the meaning of these weight registers?

BTCOEX protocol in ath9k can be of 3 types: 2-wire, 3-wire and MCI.

All chips in the pre-AR9003 family have separate WLAN and BT devices
as part of the same board. In a 2-wire connection between the devices, they
are marked as BT_ACTIVE and WLAN_ACTIVE. BT_ACTIVE is driven by the BT device
and WLAN_ACTIVE by the WLAN device, obviously.

If the Bluetooth device is expecting to TX or RX, it asserts BT_ACTIVE. If
WLAN traffic has been prioritized over BT traffic, WLAN_ACTIVE is asserted and
Bluetooth traffic is "stomped".

Now, the means of "prioritizing" traffic is done based on "weights". For each
combination of BT_PRIORITY/BT_[TX|RX], weights are programmed in the HW.
The same is done for WLAN. So, when the card is operational and BT_ACTIVE is
asserted and if there is current WLAN traffic, the HW checks if the weight
of the BT traffic is lower than WLAN and if so, continues to transmit WLAN frames.
If BT priority is higher, the HW will *abort* WLAN traffic like there was
a collision. I'd assume that at this point, backoff will kick in.

2-wire doesn't have BT_PRIORITY, so traffic classification is very primitive
and coexistence is not optimal. 3-wire is much better and the best of the breed
is the MCI based scheme implemented in AR9462 and AR9565. These two chips, unlike
other WLAN+BT cards like WB195, WB225, WB197 etc. are *combo* chips and hence
have a complex system of message-passing to exchange information between the
BT-core and WLAN. MCI is built on 3-wire, so it uses the same lines at a basic level.

Now, these lines (either 2 or 3) are connected by GPIOs at the WLAN side. They
can be programmed as either input or output and the GPIO number is fixed for
each card. The WLAN-driven line WLAN_ACTIVE is configured as output and the
signals coming in from BT are configured as input. The actual pin numbers can be
found in ath9k_hw_btcoex_init_scheme().

This is only the basic picture - there are a lot of other components which
interact with each other to provide a more dynamic algorithm to distribute
airtime between WLAN and BT. Most of the stuff is in gpio.c and btcoex.c

Hope this helps.

Sujith

  parent reply	other threads:[~2013-04-05 11:33 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-15  0:10 Announcement: open source AR9380 and later HAL Adrian Chadd
2013-03-15  0:10 ` [ath9k-devel] " Adrian Chadd
2013-04-01 22:20 ` Nick Kossifidis
2013-04-01 22:20   ` [ath9k-devel] " Nick Kossifidis
2013-04-02  3:00   ` [ath9k-devel] Source code for Bluetooth AR3012 drivers sandeep suresh
2013-04-02  3:07     ` Adrian Chadd
2013-04-02  3:07       ` Adrian Chadd
2013-04-02  4:15       ` sandeep suresh
2013-04-02 11:57   ` [ath9k-devel] AR9287; mapping between GPIOs and COEX pins sandeep suresh
2013-04-02 14:53     ` Adrian Chadd
2013-04-02 14:53       ` [ath9k-devel] " Adrian Chadd
2013-04-02 15:20       ` sandeep suresh
2013-04-02 16:47         ` Adrian Chadd
2013-04-02 16:47           ` [ath9k-devel] " Adrian Chadd
2013-04-04 15:19   ` [ath9k-devel] AR9287 ; 2-wire coexistence expected behavior sandeep suresh
2013-04-04 18:06     ` Adrian Chadd
2013-04-04 18:06       ` [ath9k-devel] " Adrian Chadd
2013-04-05  3:08       ` sandeep suresh
2013-04-05  4:13         ` Adrian Chadd
2013-04-05  4:13           ` [ath9k-devel] " Adrian Chadd
2013-04-05  8:00           ` sandeep suresh
2013-04-05  8:17             ` Adrian Chadd
2013-04-05  8:17               ` [ath9k-devel] " Adrian Chadd
2013-04-05  9:06               ` sandeep suresh
2013-04-05  9:13                 ` Adrian Chadd
2013-04-05  9:13                   ` [ath9k-devel] " Adrian Chadd
2013-04-05 11:31                 ` Sujith Manoharan [this message]
2013-04-05 11:31                   ` Sujith Manoharan
2013-04-05 15:24                   ` sandeep suresh
2013-04-05 16:41                     ` Adrian Chadd
2013-04-05 16:41                       ` Adrian Chadd
2013-04-05 17:37                       ` Adrian Chadd
2013-04-05 17:37                         ` Adrian Chadd
2013-04-05 22:36                         ` Adrian Chadd
2013-04-05 22:36                           ` Adrian Chadd
2013-04-07 14:54                           ` sandeep suresh
2013-04-07 17:46                             ` Adrian Chadd
2013-04-07 17:46                               ` Adrian Chadd
2013-04-08  5:20                               ` sandeep suresh
2013-04-08  8:58                                 ` Adrian Chadd
2013-04-08  8:58                                   ` Adrian Chadd
2013-04-08  9:00                                 ` Adrian Chadd
2013-04-08  9:00                                   ` Adrian Chadd
2013-04-08  9:39                                   ` sandeep suresh
2013-04-08 15:09                                     ` sandeep suresh
2013-04-08 18:39                                       ` Adrian Chadd
2013-04-08 18:39                                         ` Adrian Chadd
2013-04-09 23:00                                         ` Adrian Chadd
2013-04-09 23:00                                           ` Adrian Chadd
2013-04-10  2:37                                           ` sandeep suresh
2013-04-10  5:37                                             ` Adrian Chadd
2013-04-10  5:37                                               ` Adrian Chadd
2013-04-10  6:13                                               ` sandeep suresh
2013-04-10  7:22                                                 ` Adrian Chadd
2013-04-10  7:22                                                   ` Adrian Chadd
2013-04-15  7:53                                                   ` sandeep suresh
2013-04-15 14:21                                                     ` Adrian Chadd
2013-04-15 14:21                                                       ` Adrian Chadd
2013-04-15 15:40                                                       ` sandeep suresh
2013-04-15 15:44                                                       ` sandeep suresh
2013-04-15 16:13                                                       ` sandeep suresh
2013-04-15 17:45                                                         ` Adrian Chadd
2013-04-15 17:45                                                           ` Adrian Chadd
2013-04-16  3:16                                                           ` sandeep suresh
2013-04-16  3:55                                                           ` sandeep suresh
2013-04-16 17:00                                                             ` Adrian Chadd
2013-04-16 17:00                                                               ` Adrian Chadd
2013-04-17 10:33                                                               ` sandeep suresh
     [not found]                                                                 ` <CAJ-Vmokx0MbTC47+0fcRt9yQshfTaPEDte2A=7Ycn2bzwLSPxg@mail.gmail.com>
     [not found]                                                                   ` <1366248389.18545.YahooMailNeo@web193503.mail.sg3.yahoo.com>
     [not found]                                                                     ` <CAJ-VmomXz93U7HCmscd=NVZKQ+RFbty+Xh_wcOPYEDhX57ptbw@mail.gmail.com>
     [not found]                                                                       ` <1366281249.7026.YahooMailNeo@web193504.mail.sg3.yahoo.com>
2013-04-18 14:16                                                                         ` Adrian Chadd
2013-04-18 14:16                                                                           ` Adrian Chadd
2013-05-21  6:40                                                                           ` sandeep suresh
2013-05-21 14:33                                                                             ` Adrian Chadd
2013-05-21 14:33                                                                               ` Adrian Chadd
2013-05-22  5:49                                                                               ` sandeep suresh
2013-06-25  6:09                                                                                 ` sandeep suresh
2013-07-03 22:24                                                                                   ` Kamran Nishat
2013-07-05 14:45                                                                                     ` sandeep suresh
2014-02-07 14:48                                                                                       ` [ath9k-devel] How to prepare a 802.11 channel map with energy using ATH9K sandeep suresh
2014-02-09 21:41                                                                                         ` karl at aspodata.se
2014-02-11  3:09                                                                                           ` sandeep suresh
2014-02-11  7:53                                                                                             ` karl
2014-02-11  7:53                                                                                               ` karl at aspodata.se
2014-02-26 16:46                                                                                               ` Linux board that supports AR9287 and 7" display with ath9k support sandeep suresh
2014-02-26 16:46                                                                                                 ` [ath9k-devel] " sandeep suresh
2013-05-27  8:10                                                                               ` [ath9k-devel] AR9287; WiFi AP Mode - Increase interbeacon duration of 100ms sandeep suresh
2013-06-03 10:15                                                                                 ` sandeep suresh
2013-06-03 16:16                                                                                   ` Ben Greear
2013-06-03 16:16                                                                                     ` Ben Greear
2013-06-04 10:36                                                                                     ` sandeep suresh
2014-03-31 14:35                                         ` Impact of migration from compat wireless to backports sandeep suresh
2014-03-31 14:35                                           ` [ath9k-devel] " sandeep suresh
2014-04-04  1:55                                           ` Wifi client Bluetooth coexistence; non smooth video streams sandeep suresh
2014-04-04  1:55                                             ` [ath9k-devel] " sandeep suresh
2013-04-06 19:36                     ` [ath9k-devel] AR9287 ; 2-wire coexistence expected behavior Sujith Manoharan
2013-04-06 19:36                       ` Sujith Manoharan
2013-04-06 19:40                       ` Sujith Manoharan
2013-04-06 19:40                         ` Sujith Manoharan
2013-04-07 14:46                         ` sandeep suresh
2013-04-04 22:27     ` Adrian Chadd
2013-04-05  2:55       ` sandeep suresh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20830.46610.23754.783231@gargle.gargle.HOWL \
    --to=sujith@msujith.org \
    --cc=adrian@freebsd.org \
    --cc=ath9k-devel@lists.ath9k.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=sandeep.suresh@yahoo.co.in \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.