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