freebsd-dev/sys/modules
Adrian Chadd b70f530bc7 Bring over the initial static bluetooth coexistence configuration
for the WB195 combo NIC - an AR9285 w/ an AR3011 USB bluetooth NIC.

The AR3011 is wired up using a 3-wire coexistence scheme to the AR9285.

The code in if_ath_btcoex.c sets up the initial hardware mapping
and coexistence configuration.  There's nothing special about it -
it's static; it doesn't try to configure bluetooth / MAC traffic priorities
or try to figure out what's actually going on.  It's enough to stop basic
bluetooth traffic from causing traffic stalls and diassociation from
the wireless network.

To use this code, you must have the above NIC.  No, it won't work
for the AR9287+AR3012, nor the AR9485, AR9462 or AR955x combo cards.

Then you set a kernel hint before boot or before kldload, where 'X'
is the unit number of your AR9285 NIC:

# kenv hint.ath.X.btcoex_profile=wb195

This will then appear in your boot messages:

[100482] athX: Enabling WB195 BTCOEX

This code is going to evolve pretty quickly (well, depending upon my
spare time) so don't assume the btcoex API is going to stay stable.

In order to use the bluetooth side, you must also load in firmware using
ath3kfw and the binary firmware file (ath3k-1.fw in my case.)

Tested:

* AR9280, no interference
* WB195 - AR9285 + AR3011 combo; STA mode; basic bluetooth inquiries
  were enough to cause traffic stalls and disassociations.  This has
  stopped with the btcoex profile code.

TODO:

* Importantly - the AR9285 needs ASPM disabled if bluetooth coexistence
  is enabled.  No, I don't know why.  It's likely some kind of bug to do
  with the AR3011 sending bluetooth coexistence signals whilst the device
  is asleep.  Since we don't actually sleep the MAC just yet, it shouldn't
  be a problem.  That said, to be totally correct:

  + ASPM should be disabled - upon attach and wakeup
  + The PCIe powersave HAL code should never be called

  Look at what the ath9k driver does for inspiration.

* Add WB197 (AR9287+AR3012) support
* Add support for the AR9485, which is another combo like the AR9285
* The later NICs have a different signaling mechanism between the MAC
  and the bluetooth device; I haven't even begun to experiment with
  making that HAL code work.  But it should be a lot more automatic.

* The hardware can do much more interesting traffic weighting with
  bluetooth and wifi traffic.  None of this is currently used.
  Ideally someone would code up something to watch the bluetooth traffic
  GPIO (via an interrupt) and then watch it go high/low; then figure out
  what the bluetooth traffic is and adjust things appropriately.

* If I get the time I may add in some code to at least track this stuff
  and expose statistics.  But it's up to someone else to experiment with
  the bluetooth coexistence support and add the interesting stuff (like
  "real" detection of bulk, audio, etc bluetooth traffic patterns and
  change wifi parameters appropriately - eg, maximum aggregate length,
  transmit power, using quiet time to control TX duty cycle, etc.)
2013-06-07 09:02:02 +00:00
..
3dfx Finish migration of MAINTAINER entries 2012-10-22 02:12:11 +00:00
3dfx_linux
aac MFtbemd: 2010-08-23 06:13:29 +00:00
aacraid Driver 'aacraid' added. Supports Adaptec by PMC RAID controller families Series 6, 7, 8 and upcoming products. Older Adaptec RAID controller families are supported by the 'aac' driver. 2013-05-24 09:22:43 +00:00
accf_data
accf_dns
accf_http
acl_nfs4 Add module building Makefile entries for NFSv4 and POSIX.1e ACL handling. 2012-03-13 20:28:42 +00:00
acl_posix1e Add module building Makefile entries for NFSv4 and POSIX.1e ACL handling. 2012-03-13 20:28:42 +00:00
acpi Merge ACPICA 20130517. 2013-05-20 23:52:49 +00:00
ae
aesni style.Makefile(5) 2012-05-24 04:10:34 +00:00
age
agp Finish removing unneeded header from agp: opt_bus.h 2012-11-15 20:25:09 +00:00
aha No need to genreate these here 2011-01-06 21:04:00 +00:00
ahb No need to genreate these here 2011-01-06 21:04:00 +00:00
ahci Refactor enclosure manegement support in ahci(4). Move it out into separate 2012-07-26 13:44:48 +00:00
aic
aic7xxx Disable -Wconstant-conversion warnings for the aic7xxx module in a more 2011-12-22 16:16:12 +00:00
aio
alc
ale
alq
amdsbwd
amdtemp
amr MFtbemd: 2010-08-23 06:13:29 +00:00
an
aout
apm
ar71xx Begin breaking out the AR71xx specific functional drivers into modules. 2012-01-15 19:42:55 +00:00
arcmsr
arcnet Fix make buildworld -DMODULES_WITH_WORLD on i386 2011-04-09 09:07:31 +00:00
asmc
asr Amend r228781 by also disabling -Warray-bounds warnings for the asr 2011-12-24 17:54:58 +00:00
ata Fix a typo in r249213; the second bus_if.h should have been isa_if.h. 2013-05-29 23:56:49 +00:00
ath Bring over the initial static bluetooth coexistence configuration 2013-06-07 09:02:02 +00:00
ath_ahb Since these include wlan/ath/ah headers and these can change 2011-11-09 23:53:13 +00:00
ath_pci Since these include wlan/ath/ah headers and these can change 2011-11-09 23:53:13 +00:00
auxio
bce
bfe
bge MFtbemd: 2010-08-23 06:13:29 +00:00
bios Define several extra macros in bsd.sys.mk and sys/conf/kern.pre.mk, to 2012-02-28 18:30:18 +00:00
bktr
bm
bridgestp
bwi Fix make depend. 2012-05-22 06:33:08 +00:00
bwn Upgrade our copy of llvm/clang to trunk r162107. With thanks to 2012-08-20 18:33:03 +00:00
bxe Remove mii(4) dependency and unneeded headers. 2011-04-13 16:35:43 +00:00
cam - With the demise of !ATA_CAM, ATA_STATIC_ID is the only ata(4) related 2013-04-06 19:12:49 +00:00
canbepm
canbus
cardbus
carp - Rename if_carp.ko to carp.ko. 2011-12-16 14:28:34 +00:00
cas Make kernel modules build correctly on 64-bit PowerPC. 2010-07-13 12:47:31 +00:00
cbb
cc Import an implementation of the CAIA-Hamilton-Delay (CHD) congestion control 2011-02-01 07:05:14 +00:00
cd9660
cd9660_iconv
ce For sys/dev/ce/tau32-ddk.c, disable the following warning when building 2011-12-29 21:17:35 +00:00
cfi Add header required by cfi_bus_fdt.c. 2011-12-30 21:22:10 +00:00
ciss
cm
cmx Finish migration of MAINTAINER entries 2012-10-22 02:12:11 +00:00
coff
coretemp
cp
cpsw Merging of projects/armv6, part 10 2012-08-15 06:31:32 +00:00
cpuctl
cpufreq MFtbemd: 2010-08-23 06:13:29 +00:00
crypto List low-level Blowfish ECB module in the SRCS. It looks like it was dropped 2010-09-12 16:28:26 +00:00
cryptodev Add opt_compat.h to SRCS. 2010-10-13 14:44:38 +00:00
cs
ct Add a kernel module on pc98 for the ct(4) driver. 2012-09-06 18:02:32 +00:00
ctau
ctl Remove ctl(4) from GENERIC. Also remove 'options CTL_DISABLE' 2013-04-12 16:25:03 +00:00
cx
cxgb - Updated TOE support in the kernel. 2012-06-19 07:34:13 +00:00
cxgbe cxgbe(4): Add support for Chelsio's Terminator 5 (aka T5) ASIC. This 2013-03-30 02:26:20 +00:00
cyclic Jusy use i386 version of cyclic_machdep.c on all supported architectures. 2012-03-24 05:16:26 +00:00
dc
dcons Follow up to r225203 refining break-to-debugger run-time configuration 2011-08-27 14:24:27 +00:00
dcons_crom
de
digi Clean some 'svn:executable' properties in the tree. 2013-01-26 22:08:21 +00:00
dpms
dpt
drm Extend dim's hack from r228978: not only clang but gcc on non-x86 platforms 2012-10-28 02:15:35 +00:00
drm2 Import the preliminary port of the TTM. 2013-03-05 09:49:34 +00:00
dtrace Port the SDT test now that it's possible to create SDT probes that take 2013-06-02 00:33:36 +00:00
dummynet o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
ed
elink
em Add a source file needed for module linking. 2012-07-06 20:14:27 +00:00
en
ep
epic
esp Add a PCI front-end to esp(4) allowing it to support AMD Am53C974 and 2011-11-01 21:26:57 +00:00
et
ex
exca
ext2fs Sync with several changes in UFS/FFS: 2011-04-28 14:27:17 +00:00
fatm
fdc
fdescfs
fe
filemon Match the options of the kernel. 2013-06-04 06:38:01 +00:00
firewire Fix buildworld -DMODULES_WITH_WORLD 2011-04-05 19:41:18 +00:00
firmware
fuse Import a FreeBSD port of the FUSE Linux module. 2012-10-13 23:54:26 +00:00
fxp - Follow the lead of dcphy(4) and pnphy(4) and move the reminder of the PHY 2011-10-08 12:33:10 +00:00
gem Merge r207585 from cas(4): 2010-09-16 09:29:48 +00:00
geom Link g_label_disk_ident when building geom_label as a module 2013-04-17 09:19:29 +00:00
glxiic Add I2C bus driver for the AMD Geode LX series CS5536 Companion 2011-05-15 14:01:23 +00:00
glxsb
gpio Allow building the GPIO bus and associated bits as modules. 2012-01-15 19:40:59 +00:00
hatm
hifn
hme
hpt27xx - Don't include date and time the driver is built, this is useful for 2013-01-22 05:41:34 +00:00
hptiop
hptmv MFtbemd: 2010-08-23 06:13:29 +00:00
hptrr MFtbemd: 2010-08-23 06:13:29 +00:00
hwpmc Add software PMC support. 2012-03-28 20:58:30 +00:00
i2c MFtbemd: 2010-08-23 06:13:29 +00:00
ibcs2
ichwd
ida
ie
if_bridge
if_disc
if_edsc
if_ef
if_epair
if_faith
if_gif
if_gre
if_lagg
if_ndis
if_stf
if_tap
if_tun
if_vlan
igb Change defines in the igb driver to allow an easier selection of 2013-03-29 18:25:45 +00:00
iir
io MFtbemd: 2010-08-23 06:13:29 +00:00
ip6_mroute_mod
ip_mroute_mod
ipdivert Fix 'make depend'. 2012-02-16 21:57:50 +00:00
ipfilter Disable several instances instances of clang's -Wself-assign warning. 2011-12-30 13:16:59 +00:00
ipfw o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
ipfw_nat o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
ipmi
ips Upgrade our copy of llvm/clang to trunk r162107. With thanks to 2012-08-20 18:33:03 +00:00
ipw
ipwfw
isci Clean some 'svn:executable' properties in the tree. 2013-01-26 22:08:21 +00:00
iscsi Fix build. 2012-04-20 04:40:39 +00:00
isp
ispfw
iwi
iwifw
iwn Fix make depend. 2012-12-02 22:18:01 +00:00
iwnfw Add firmware images for the 6000 series g2a and g2b adapters. 2011-04-20 17:34:09 +00:00
ixgb
ixgbe Change the ixgbe module name to if_ixgbe to conform 2013-02-28 22:48:00 +00:00
jme
joy
kbdmux
kgssapi Consistently set RPCGEN_CPP when running rpcgen, so the C preprocessor 2012-02-07 09:27:07 +00:00
kgssapi_krb5 Consistently set RPCGEN_CPP when running rpcgen, so the C preprocessor 2012-02-07 09:27:07 +00:00
khelp Import the ERTT (Enhanced Round Trip Time) Khelp module. ERTT uses the 2011-01-24 23:08:38 +00:00
krpc Make the RPC specific __rpc_inet_ntop() and __rpc_inet_pton() general 2010-09-24 15:01:45 +00:00
ksyms
le MFtbemd: 2010-08-23 06:13:29 +00:00
lge
libalias
libiconv Add unicode support to msdosfs and smbfs; original pathes from imura, 2011-11-18 03:05:20 +00:00
libmbpool
libmchain Add unicode support to msdosfs and smbfs; original pathes from imura, 2011-11-18 03:05:20 +00:00
lindev
linprocfs MFtbemd: 2010-08-23 06:13:29 +00:00
linsysfs MFtbemd: 2010-08-23 06:13:29 +00:00
linux Fix make depend 2012-05-06 11:41:00 +00:00
lmc
lpt
mac_biba
mac_bsdextended
mac_ifoff
mac_lomac
mac_mls
mac_none
mac_partition
mac_portacl
mac_seeotheruids
mac_stub
mac_test
malo
mcd
md
mem Disconnect sun4v architecture from the three. 2011-05-14 01:53:38 +00:00
mfi MFhead_mfi r227068 2012-03-30 23:05:48 +00:00
mii Merging of projects/armv6, part 5 2012-08-15 04:03:55 +00:00
mlx
mlx4 Add OFED and the associated options and drivers to x86 LINT builds: 2012-04-12 14:01:06 +00:00
mlx4ib Add OFED and the associated options and drivers to x86 LINT builds: 2012-04-12 14:01:06 +00:00
mlxen Add OFED and the associated options and drivers to x86 LINT builds: 2012-04-12 14:01:06 +00:00
mly
mmc
mmcsd o Fixes: 2012-04-21 01:51:16 +00:00
mps Upgrade our copy of llvm/clang to trunk r162107. With thanks to 2012-08-20 18:33:03 +00:00
mpt
mqueue Fix 'make depend' 2013-03-03 16:17:09 +00:00
msdosfs
msdosfs_iconv
mse
msk
mthca Redo r242842, now actually fixing the warnings, as follows: 2012-11-12 22:01:29 +00:00
mvs MFC r207536, r207696, r208183: 2010-05-19 14:50:07 +00:00
mwl Fix make depend. 2012-05-01 07:38:40 +00:00
mwlfw
mxge Improve mxge's receive performance for IPv6: 2013-02-21 21:28:33 +00:00
my
nand Add nand core module and module dependency information. 2012-06-26 18:08:03 +00:00
nandfs Import work done under project/nand (@235533) into head. 2012-05-17 10:11:18 +00:00
nandsim Import work done under project/nand (@235533) into head. 2012-05-17 10:11:18 +00:00
ncv
ndis MFtbemd: 2010-08-23 06:13:29 +00:00
netgraph Use rt_numfibs variable instead of compile-time RT_NUMFIBS. 2012-03-13 11:08:40 +00:00
netmap add support to build netmap as a module, 2012-05-29 19:55:07 +00:00
nfe
nfs_common
nfscl Fix make buildworld -DMODULES_WITH_WORLD 2011-06-23 20:31:52 +00:00
nfsclient Fix the experimental NFS client so that it does not bogusly 2011-04-25 22:22:51 +00:00
nfscommon Fix make buildworld -DMODULES_WITH_WORLD 2011-06-23 20:31:52 +00:00
nfsd Move the NFS FHA (File Handle Affinity) code from sys/nfsserver to 2013-04-17 22:42:43 +00:00
nfslock Move sys/nfsclient/nfs_lock.c into sys/nfs and build it as a separate 2010-07-24 22:11:11 +00:00
nfslockd
nfsserver Move the NFS FHA (File Handle Affinity) code from sys/nfsserver to 2013-04-17 22:42:43 +00:00
nfssvc
nge
nmdm
nsp
ntb Add a new driver to support the Intel Non-Transparent Bridge(NTB). 2013-04-29 22:48:53 +00:00
nullfs
nvd Add nvme(4) and nvd(4) Makefiles to the tree. 2012-09-17 19:58:02 +00:00
nve Set WERROR= for the nve(4) module. This driver gives several warnings 2011-12-24 13:36:28 +00:00
nvme Move the busdma mapping functions to nvme_qpair.c. 2013-04-12 17:48:45 +00:00
nvram
nxge Use .PATH instead of VPATH. 2012-11-08 01:35:02 +00:00
oce Depend on the relevant header files. 2012-02-11 08:34:33 +00:00
opensolaris Finally... Import the latest open-source ZFS version - (SPA) 28. 2011-02-27 19:41:40 +00:00
padlock
patm
pccard
pcfclock
pcn
pf o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
pflog o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
pfsync o Create directory sys/netpfil, where all packet filters should 2012-09-14 11:51:49 +00:00
plip
pmc
powermac_nvram
ppbus
ppc MFtbemd: 2010-08-23 06:13:29 +00:00
ppi
pps
procfs MFtbemd: 2010-08-23 06:13:29 +00:00
pseudofs
pst
pty
puc
qlxgb Add QLogic 10 Gigabit Ethernet & CNA Adapter Driver version 1.30 2011-11-03 21:20:22 +00:00
qlxgbe Add Qlogic 10Gigabit Ethernet & CNA Adapter Driver Version 3.10.10 for 2013-05-15 17:03:09 +00:00
ral Add support for Ralink RT2800/RT3000 chipsets. 2012-05-10 17:41:16 +00:00
ralfw Update the rt2860's firmware and add a Makefile for the module. While 2012-03-13 21:25:25 +00:00
random Add support for new Intel on-CPU Bull Mountain random number 2012-09-05 13:18:51 +00:00
rc
rc4
rdma Fix 'make depend'. 2012-06-25 09:46:06 +00:00
re
reiserfs
rl
rndtest
rp
runfw MFC r203148 2010-05-17 23:41:06 +00:00
s3
safe
sbni
scc Fix the scc(4) module build. Without the file it's missing a required symbol. 2012-02-26 13:27:22 +00:00
scd
scsi_low Remove scsi_low_pisa.c from the module Makefile to keep in line 2012-09-10 21:57:40 +00:00
sdhci Split sdhci driver in two parts: sdhci and sdhci_pci. 2012-10-16 01:10:43 +00:00
sdhci_pci Split sdhci driver in two parts: sdhci and sdhci_pci. 2012-10-16 01:10:43 +00:00
sem Add missed dependency. 2010-08-15 15:33:01 +00:00
send MFp4: anchie_soc2009 branch: 2010-08-19 11:31:03 +00:00
sf
sfxge Add the sfxge(4) device driver, providing support for 10Gb Ethernet adapters 2011-11-16 17:11:13 +00:00
sge MFC r206625: 2010-04-26 17:03:56 +00:00
siba_bwn MFC r203319: 2010-04-20 21:29:53 +00:00
siftr Import the Statistical Information For TCP Research (SIFTR) kernel module into 2010-07-03 13:32:39 +00:00
siis
sio Follow up to r225203 refining break-to-debugger run-time configuration 2011-08-27 14:24:27 +00:00
sis
sk
smbfs MFtbemd: 2010-08-23 06:13:29 +00:00
sn
snc
snp
sound Clean some 'svn:executable' properties in the tree. 2013-01-26 22:08:21 +00:00
speaker
splash - Add support for ASCII art splash screens in TheDraw format 2011-12-12 21:12:07 +00:00
sppp
ste
stg
stge
streams
svr4 MFtbemd: 2010-08-23 06:13:29 +00:00
sym
syscons MFtbemd: 2010-08-23 06:13:29 +00:00
sysvipc Add opt_compat.h to SRCS. 2010-10-13 14:44:38 +00:00
ti
tl
tmpfs
toecore Fix 'make depend'. 2012-06-25 09:46:06 +00:00
tpm Hook tpm.4 manual to build. 2010-08-13 04:00:35 +00:00
trm
twa
twe
tws Add the 9750 SATA+SAS 6Gb/s RAID controller card driver, tws(4). Many 2011-10-04 21:40:25 +00:00
tx
txp
uart Build uart_dev_lpc.c on arm only. This fixes pc98 build. 2013-04-22 13:02:41 +00:00
ubsec
ubser
uchcom
ucycom
udf
udf_iconv
ufs Fix module build after r243245. 2012-11-20 15:23:22 +00:00
unionfs
usb - With the demise of !ATA_CAM, ATA_STATIC_ID is the only ata(4) related 2013-04-06 19:12:49 +00:00
utopia
vesa
vge
viawd Add watchdog support for VIA south bridge chipset. 2011-12-12 09:50:33 +00:00
virtio Virtio SCSI driver 2012-10-11 23:41:18 +00:00
vkbd
vmm Corral all the host state associated with the virtual machine into its own file. 2012-10-29 01:51:24 +00:00
vpo
vr
vte Add driver for DM&P Vortex86 RDC R6040 Fast Ethernet. 2010-12-31 00:21:41 +00:00
vx MFtbemd: 2010-08-23 06:13:29 +00:00
vxge Exar driver for X3100 10GbE Server/Storage adapters 2011-04-28 14:33:15 +00:00
wb
wbwd Provide wbwd(4), a driver for the watchdog timer found on various 2012-03-06 18:44:52 +00:00
wi Fix 'make depend'. 2012-02-16 21:57:50 +00:00
wlan Allow IEEE80211_SUPPORT_SUPERG to be defined _and_ have a working wlan 2013-02-02 02:00:29 +00:00
wlan_acl
wlan_amrr
wlan_ccmp
wlan_rssadapt
wlan_tkip
wlan_wep
wlan_xauth
wpi Fix make depend 2012-06-03 12:19:16 +00:00
wpifw Update firmware for wpi(4) from version 2.14.4 to 15.32.2.9. 2010-12-19 11:37:44 +00:00
wtap Tidy-up. 2012-01-17 18:20:34 +00:00
x86bios Do not build real mode emulator for i386. We use VM86 again since r210877. 2010-08-08 06:18:05 +00:00
xe
xl - Follow the lead of dcphy(4) and pnphy(4) and move the reminder of the PHY 2011-10-08 12:33:10 +00:00
zfs Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
zlib
Makefile Driver 'aacraid' added. Supports Adaptec by PMC RAID controller families Series 6, 7, 8 and upcoming products. Older Adaptec RAID controller families are supported by the 'aac' driver. 2013-05-24 09:22:43 +00:00
Makefile.inc