CHROMIUM: ath9k: Merges for BTCOEX on 9462
authorPaul Stewart <pstew@chromium.org>
Wed, 25 Jul 2012 20:21:59 +0000 (13:21 -0700)
committerGerrit <chrome-bot@google.com>
Tue, 7 Aug 2012 18:38:34 +0000 (11:38 -0700)
commit8e472ca88ec0458394cd42aa22e75eada355aa5f
tree88762e1d7df53d702c0f2069b839499d8282e641
parent041ab2587059c419778b0dc3813671b017f40be1
CHROMIUM: ath9k: Merges for BTCOEX on 9462

This commit has the suggested upstream merge list for Bluetooth
coexistence for the Atheros AR9462.  There are a lot of untested
changes here, so we leave the current ath9k driver alone for the
most part and create a new "ath9k_btcoex" driver and apply the
merge list to that.  This way, we can carry the original driver
in parallel (modified only to remove support for ar9462).

The symbols in the ath9k_btcoex driver tree are modified so they
do not match those from ath9k, and modprobe dependencies work
correctly.  Also, the rate control algorithm has been renamed to
"ath9k_btcoex_rate_control" so ath9k and ath9k_btcoex modules
can be loaded simultaneously.

This driver is accessible using the following configuration
options:

   ATH9K_BTCOEX (ATH9K)
   ATH9K_BTCOEX_COMMON (ATH9K_COMMON)
   ATH9K_BTCOEX_HW (ATH9K_HW)

Committed changes follow below:

ath9k: Use atomic operations
   (cherry picked with fixup from 781b14a3153a722fec820374271316537881076e)
ath9k: Reconfigure VIF state properly
   (cherry picked from commit 6dcc344469d60a1f0d72cc638967e8c83c6e166e)
ath9k: Cleanup the beacon tasklet
   (cherry picked from commit fb6e252f8d262d05da3ae023b4a6f83d0eec17d9)
ath9k: Set the TSF adjust value properly
   (cherry picked from commit 2f8e82e8ab4629e648925c566cc26bdcf25f0aec)
ath9k: Cleanup beacon queue configuration
   (cherry picked from commit 7e52c8aa35c987236a80b7063c418a3d29b51052)
ath9k: Remove is_bslot_active
   (cherry picked from commit aa45fe9683ba861bf49d51479b11b3d482b57416)
ath9k: Cleanup beacon logic
   (cherry picked with fixup from ef4ad63368e6162fb0b18861748fac49edfcbd03)
ath9k: Simplify ASSOC handling
   (cherry picked with fixup from 6c43c090a92938c3e89ce3b7459f91c5159535e2)
ath9k: Cleanup interface handling
   (cherry picked with fixup from df35d29e171ef043976b339812276ff96d1f4c21)
ath9k_hw: Cleanup ath9k_hw_set_tsfadjust
   (cherry picked with fixup from 60ca9f8744d29b8fdfd33d3dec8fc2cfc9ec381a)
ath9k: Fix beacon setup
   (cherry picked with fixup from 130ef6e9dc76f821caf98fa9ed6e2dafe15f3b1f)
ath9k_hw: remove debugging masks from AR_MCI_INTERRUPT_RX_MSG_DEFAULT
   (cherry picked from commit d081257c78ace442db2a59f0aa4c52c69b252663)
ath9k: Stop the BTCOEX timers before disabling BTCOEX
   (cherry picked from commit 6454bf2921c73b47dde9f989bd99aeff25171110)
ath9k: Fix MCI cleanup
   (cherry picked from commit df171637109b8760dd28dc15eb06eb0901689117)
ath9k_hw: fix AR9462 2g5g switch on full reset
   (cherry picked from commit 2250fe4a94863a647683e09b0b798772e01e062c)
ath9k: fix power consumption on network sleep when BTCOEX is enabled
   (cherry picked from commit 8a795aec91c98b6e5a734b32e0e37205ba2c95d2)
ath9k: fix fullsleep power consumption when BTCOEX is enabled
   (cherry picked from commit 84db9667b177cb4ba01b117297a89b0a34d8c45a)
ath9k_hw: start noisefloor calibration after MCI reset
   (cherry picked with fixup from 678dffdcb7e53c11e93ac5beb4ca8ac710720f93)
ath9k: fixing register bit shift values of control packets to support TPC
   (cherry picked from commit 912f81412f9362737deae9dd4f9472e0b73fc4b5)
ath9k: Fix clearing of BTCOEX flags
   (cherry picked from commit e790eab9ef203ff2843b5f9c80efb1339e1d867b)
ath9k: de-duplicate initvals
   (cherry picked with fixup from 469979173ecda9c472c495608d6d540ec33ab85d)
ath9k: update AR934x initvals to latest version
   (cherry picked from commit 589ebd85268293e64ff6b7e0dd4ed8fb26811aa7)
ath9k: Fix signedness in a MCI debug message
   (cherry picked from commit d8fffb4a9e13d1130b4fd0e577973704cad79f40)
ath9k_hw: make use of the wrapper to check for MCI init
   (cherry picked from commit 812944891c598300afcc5628905d775019f25310)
ath9k: Fix compilation breakage
   (cherry picked from commit bf52592fe4901f486a5266fd73e4ee80205b18b4)
ath9k: Fix lockdep splat
   (cherry picked from commit fad29cd2f59949581050a937786c2c9bc78b2f04)
ath9k: raise aggregation limit to 64k for HT IBSS
   (cherry picked from commit 313eb87f1e2f93d83836de7f5c1947b75d7752c8)
ath9k_hw: fix smatch warning in ar9003_hw_spur_mitigate_mrc_cck
   (cherry picked from commit 4b5237cc86872319a321ca1a694dee8866f7d9a3)
ath9k_hw: rename mrcCCKOff to fix smatch warning
   (cherry picked from commit 81b67fd60a75cac36092aa37cd0728aab3a7a938)
ath9k: do not sampling on ani timer when chip is in sleep
   (cherry picked with fixup from 5039f38e16695a0a5c72b08c6a6cc66844a657b1)
ath9k_hw: fix LNA control on WLAN sleep
   (cherry picked from commit 4ff6a9d200c66f192da61822c36ad14424e218d6)
ath9k_hw: update ar9462 dac_async_fifo initval
   (cherry picked from commit 0967d862315366e2ef2401301ff2b1756928b4c1)
ath9k: fix mci_is_enabled utility
   (cherry picked from commit e1ecad78e5c5c32f331925f340141a38aaa64cef)
ath9k_hw: fix BT mute at hw init
   (cherry picked from commit a68807e9177a083dc09c24b141158539d71db21c)
ath9k: fix incorrect profile type manupulation
   (cherry picked from commit 305dd09f8ce05cc8a8cce4e790a6d3d02e5c4f1d)
ath9k_hw: clean up ANI OFDM trigger handling
   (cherry picked from commit 058a6385cb876d4b1b97610ee4e73a845e7bea71)
ath9k: remove MIB interrupt support
   (cherry picked from commit 198823fd002a7f9784648c24c72b7e8c9e73fd14)
ath9k_hw: clean up defines and variables from the ANI implementation split
   (cherry picked from commit 465dce62cdb35f49bc0e859fb23787e1229b62a3)
ath9k_hw: remove the old ANI implementation
   (cherry picked with fixup from 6790ae7a1383db07842b3fd03208dd86f55da57e)
ath9k_hw: clean up / fix ANI mode checks related to beacon RSSI
   (cherry picked from commit 5330df7b178f4f050c67451413020bdd4ec75262)
ath9k_hw: remove confusing logic inversion in an ANI variable
   (cherry picked with fixup from 7067e7014d7013645f7e866b74814f1e59e6a7cd)
ath9k_hw: fix OFDM weak signal detection handling
   (cherry picked with fixup from 0b81cc3922bce79d0f21189648bf4f9992e9a533)
ath9k_hw: remove aniState->noiseFloor
   (cherry picked from commit 35e808b7e4e9ddac1086716867fe686f52fb78ff)
ath9k_hw: remove MCI_STATE_SET_BT_SLEEP
   (cherry picked from commit 9330969b8fd1304fdcb7c1825f1528eea38d321c)
ath9k_hw: remove MCI_STATE_CONT_* state
   (cherry picked from commit 26e942b790eddc757b5be179ef67907e025ff87b)
ath9k_hw: remove MCI_STATE_BT
   (cherry picked from commit 6d97be48e27603f99743fc0e94e57dce2edb9cbf)
ath9k_hw: remove p_data argument from ar9003_mci_state
   (cherry picked from commit b98ccec0a497a9f08d705f1a7d63d5690bb48e70)
ath9k_hw: remove MCI_STATE_NEED_FLUSH_BT_INFO
   (cherry picked from commit d02ca07e6fdf89ed6f453fe1c9229c71a0358886)
ath9k_hw: remove MCI_STATE_SEND_WLAN_CHANNELS
   (cherry picked from commit 2d340ac81e7474535db7a14f35c80b45b02b63a1)
ath9k_hw: add utility function to set BT version
   (cherry picked from commit e1763d3f3388968d622a340fed711ae16fc1bc11)
ath9k_hw: cleanup MCI gpm offset state
   (cherry picked from commit 506847ad34c08fe4f766ffe1b955713628acf6bd)
ath9k: fix btcoex duty cycle
   (cherry picked from commit a197b76c230725962dc8e13102b24468e8621bfb)
ath9k: defer btcoex scheme update
   (cherry picked from commit 3c7992e33ab8d0c625a45ded11cc10d5b622bcd4)
ath9k: keep btcoex period in milliseconds
   (cherry picked from commit dfd0587a7d99d42cc2d608324991169494d2dbba)
ath9k: simplify btcoex profile management
   (cherry picked from commit 9e2e0c84699ce7adeddb5cd5763956493ca7d331)
ath9k_hw: process MCI interrupts only when btcoex is enabled
   (cherry picked from commit 92a33298e9a329d4bed9f723811c5bedc7d92b9c)
ath9k_hw: program OBS register only when MCI is disabled
   (cherry picked from commit ed6ebd8bc852845e34e8160eed43b29236b1892f)
ath9k_hw: fix incorrect LNA register settings
   (cherry picked from commit 1bde95fa7ed84094d0606d9e79356a9dd8d0e01b)
ath9k_hw: check GPM HW write pointer before chip reset
   (cherry picked from commit 3863495b86d8ee8e7e70a328de5b88d555d7305a)
ath9k_hw: Fix AR9462 power consumption on idle associated
   (cherry picked from commit 9dd9b0dc1de8031a31b3eaebc6a9c0ab60612026)
ath9k: restore power state on set channel failure
   (cherry picked from commit 8389fb3fd7c0bbe3289578f698917f594e0b6fc9)
ath9k: choose legacy rate as last rate of MRR series
   (cherry picked from commit cec429dd65ef1ccc693e5fa1468b0a12982b4283)
ath9k_hw: Update initvals for AR9462
   (cherry picked from commit 6304c20167337e21699bb3f7d25fcf099263416e)
ath9k: Move LNA code to antenna.c
   (cherry picked with fixup from 8da07830e10a91cbe7badf9767230aafdd520b9c)
ath9k: improve BT FTP/PAN performance
   (cherry picked from commit 6995fb805ed5de852a7d49413730980bc7173e82)
ath9k_hw: fix power state for MCI
   (cherry picked from commit 153dccd467b818b1dd3a6801b14e94a7a48ef859)
ath9k: BT coex performance tuning for AR9462
   (cherry picked from commit 0603143e47a34d0485a13fd7f46e56a97e687e34)
ath9k_hw: fix BT RF performance
   (cherry picked from commit 99922a45e96b22df387823ad5ecfe4dc26a96c9e)
ath9k_hw: program BT to control SPDT
   (cherry picked from commit 9dc08eceb7491331e81acde625e0d9c82aa86a16)
ath9k: cleanup MCI indentation
   (cherry picked from commit 4f6bd1a8dfcc649912310777a44c49849ae2a63d)
ath9k: Use separate operational flags for BTCOEX
   (cherry picked from commit e6930c4b32aaa30fb9510984509afcc9f61fa39c)
ath9k: Remove SC_OP_OFFCHANNEL
   (cherry picked with fixup from 4cb54fa3a2456e66d8e3bae663d66f00cbb9e483)
ath9k_hw: Fix variable usage
   (cherry picked from commit 2fd5d35bc87a301d5c10397c5b38a4ec8532a975)
ath9k: Add MCI interrupt to debugfs statistics
   (cherry picked with fixup from 97ba515a201bc61c7d36c41ad728b0a7debd5d88)
ath9k_hw: Cleanup power mode API
   (cherry picked from commit 31604cf0a73ffd63929f3a646d5402d5901c6e4b)
ath9k: Ensure a fair beacon distribution in IBSS mode
   (cherry picked from commit d202caff28d69f4ec6cf56568f79b0916294cade)
ath9k: fix beacon descriptor
   (cherry picked from commit cd484aeb4976899a4c6efbed951ac2fc8c51e097)
ath9k: skip beaconing when reset work is pending
   (cherry picked from commit 4e7fb7187d69132cf8223d4f8a49f86a6aba529d)
ath9k: add possible wiphy interface combinations
   (cherry picked from commit 20c8e8dc4e9baf0c1b7c77c860726788896f2d9c)
ath9k_hw: remove ATH_BTCOEX_CFG_MCI
   (cherry picked from commit 0466e2547d05a9ae8d49afc67a3851d034a528f8)
ath9k: stop rx dma before stopping tx
   (cherry picked from commit ceea2a51969f8b578777c99ec2718021427770c3)
ath9k: fix a tx rate duration calculation bug
   (cherry picked from commit 76591bea9714a58d8924154068c78d702eb2cb17)
ath9k: fix invalid pointer access in the tx path
   (cherry picked from commit 80b08a8d8829a58b5db14b1417151094cc28face)

Signed-off-by: Paul Stewart <pstew@chromium.org>
BUG=chrome-os-partner:11082
TEST=Boot device, join WiFi (no Bluetooth testing done yet)

Change-Id: I114ad8a5a1068da0dc2c3c84dd89738d2116401b
Reviewed-on: https://gerrit.chromium.org/gerrit/28420
Commit-Ready: Paul Stewart <pstew@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
74 files changed:
drivers/net/wireless/ath/Kconfig
drivers/net/wireless/ath/Makefile
drivers/net/wireless/ath/ath9k/pci.c
drivers/net/wireless/ath/ath9k_btcoex/Kconfig [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/Makefile [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ahb.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ani.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ani.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/antenna.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar5008_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar5008_phy.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9001_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9002_calib.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9002_hw.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9002_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9002_mac.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9002_phy.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9002_phy.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_2p2_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_calib.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_eeprom.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_eeprom.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_hw.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_mac.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_mac.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_mci.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_mci.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_paprd.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_phy.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_phy.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_rtt.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9003_rtt.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9330_1p1_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9330_1p2_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9340_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9462_2p0_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9485_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ar9580_1p0_initvals.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/ath9k.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/beacon.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/btcoex.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/btcoex.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/calib.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/calib.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/common.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/common.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/debug.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/debug.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/dfs.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/dfs.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/dfs_debug.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/dfs_debug.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/eeprom.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/eeprom.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/eeprom_4k.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/eeprom_9287.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/eeprom_def.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/gpio.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/hw-ops.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/hw.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/hw.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/init.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/mac.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/mac.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/main.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/mci.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/mci.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/pci.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/phy.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/rc.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/rc.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/recv.c [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/reg.h [new file with mode: 0644]
drivers/net/wireless/ath/ath9k_btcoex/xmit.c [new file with mode: 0644]