summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-09-24 14:59:48 +0200
committerJohannes Berg <johannes.berg@intel.com>2015-09-29 15:56:51 +0200
commit50f36ae61a5b65ba4612a5d2aa696c8ac5b6c988 (patch)
tree7bf079ddaaf700e4e63ee119d7774ff52a6ae17a /net
parent44674d9c2267f454f38df7b2395939bfa911f92e (diff)
downloadlinux-50f36ae61a5b65ba4612a5d2aa696c8ac5b6c988.tar.gz
linux-50f36ae61a5b65ba4612a5d2aa696c8ac5b6c988.tar.bz2
linux-50f36ae61a5b65ba4612a5d2aa696c8ac5b6c988.zip
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> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/tx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 73540723be37..464ba1a625bd 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -2767,7 +2767,8 @@ static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata,
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);