freebsd-skq/sys
adrian 22b333e62a [ath] commit initial bluetooth coexistence support for the MCI NICs.
This is the initial framework to call into the MCI HAL routines and drive
the basic state engine.

The MCI bluetooth coex model uses a command channel between wlan and
bluetooth, rather than a 2-wire or 3-wire signaling protocol to control things.
This means the wlan and bluetooth chip exchange a lot more information and
signaling, even at the per-packet level.  The NICs in question can share
the input LNA and output PA on the die, so they absolutely can't stomp
on each other in a silly fashion.  It also allows for the bluetooth side
to signal when profiles come and go, so the driver can take appropriate
control.  There's also the possibility of dynamic bluetooth/wlan duty cycle
control which I haven't yet really played with.

It configures things up with a static "wlan wins everything" coexistence,
configures up the available 2GHz channel map for bluetooth, sets a static
duty cycle for bluetooth/wifi traffic priority and drives the basics needed to
keep the MCI HAL code happy.

It doesn't do any actual coexistence except to default to "wlan wins everything",
which at least demonstrates that things do indeed work.  Bluetooth inquiry frames
still trump wifi (including beacons), so that demonstrates things really do
indeed seem to work.

Tested:

* AR9462 (WB222), STA mode + bt
* QCA9565 (WB335), STA mode + bt

TODO:

* .. the rest of coexistence.  yes, bluetooth, not people.  That stuff's hard.
* It doesn't do the initial BT side calibration, which requires a WLAN chip
  reset.  I'll fix up the reset path a bit more first before I enable that.
* The 1-ant and 2-ant configuration bits aren't being set correctly in
  if_ath_btcoex.c - I'll dig into that and fix it in a subsequent commit.
* It's not enabled by default for WB222/WB225 even though I believe it now
  can be - I'll chase that up in a subsequent commit.

Obtained from:	Qualcomm Atheros, Linux ath9k
2016-06-02 00:51:36 +00:00
..
amd64 In pmap_advise(), avoid leaking DI start for EPT pmaps which needs A/D 2016-05-27 18:45:11 +00:00
arm Fix a crash while iterating compat strings when no match is found. 2016-05-31 21:58:09 +00:00
arm64 Return real error value instead of hard-coded ENXIO (fix after r300149) 2016-06-01 08:20:10 +00:00
boot Add missing libc includes to fix -Wimplicit-function-declaration warnings 2016-05-31 06:24:09 +00:00
bsm
cam Strip leading spaces off of a SCSI disk's serial number 2016-05-27 22:26:43 +00:00
cddl Improve the English in a comment 2016-06-01 22:21:42 +00:00
compat Fix kernel stack disclosures in the Linux and 4.3BSD compat layers. 2016-05-31 16:56:30 +00:00
conf [ath] commit initial bluetooth coexistence support for the MCI NICs. 2016-06-02 00:51:36 +00:00
contrib [ath_hal] add azimuth timestamp payload marking for AR9380 and later chips. 2016-06-01 15:56:07 +00:00
crypto Connect the SHA-512t256 and Skein hashing algorithms to ZFS 2016-05-31 04:12:14 +00:00
ddb Add a small set of logical operators to DDB command language. 2016-05-16 19:42:38 +00:00
dev [ath] commit initial bluetooth coexistence support for the MCI NICs. 2016-06-02 00:51:36 +00:00
fs Remove drop/reacquire of Giant around geom calls for cd9660 and udf. 2016-05-22 18:16:25 +00:00
gdb
geom When we are in panic, always go the asynchronous path in g_mirror_destroy(), 2016-06-01 22:11:54 +00:00
gnu Revert changes for local testing, inadvertantly commited in r300811. 2016-05-26 23:59:42 +00:00
i386 Add macro to convert errno and use it when appropriate. 2016-05-22 12:46:34 +00:00
isa sys/isa: minor spelling fixes. 2016-05-03 21:51:52 +00:00
kern Microoptimize locking primitives by avoiding unnecessary atomic ops. 2016-06-01 18:32:20 +00:00
kgssapi kgssapi: insignificant spelling fix. 2016-05-03 22:05:03 +00:00
libkern sys: Make use of our rounddown() macro when sys/param.h is available. 2016-04-30 14:41:18 +00:00
mips Build etherswitch support for appropriate Ralink/Mediatek SoCs 2016-05-25 06:47:28 +00:00
modules [ath] commit initial bluetooth coexistence support for the MCI NICs. 2016-06-02 00:51:36 +00:00
net In if_attachdomain1() there does not seem to be any reason 2016-05-28 08:32:15 +00:00
net80211 net80211: replace m_getcl/m_gethdr pair with m_get2 in ieee80211_fragment() 2016-05-28 19:13:39 +00:00
netgraph Fix style(9). 2016-05-26 19:17:51 +00:00
netinet The pr_destroy field does not allow us to run the teardown code in a 2016-06-01 10:14:04 +00:00
netinet6 The pr_destroy field does not allow us to run the teardown code in a 2016-06-01 10:14:04 +00:00
netipsec netipsec: Fix minor style nit 2016-05-10 20:14:11 +00:00
netnatm kernel: use our nitems() macro when it is available through param.h. 2016-04-19 23:48:27 +00:00
netpfil Replace constant expressions that contain multiplications by 2016-06-01 20:04:24 +00:00
netsmb sys/net*: minor spelling fixes. 2016-05-03 18:05:43 +00:00
nfs NFS: spelling fixes on comments. 2016-04-29 16:07:25 +00:00
nfsclient
nfsserver
nlm Remove slightly used const values that can be replaced with nitems(). 2016-04-21 15:38:28 +00:00
ofed Prepare for activation of LinuxKPI module parameters as read-only 2016-05-25 12:03:21 +00:00
opencrypto sys/opencrypto: minor spelling fixes. 2016-05-06 23:37:19 +00:00
pc98 Move 'device pci' for the PCI bus driver to the MI NOTES file. 2016-04-29 23:53:55 +00:00
powerpc Fix the deciKelvin to Celsius conversion in kernel. 2016-05-22 13:58:32 +00:00
riscv Add support for loadable kernel modules. 2016-06-01 14:12:31 +00:00
rpc Quell false positives in svc_vc_create and svc_vc_create_conn with cd and xprt 2016-05-27 08:48:33 +00:00
security sys/security: minor spelling fixes. 2016-05-06 16:59:04 +00:00
sparc64 Add macro to convert errno and use it when appropriate. 2016-05-22 12:46:34 +00:00
sys Microoptimize locking primitives by avoiding unnecessary atomic ops. 2016-06-01 18:32:20 +00:00
teken
tests
tools
ufs arc4random() returns 0 to (2**32)−1, use an alternative to initialize 2016-05-22 14:31:20 +00:00
vm Fix memguard(9) in kernels with INVARIANTS enabled. 2016-06-01 22:31:35 +00:00
x86 Implement _ALIGN() using internal integer types. 2016-05-31 13:31:19 +00:00
xdr RPC: for pointers replace 0 with NULL. 2016-04-14 17:06:37 +00:00
xen Don't repeat the the word 'the' 2016-05-17 12:52:31 +00:00
Makefile