diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-06-10 04:21:40 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-14 15:39:27 -0400 |
commit | 5d22c89b9bea17a0e48e7534a9b237885e2c0809 (patch) | |
tree | ed4f1de2efaa41368a2774adc0e07d903f65ed98 /include/net/mac80211.h | |
parent | a622ab72b4dcfdf53e24b16e9530cb876979a00c (diff) |
mac80211: remove non-irqsafe aggregation callbacks
The non-irqsafe aggregation start/stop done
callbacks are currently only used by ath9k_htc,
and can cause callbacks into the driver again.
This might lead to locking issues, which will
only get worse as we modify locking. To avoid
trouble, remove the non-irqsafe versions and
change ath9k_htc to use those instead.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index abb3b1a9ddc9..7f9401b3d3c8 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -1445,7 +1445,7 @@ enum ieee80211_filter_flags { | |||
1445 | * | 1445 | * |
1446 | * Note that drivers MUST be able to deal with a TX aggregation | 1446 | * Note that drivers MUST be able to deal with a TX aggregation |
1447 | * session being stopped even before they OK'ed starting it by | 1447 | * session being stopped even before they OK'ed starting it by |
1448 | * calling ieee80211_start_tx_ba_cb(_irqsafe), because the peer | 1448 | * calling ieee80211_start_tx_ba_cb_irqsafe, because the peer |
1449 | * might receive the addBA frame and send a delBA right away! | 1449 | * might receive the addBA frame and send a delBA right away! |
1450 | * | 1450 | * |
1451 | * @IEEE80211_AMPDU_RX_START: start Rx aggregation | 1451 | * @IEEE80211_AMPDU_RX_START: start Rx aggregation |
@@ -2314,25 +2314,14 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw, | |||
2314 | int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); | 2314 | int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); |
2315 | 2315 | ||
2316 | /** | 2316 | /** |
2317 | * ieee80211_start_tx_ba_cb - low level driver ready to aggregate. | ||
2318 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | ||
2319 | * @ra: receiver address of the BA session recipient. | ||
2320 | * @tid: the TID to BA on. | ||
2321 | * | ||
2322 | * This function must be called by low level driver once it has | ||
2323 | * finished with preparations for the BA session. | ||
2324 | */ | ||
2325 | void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid); | ||
2326 | |||
2327 | /** | ||
2328 | * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. | 2317 | * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. |
2329 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | 2318 | * @vif: &struct ieee80211_vif pointer from the add_interface callback |
2330 | * @ra: receiver address of the BA session recipient. | 2319 | * @ra: receiver address of the BA session recipient. |
2331 | * @tid: the TID to BA on. | 2320 | * @tid: the TID to BA on. |
2332 | * | 2321 | * |
2333 | * This function must be called by low level driver once it has | 2322 | * This function must be called by low level driver once it has |
2334 | * finished with preparations for the BA session. | 2323 | * finished with preparations for the BA session. It can be called |
2335 | * This version of the function is IRQ-safe. | 2324 | * from any context. |
2336 | */ | 2325 | */ |
2337 | void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, | 2326 | void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, |
2338 | u16 tid); | 2327 | u16 tid); |
@@ -2351,25 +2340,14 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, | |||
2351 | int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid); | 2340 | int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid); |
2352 | 2341 | ||
2353 | /** | 2342 | /** |
2354 | * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate. | ||
2355 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | ||
2356 | * @ra: receiver address of the BA session recipient. | ||
2357 | * @tid: the desired TID to BA on. | ||
2358 | * | ||
2359 | * This function must be called by low level driver once it has | ||
2360 | * finished with preparations for the BA session tear down. | ||
2361 | */ | ||
2362 | void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid); | ||
2363 | |||
2364 | /** | ||
2365 | * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate. | 2343 | * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate. |
2366 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | 2344 | * @vif: &struct ieee80211_vif pointer from the add_interface callback |
2367 | * @ra: receiver address of the BA session recipient. | 2345 | * @ra: receiver address of the BA session recipient. |
2368 | * @tid: the desired TID to BA on. | 2346 | * @tid: the desired TID to BA on. |
2369 | * | 2347 | * |
2370 | * This function must be called by low level driver once it has | 2348 | * This function must be called by low level driver once it has |
2371 | * finished with preparations for the BA session tear down. | 2349 | * finished with preparations for the BA session tear down. It |
2372 | * This version of the function is IRQ-safe. | 2350 | * can be called from any context. |
2373 | */ | 2351 | */ |
2374 | void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, | 2352 | void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, |
2375 | u16 tid); | 2353 | u16 tid); |