From 94f6a65d04a7fbaf271805717e4cfd9617dcc5a3 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Tue, 17 Aug 2010 13:24:33 +0000
Subject: ath9k: remove an unnecessary BUG_ON in the aggregation code and clean
 up block ack window tracking to use less memory

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22688 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/mac80211/patches/560-ath9k_baw_fix.patch | 36 ++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 package/mac80211/patches/560-ath9k_baw_fix.patch

(limited to 'package/mac80211')

diff --git a/package/mac80211/patches/560-ath9k_baw_fix.patch b/package/mac80211/patches/560-ath9k_baw_fix.patch
new file mode 100644
index 000000000..50e4b99e4
--- /dev/null
+++ b/package/mac80211/patches/560-ath9k_baw_fix.patch
@@ -0,0 +1,36 @@
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -254,7 +254,7 @@ struct ath_atx_tid {
+ 	struct list_head buf_q;
+ 	struct ath_node *an;
+ 	struct ath_atx_ac *ac;
+-	struct ath_buf *tx_buf[ATH_TID_MAX_BUFS];
++	unsigned long tx_buf[BITS_TO_LONGS(ATH_TID_MAX_BUFS)];
+ 	u16 seq_start;
+ 	u16 seq_next;
+ 	u16 baw_size;
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -168,9 +168,9 @@ static void ath_tx_update_baw(struct ath
+ 	index  = ATH_BA_INDEX(tid->seq_start, seqno);
+ 	cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
+ 
+-	tid->tx_buf[cindex] = NULL;
++	__clear_bit(cindex, tid->tx_buf);
+ 
+-	while (tid->baw_head != tid->baw_tail && !tid->tx_buf[tid->baw_head]) {
++	while (tid->baw_head != tid->baw_tail && !test_bit(tid->baw_head, tid->tx_buf)) {
+ 		INCR(tid->seq_start, IEEE80211_SEQ_MAX);
+ 		INCR(tid->baw_head, ATH_TID_MAX_BUFS);
+ 	}
+@@ -186,9 +186,7 @@ static void ath_tx_addto_baw(struct ath_
+ 
+ 	index  = ATH_BA_INDEX(tid->seq_start, bf->bf_seqno);
+ 	cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
+-
+-	BUG_ON(tid->tx_buf[cindex] != NULL);
+-	tid->tx_buf[cindex] = bf;
++	__set_bit(cindex, tid->tx_buf);
+ 
+ 	if (index >= ((tid->baw_tail - tid->baw_head) &
+ 		(ATH_TID_MAX_BUFS - 1))) {
-- 
cgit v1.2.3