compat-wireless: add one pending patch for ath9k_hw for adhoc for AR9003
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Tue, 15 Jun 2010 21:06:27 +0000 (14:06 -0700)
committerLuis R. Rodriguez <lrodriguez@atheros.com>
Tue, 15 Jun 2010 21:06:27 +0000 (14:06 -0700)
This is not merged yet but required for testing.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
linux-next-pending/0001-ath9k_hw-avoid-setting-cwmin-cwmax-to-0-for-IBSS-for.patch [new file with mode: 0644]

diff --git a/linux-next-pending/0001-ath9k_hw-avoid-setting-cwmin-cwmax-to-0-for-IBSS-for.patch b/linux-next-pending/0001-ath9k_hw-avoid-setting-cwmin-cwmax-to-0-for-IBSS-for.patch
new file mode 100644 (file)
index 0000000..3d46ac7
--- /dev/null
@@ -0,0 +1,42 @@
+From 9f9720e76f635587e718e511b0b2871cf06ffa54 Mon Sep 17 00:00:00 2001
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+Date: Mon, 14 Jun 2010 17:12:56 -0700
+Subject: [PATCH] ath9k_hw: avoid setting cwmin/cwmax to 0 for IBSS for AR9003
+
+IBSS requires the cwmin and cwmax to be respected when
+we reset the txqueues on AR9003 otherwise the distribution
+of beacons will be balanced towards the AR9003 card first
+preventing equal contention for air time for other peers
+on the IBSS.
+
+Without this IBSS will work but only the AR9003 card will be
+be issuing beacons on the IBSS.
+
+Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
+---
+ drivers/net/wireless/ath/ath9k/mac.c |    9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
+index 1550591..e955bb9 100644
+--- a/drivers/net/wireless/ath/ath9k/mac.c
++++ b/drivers/net/wireless/ath/ath9k/mac.c
+@@ -555,8 +555,13 @@ bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
+               REGWRITE_BUFFER_FLUSH(ah);
+               DISABLE_REGWRITE_BUFFER(ah);
+-              /* cwmin and cwmax should be 0 for beacon queue */
+-              if (AR_SREV_9300_20_OR_LATER(ah)) {
++              /*
++               * cwmin and cwmax should be 0 for beacon queue
++               * but not for IBSS as we would create an imbalance
++               * on beaconing fairness for participating nodes.
++               */
++              if (AR_SREV_9300_20_OR_LATER(ah) &&
++                  ah->opmode != NL80211_IFTYPE_ADHOC) {
+                       REG_WRITE(ah, AR_DLCL_IFS(q), SM(0, AR_D_LCL_IFS_CWMIN)
+                                 | SM(0, AR_D_LCL_IFS_CWMAX)
+                                 | SM(qi->tqi_aifs, AR_D_LCL_IFS_AIFS));
+-- 
+1.6.3.3
+