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 | |
| 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')
| -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); |
