diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-09-07 06:06:34 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-09-07 06:06:34 +0000 |
commit | 5da0d9dda1418278a32f8850aba9c23eb36028b2 (patch) | |
tree | 79be1cd371f476a6783ca2741670cb51e4d3be1e | |
parent | 1c0d12c93518711cabe9278d0812da5442259a30 (diff) | |
download | upstream-5da0d9dda1418278a32f8850aba9c23eb36028b2.tar.gz upstream-5da0d9dda1418278a32f8850aba9c23eb36028b2.tar.bz2 upstream-5da0d9dda1418278a32f8850aba9c23eb36028b2.zip |
mac80211: fix an endian issue in BlockAckReq handling
SVN-Revision: 28190
-rw-r--r-- | package/mac80211/patches/560-mac80211_defer_bar_tx.patch | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/package/mac80211/patches/560-mac80211_defer_bar_tx.patch b/package/mac80211/patches/560-mac80211_defer_bar_tx.patch index 9bf89183e8..15f812c6fa 100644 --- a/package/mac80211/patches/560-mac80211_defer_bar_tx.patch +++ b/package/mac80211/patches/560-mac80211_defer_bar_tx.patch @@ -73,13 +73,26 @@ /* * Use a static threshold for now, best value to be determined * by testing ... -@@ -254,10 +286,13 @@ void ieee80211_tx_status(struct ieee8021 +@@ -246,6 +278,8 @@ void ieee80211_tx_status(struct ieee8021 + } + + if (!acked && ieee80211_is_back_req(fc)) { ++ u16 control; ++ + /* + * BAR failed, let's tear down the BA session as a + * last resort as some STAs (Intel 5100 on Windows) +@@ -253,11 +287,15 @@ void ieee80211_tx_status(struct ieee8021 + * correctly. */ bar = (struct ieee80211_bar *) skb->data; - if (!(bar->control & IEEE80211_BAR_CTRL_MULTI_TID)) { +- if (!(bar->control & IEEE80211_BAR_CTRL_MULTI_TID)) { +- tid = (bar->control & ++ control = le16_to_cpu(bar->control); ++ if (!(control & IEEE80211_BAR_CTRL_MULTI_TID)) { + u16 ssn = le16_to_cpu(bar->start_seq_num); + - tid = (bar->control & ++ tid = (control & IEEE80211_BAR_CTRL_TID_INFO_MASK) >> IEEE80211_BAR_CTRL_TID_INFO_SHIFT; - ieee80211_stop_tx_ba_session(&sta->sta, tid); |