diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-06-10 04:21:48 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-14 15:39:28 -0400 |
commit | cfcdbde35e2b621cf56bedc38a3a81e8c28addb9 (patch) | |
tree | cd0664681dc4629f7ce9a3319868eebb005060ff /net/mac80211/driver-ops.h | |
parent | 83a5cbf73a13d0c8be019b22afec4407e4285aed (diff) |
mac80211: change TX aggregation locking
To prepare for allowing drivers to sleep in
ampdu_action, change the locking in the TX
aggregation code to use the mutex the RX part
already uses. The spinlock is still necessary
around some code to avoid races with TX, but
now we can also synchronize_net() to avoid
getting an inconsistent sequence number.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/driver-ops.h')
-rw-r--r-- | net/mac80211/driver-ops.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index e5e7ef175ca2..7e86c6f89be9 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h | |||
@@ -349,6 +349,9 @@ static inline int drv_ampdu_action(struct ieee80211_local *local, | |||
349 | u16 *ssn) | 349 | u16 *ssn) |
350 | { | 350 | { |
351 | int ret = -EOPNOTSUPP; | 351 | int ret = -EOPNOTSUPP; |
352 | |||
353 | might_sleep(); | ||
354 | |||
352 | local_bh_disable(); | 355 | local_bh_disable(); |
353 | if (local->ops->ampdu_action) | 356 | if (local->ops->ampdu_action) |
354 | ret = local->ops->ampdu_action(&local->hw, &sdata->vif, action, | 357 | ret = local->ops->ampdu_action(&local->hw, &sdata->vif, action, |