freebsd-dev/sys
Adrian Chadd bcf5fc498a [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
dev [ath] commit initial bluetooth coexistence support for the MCI NICs. 2016-06-02 00:51:36 +00:00
fs
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
isa
kern Microoptimize locking primitives by avoiding unnecessary atomic ops. 2016-06-01 18:32:20 +00:00
kgssapi
libkern
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
netnatm
netpfil Replace constant expressions that contain multiplications by 2016-06-01 20:04:24 +00:00
netsmb
nfs
nfsclient
nfsserver
nlm
ofed Prepare for activation of LinuxKPI module parameters as read-only 2016-05-25 12:03:21 +00:00
opencrypto
pc98
powerpc
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
sparc64
sys Microoptimize locking primitives by avoiding unnecessary atomic ops. 2016-06-01 18:32:20 +00:00
teken
tests
tools
ufs
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
xen
Makefile