aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-06-10 04:21:40 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-14 15:39:27 -0400
commit5d22c89b9bea17a0e48e7534a9b237885e2c0809 (patch)
treeed4f1de2efaa41368a2774adc0e07d903f65ed98 /include
parenta622ab72b4dcfdf53e24b16e9530cb876979a00c (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')
-rw-r--r--include/net/mac80211.h32
1 files changed, 5 insertions, 27 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index abb3b1a9ddc..7f9401b3d3c 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,
2314int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); 2314int 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 */
2325void 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 */
2337void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, 2326void 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,
2351int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid); 2340int 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 */
2362void 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 */
2374void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, 2352void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra,
2375 u16 tid); 2353 u16 tid);