| 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))) { |
| 37 | |