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 14:33:02 -0400 |
commit | 51a0d38de26226f2779912d92f155b93d539da9a (patch) | |
tree | 9f74cc26000dcebf79c93081c9afa62b787895ff /net/mac80211/agg-tx.c | |
parent | 8ae5977ff95c03fe6c36a5721c57dcb4bfe4f290 (diff) | |
download | op-kernel-dev-51a0d38de26226f2779912d92f155b93d539da9a.zip op-kernel-dev-51a0d38de26226f2779912d92f155b93d539da9a.tar.gz |
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 'net/mac80211/agg-tx.c')
-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 c163d0a..98258b7 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, |