--- /dev/null
+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
+