mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-24 20:38:57 +02:00
mac80211: fix an endian issue in BlockAckReq handling
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28190 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
d29e95d41e
commit
c75cf5d14a
@ -73,13 +73,26 @@
|
|||||||
/*
|
/*
|
||||||
* Use a static threshold for now, best value to be determined
|
* Use a static threshold for now, best value to be determined
|
||||||
* by testing ...
|
* 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;
|
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);
|
+ 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_MASK) >>
|
||||||
IEEE80211_BAR_CTRL_TID_INFO_SHIFT;
|
IEEE80211_BAR_CTRL_TID_INFO_SHIFT;
|
||||||
- ieee80211_stop_tx_ba_session(&sta->sta, tid);
|
- ieee80211_stop_tx_ba_session(&sta->sta, tid);
|
||||||
|
Loading…
Reference in New Issue
Block a user