Lines Matching refs:sta
61 void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, in ___ieee80211_stop_rx_ba_session() argument
64 struct ieee80211_local *local = sta->local; in ___ieee80211_stop_rx_ba_session()
67 .sta = &sta->sta, in ___ieee80211_stop_rx_ba_session()
75 lockdep_assert_held(&sta->ampdu_mlme.mtx); in ___ieee80211_stop_rx_ba_session()
77 tid_rx = rcu_dereference_protected(sta->ampdu_mlme.tid_rx[tid], in ___ieee80211_stop_rx_ba_session()
78 lockdep_is_held(&sta->ampdu_mlme.mtx)); in ___ieee80211_stop_rx_ba_session()
80 if (!test_bit(tid, sta->ampdu_mlme.agg_session_valid)) in ___ieee80211_stop_rx_ba_session()
83 RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], NULL); in ___ieee80211_stop_rx_ba_session()
84 __clear_bit(tid, sta->ampdu_mlme.agg_session_valid); in ___ieee80211_stop_rx_ba_session()
86 ht_dbg(sta->sdata, in ___ieee80211_stop_rx_ba_session()
88 sta->sta.addr, tid, in ___ieee80211_stop_rx_ba_session()
92 if (drv_ampdu_action(local, sta->sdata, ¶ms)) in ___ieee80211_stop_rx_ba_session()
93 sdata_info(sta->sdata, in ___ieee80211_stop_rx_ba_session()
95 sta->sta.addr, tid); in ___ieee80211_stop_rx_ba_session()
99 ieee80211_send_delba(sta->sdata, sta->sta.addr, in ___ieee80211_stop_rx_ba_session()
120 void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, in __ieee80211_stop_rx_ba_session() argument
123 mutex_lock(&sta->ampdu_mlme.mtx); in __ieee80211_stop_rx_ba_session()
124 ___ieee80211_stop_rx_ba_session(sta, tid, initiator, reason, tx); in __ieee80211_stop_rx_ba_session()
125 mutex_unlock(&sta->ampdu_mlme.mtx); in __ieee80211_stop_rx_ba_session()
132 struct sta_info *sta; in ieee80211_stop_rx_ba_session() local
136 sta = sta_info_get_bss(sdata, addr); in ieee80211_stop_rx_ba_session()
137 if (!sta) { in ieee80211_stop_rx_ba_session()
144 set_bit(i, sta->ampdu_mlme.tid_rx_stop_requested); in ieee80211_stop_rx_ba_session()
146 ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work); in ieee80211_stop_rx_ba_session()
158 struct sta_info *sta = tid_rx->sta; in sta_rx_agg_session_timer_expired() local
168 ht_dbg(sta->sdata, "RX session timer expired on %pM tid %d\n", in sta_rx_agg_session_timer_expired()
169 sta->sta.addr, tid); in sta_rx_agg_session_timer_expired()
171 set_bit(tid, sta->ampdu_mlme.tid_rx_timer_expired); in sta_rx_agg_session_timer_expired()
172 ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work); in sta_rx_agg_session_timer_expired()
180 ieee80211_release_reorder_timeout(tid_rx->sta, tid_rx->tid); in sta_rx_agg_reorder_timer_expired()
231 void ___ieee80211_start_rx_ba_session(struct sta_info *sta, in ___ieee80211_start_rx_ba_session() argument
236 struct ieee80211_local *local = sta->sdata->local; in ___ieee80211_start_rx_ba_session()
239 .sta = &sta->sta, in ___ieee80211_start_rx_ba_session()
251 ht_dbg(sta->sdata, in ___ieee80211_start_rx_ba_session()
253 sta->sta.addr, tid); in ___ieee80211_start_rx_ba_session()
257 if (!sta->sta.ht_cap.ht_supported) { in ___ieee80211_start_rx_ba_session()
258 ht_dbg(sta->sdata, in ___ieee80211_start_rx_ba_session()
260 sta->sta.addr, tid); in ___ieee80211_start_rx_ba_session()
265 if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { in ___ieee80211_start_rx_ba_session()
266 ht_dbg(sta->sdata, in ___ieee80211_start_rx_ba_session()
268 sta->sta.addr, tid); in ___ieee80211_start_rx_ba_session()
272 if (sta->sta.he_cap.has_he) in ___ieee80211_start_rx_ba_session()
282 (!(sta->sta.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA))) || in ___ieee80211_start_rx_ba_session()
285 ht_dbg_ratelimited(sta->sdata, in ___ieee80211_start_rx_ba_session()
287 sta->sta.addr, tid, ba_policy, buf_size); in ___ieee80211_start_rx_ba_session()
295 if (buf_size > sta->sta.max_rx_aggregation_subframes) in ___ieee80211_start_rx_ba_session()
296 buf_size = sta->sta.max_rx_aggregation_subframes; in ___ieee80211_start_rx_ba_session()
299 ht_dbg(sta->sdata, "AddBA Req buf_size=%d for %pM\n", in ___ieee80211_start_rx_ba_session()
300 buf_size, sta->sta.addr); in ___ieee80211_start_rx_ba_session()
303 lockdep_assert_held(&sta->ampdu_mlme.mtx); in ___ieee80211_start_rx_ba_session()
305 if (test_bit(tid, sta->ampdu_mlme.agg_session_valid)) { in ___ieee80211_start_rx_ba_session()
306 if (sta->ampdu_mlme.tid_rx_token[tid] == dialog_token) { in ___ieee80211_start_rx_ba_session()
309 ht_dbg_ratelimited(sta->sdata, in ___ieee80211_start_rx_ba_session()
311 sta->sta.addr, tid); in ___ieee80211_start_rx_ba_session()
318 tid_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); in ___ieee80211_start_rx_ba_session()
327 ht_dbg_ratelimited(sta->sdata, in ___ieee80211_start_rx_ba_session()
329 sta->sta.addr, tid); in ___ieee80211_start_rx_ba_session()
332 ___ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT, in ___ieee80211_start_rx_ba_session()
338 ret = drv_ampdu_action(local, sta->sdata, ¶ms); in ___ieee80211_start_rx_ba_session()
339 ht_dbg(sta->sdata, in ___ieee80211_start_rx_ba_session()
341 sta->sta.addr, tid, ret); in ___ieee80211_start_rx_ba_session()
377 ret = drv_ampdu_action(local, sta->sdata, ¶ms); in ___ieee80211_start_rx_ba_session()
378 ht_dbg(sta->sdata, "Rx A-MPDU request on %pM tid %d result %d\n", in ___ieee80211_start_rx_ba_session()
379 sta->sta.addr, tid, ret); in ___ieee80211_start_rx_ba_session()
397 tid_agg_rx->sta = sta; in ___ieee80211_start_rx_ba_session()
401 rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx); in ___ieee80211_start_rx_ba_session()
410 __set_bit(tid, sta->ampdu_mlme.agg_session_valid); in ___ieee80211_start_rx_ba_session()
411 __clear_bit(tid, sta->ampdu_mlme.unexpected_agg); in ___ieee80211_start_rx_ba_session()
412 sta->ampdu_mlme.tid_rx_token[tid] = dialog_token; in ___ieee80211_start_rx_ba_session()
416 ieee80211_send_addba_resp(sta->sdata, sta->sta.addr, tid, in ___ieee80211_start_rx_ba_session()
421 static void __ieee80211_start_rx_ba_session(struct sta_info *sta, in __ieee80211_start_rx_ba_session() argument
427 mutex_lock(&sta->ampdu_mlme.mtx); in __ieee80211_start_rx_ba_session()
428 ___ieee80211_start_rx_ba_session(sta, dialog_token, timeout, in __ieee80211_start_rx_ba_session()
431 mutex_unlock(&sta->ampdu_mlme.mtx); in __ieee80211_start_rx_ba_session()
435 struct sta_info *sta, in ieee80211_process_addba_request() argument
453 __ieee80211_start_rx_ba_session(sta, dialog_token, timeout, in ieee80211_process_addba_request()
463 struct sta_info *sta; in ieee80211_manage_rx_ba_offl() local
466 sta = sta_info_get_bss(sdata, addr); in ieee80211_manage_rx_ba_offl()
467 if (!sta) in ieee80211_manage_rx_ba_offl()
470 set_bit(tid, sta->ampdu_mlme.tid_rx_manage_offl); in ieee80211_manage_rx_ba_offl()
471 ieee80211_queue_work(&local->hw, &sta->ampdu_mlme.work); in ieee80211_manage_rx_ba_offl()
482 struct sta_info *sta; in ieee80211_rx_ba_timer_expired() local
485 sta = sta_info_get_bss(sdata, addr); in ieee80211_rx_ba_timer_expired()
486 if (!sta) in ieee80211_rx_ba_timer_expired()
489 set_bit(tid, sta->ampdu_mlme.tid_rx_timer_expired); in ieee80211_rx_ba_timer_expired()
490 ieee80211_queue_work(&local->hw, &sta->ampdu_mlme.work); in ieee80211_rx_ba_timer_expired()