diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-05-31 12:00:12 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-01 20:33:02 +0200 |
commit | 51a0d38de26226f2779912d92f155b93d539da9a (patch) | |
tree | 9f74cc26000dcebf79c93081c9afa62b787895ff /net/mac80211/agg-tx.c | |
parent | mac80211: fix blockack-req processing (diff) | |
download | linux-51a0d38de26226f2779912d92f155b93d539da9a.tar.xz linux-51a0d38de26226f2779912d92f155b93d539da9a.zip |
mac80211: fix dialog token allocator
The dialog token allocator has apparently been broken
since b83f4e15 ("mac80211: fix deadlock in sta->lock")
because it got moved out under the spinlock. Fix it.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to '')
-rw-r--r-- | net/mac80211/agg-tx.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c index c163d0a149f4..98258b7341e3 100644 --- a/net/mac80211/agg-tx.c +++ b/net/mac80211/agg-tx.c @@ -332,14 +332,16 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid) IEEE80211_QUEUE_STOP_REASON_AGGREGATION); spin_unlock(&local->ampdu_lock); - spin_unlock_bh(&sta->lock); - /* send an addBA request */ + /* prepare tid data */ sta->ampdu_mlme.dialog_token_allocator++; sta->ampdu_mlme.tid_tx[tid]->dialog_token = sta->ampdu_mlme.dialog_token_allocator; sta->ampdu_mlme.tid_tx[tid]->ssn = start_seq_num; + spin_unlock_bh(&sta->lock); + + /* send AddBA request */ ieee80211_send_addba_request(sdata, pubsta->addr, tid, sta->ampdu_mlme.tid_tx[tid]->dialog_token, sta->ampdu_mlme.tid_tx[tid]->ssn, |