Date:2010-08-17 15:24:33 (2 years 9 months ago)
Author:nbd
Commit:94f6a65d04a7fbaf271805717e4cfd9617dcc5a3
Message: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
Files: package/mac80211/patches/560-ath9k_baw_fix.patch (1 diff)

Change Details

package/mac80211/patches/560-ath9k_baw_fix.patch
1--- a/drivers/net/wireless/ath/ath9k/ath9k.h
2@@ -254,7 +254,7 @@ struct ath_atx_tid {
3     struct list_head buf_q;
4     struct ath_node *an;
5     struct ath_atx_ac *ac;
6- struct ath_buf *tx_buf[ATH_TID_MAX_BUFS];
7+ unsigned long tx_buf[BITS_TO_LONGS(ATH_TID_MAX_BUFS)];
8     u16 seq_start;
9     u16 seq_next;
10     u16 baw_size;
11--- a/drivers/net/wireless/ath/ath9k/xmit.c
12@@ -168,9 +168,9 @@ static void ath_tx_update_baw(struct ath
13     index = ATH_BA_INDEX(tid->seq_start, seqno);
14     cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
15
16- tid->tx_buf[cindex] = NULL;
17+ __clear_bit(cindex, tid->tx_buf);
18
19- while (tid->baw_head != tid->baw_tail && !tid->tx_buf[tid->baw_head]) {
20+ while (tid->baw_head != tid->baw_tail && !test_bit(tid->baw_head, tid->tx_buf)) {
21         INCR(tid->seq_start, IEEE80211_SEQ_MAX);
22         INCR(tid->baw_head, ATH_TID_MAX_BUFS);
23     }
24@@ -186,9 +186,7 @@ static void ath_tx_addto_baw(struct ath_
25
26     index = ATH_BA_INDEX(tid->seq_start, bf->bf_seqno);
27     cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
28-
29- BUG_ON(tid->tx_buf[cindex] != NULL);
30- tid->tx_buf[cindex] = bf;
31+ __set_bit(cindex, tid->tx_buf);
32
33     if (index >= ((tid->baw_tail - tid->baw_head) &
34         (ATH_TID_MAX_BUFS - 1))) {

Archive Download the corresponding diff file



interactive