Commit 7107676a authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville

mac80211: fix endian issues and comments for BAR failure handling

Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 4245d313
...@@ -278,17 +278,19 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) ...@@ -278,17 +278,19 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
} }
if (!acked && ieee80211_is_back_req(fc)) { if (!acked && ieee80211_is_back_req(fc)) {
u16 control;
/* /*
* BAR failed, let's tear down the BA session as a * BAR failed, store the last SSN and retry sending
* last resort as some STAs (Intel 5100 on Windows) * the BAR when the next unicast transmission on the
* can get stuck when the BA window isn't flushed * same TID succeeds.
* correctly.
*/ */
bar = (struct ieee80211_bar *) skb->data; bar = (struct ieee80211_bar *) skb->data;
if (!(bar->control & IEEE80211_BAR_CTRL_MULTI_TID)) { 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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment