Skip to content

Commit

Permalink
mac80211: fix regression in SSN handling of addba tx
Browse files Browse the repository at this point in the history
commit 73111ef upstream.

Some drivers that do their own sequence number allocation (e.g. ath9k) rely
on being able to modify params->ssn on starting tx ampdu sessions.
This was broken by a change that modified it to use sta->tid_seq[tid] instead.

Cc: stable@vger.kernel.org
Fixes: 31d8bb4 ("mac80211: agg-tx: refactor sending addba")
Reported-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Link: https://lore.kernel.org/r/20211124094024.43222-1-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
nbd168 authored and gregkh committed Dec 22, 2021
1 parent 49b7e49 commit 15640e4
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
4 changes: 2 additions & 2 deletions net/mac80211/agg-tx.c
Expand Up @@ -480,8 +480,7 @@ static void ieee80211_send_addba_with_timeout(struct sta_info *sta,

/* send AddBA request */
ieee80211_send_addba_request(sdata, sta->sta.addr, tid,
tid_tx->dialog_token,
sta->tid_seq[tid] >> 4,
tid_tx->dialog_token, tid_tx->ssn,
buf_size, tid_tx->timeout);

WARN_ON(test_and_set_bit(HT_AGG_STATE_SENT_ADDBA, &tid_tx->state));
Expand Down Expand Up @@ -523,6 +522,7 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid)

params.ssn = sta->tid_seq[tid] >> 4;
ret = drv_ampdu_action(local, sdata, &params);
tid_tx->ssn = params.ssn;
if (ret == IEEE80211_AMPDU_TX_START_DELAY_ADDBA) {
return;
} else if (ret == IEEE80211_AMPDU_TX_START_IMMEDIATE) {
Expand Down
1 change: 1 addition & 0 deletions net/mac80211/sta_info.h
Expand Up @@ -190,6 +190,7 @@ struct tid_ampdu_tx {
u8 stop_initiator;
bool tx_stop;
u16 buf_size;
u16 ssn;

u16 failed_bar_ssn;
bool bar_pending;
Expand Down

0 comments on commit 15640e4

Please sign in to comment.