diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-09-24 15:02:07 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-09-24 15:02:07 +0000 |
commit | a37c9c37e6cb53b15e91aa624ee61280cc9f9cdb (patch) | |
tree | c66954da344e2231c577ecd52e8e5727f9be651e /package/kernel/mac80211/patches/334-mac80211-fix-tx-sequence-number-assignment-with-soft.patch | |
parent | 53b7ad3cd9988ac9e466e54c4612d68b92b8ccf3 (diff) | |
download | master-187ad058-a37c9c37e6cb53b15e91aa624ee61280cc9f9cdb.tar.gz master-187ad058-a37c9c37e6cb53b15e91aa624ee61280cc9f9cdb.tar.bz2 master-187ad058-a37c9c37e6cb53b15e91aa624ee61280cc9f9cdb.zip |
mac80211: fix a few issues with fast-xmit support
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@47041 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211/patches/334-mac80211-fix-tx-sequence-number-assignment-with-soft.patch')
-rw-r--r-- | package/kernel/mac80211/patches/334-mac80211-fix-tx-sequence-number-assignment-with-soft.patch | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/334-mac80211-fix-tx-sequence-number-assignment-with-soft.patch b/package/kernel/mac80211/patches/334-mac80211-fix-tx-sequence-number-assignment-with-soft.patch new file mode 100644 index 0000000000..b19e7ee851 --- /dev/null +++ b/package/kernel/mac80211/patches/334-mac80211-fix-tx-sequence-number-assignment-with-soft.patch @@ -0,0 +1,23 @@ +From: Felix Fietkau <nbd@openwrt.org> +Date: Thu, 24 Sep 2015 14:10:07 +0200 +Subject: [PATCH] mac80211: fix tx sequence number assignment with software + queue + fast-xmit + +When using software queueing, tx sequence number assignment happens at +ieee80211_tx_dequeue time, so the fast-xmit codepath must not do that. + +Signed-off-by: Felix Fietkau <nbd@openwrt.org> +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -2766,7 +2766,8 @@ static bool ieee80211_xmit_fast(struct i + + if (hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) { + *ieee80211_get_qos_ctl(hdr) = tid; +- hdr->seq_ctrl = ieee80211_tx_next_seq(sta, tid); ++ if (!sta->sta.txq[0]) ++ hdr->seq_ctrl = ieee80211_tx_next_seq(sta, tid); + } else { + info->flags |= IEEE80211_TX_CTL_ASSIGN_SEQ; + hdr->seq_ctrl = cpu_to_le16(sdata->sequence_number); |