Lines Matching refs:sta
60 void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, in ___ieee80211_stop_rx_ba_session() argument
63 struct ieee80211_local *local = sta->local; in ___ieee80211_stop_rx_ba_session()
66 .sta = &sta->sta, in ___ieee80211_stop_rx_ba_session()
74 lockdep_assert_held(&sta->ampdu_mlme.mtx); in ___ieee80211_stop_rx_ba_session()
76 tid_rx = rcu_dereference_protected(sta->ampdu_mlme.tid_rx[tid], in ___ieee80211_stop_rx_ba_session()
77 lockdep_is_held(&sta->ampdu_mlme.mtx)); in ___ieee80211_stop_rx_ba_session()
79 if (!test_bit(tid, sta->ampdu_mlme.agg_session_valid)) in ___ieee80211_stop_rx_ba_session()
82 RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], NULL); in ___ieee80211_stop_rx_ba_session()
83 __clear_bit(tid, sta->ampdu_mlme.agg_session_valid); in ___ieee80211_stop_rx_ba_session()
85 ht_dbg(sta->sdata, in ___ieee80211_stop_rx_ba_session()
87 sta->sta.addr, tid, in ___ieee80211_stop_rx_ba_session()
91 if (drv_ampdu_action(local, sta->sdata, ¶ms)) in ___ieee80211_stop_rx_ba_session()
92 sdata_info(sta->sdata, in ___ieee80211_stop_rx_ba_session()
94 sta->sta.addr, tid); in ___ieee80211_stop_rx_ba_session()
98 ieee80211_send_delba(sta->sdata, sta->sta.addr, in ___ieee80211_stop_rx_ba_session()
119 void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, in __ieee80211_stop_rx_ba_session() argument
122 mutex_lock(&sta->ampdu_mlme.mtx); in __ieee80211_stop_rx_ba_session()
123 ___ieee80211_stop_rx_ba_session(sta, tid, initiator, reason, tx); in __ieee80211_stop_rx_ba_session()
124 mutex_unlock(&sta->ampdu_mlme.mtx); in __ieee80211_stop_rx_ba_session()
131 struct sta_info *sta; in ieee80211_stop_rx_ba_session() local
135 sta = sta_info_get_bss(sdata, addr); in ieee80211_stop_rx_ba_session()
136 if (!sta) { in ieee80211_stop_rx_ba_session()
143 set_bit(i, sta->ampdu_mlme.tid_rx_stop_requested); in ieee80211_stop_rx_ba_session()
145 ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work); in ieee80211_stop_rx_ba_session()
162 struct sta_info *sta = container_of(timer_to_id, struct sta_info, in sta_rx_agg_session_timer_expired() local
168 tid_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[*ptid]); in sta_rx_agg_session_timer_expired()
182 ht_dbg(sta->sdata, "RX session timer expired on %pM tid %d\n", in sta_rx_agg_session_timer_expired()
183 sta->sta.addr, (u16)*ptid); in sta_rx_agg_session_timer_expired()
185 set_bit(*ptid, sta->ampdu_mlme.tid_rx_timer_expired); in sta_rx_agg_session_timer_expired()
186 ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work); in sta_rx_agg_session_timer_expired()
193 struct sta_info *sta = container_of(timer_to_id, struct sta_info, in sta_rx_agg_reorder_timer_expired() local
197 ieee80211_release_reorder_timeout(sta, *ptid); in sta_rx_agg_reorder_timer_expired()
249 void __ieee80211_start_rx_ba_session(struct sta_info *sta, in __ieee80211_start_rx_ba_session() argument
254 struct ieee80211_local *local = sta->sdata->local; in __ieee80211_start_rx_ba_session()
257 .sta = &sta->sta, in __ieee80211_start_rx_ba_session()
268 ht_dbg(sta->sdata, in __ieee80211_start_rx_ba_session()
270 sta->sta.addr, tid); in __ieee80211_start_rx_ba_session()
274 if (!sta->sta.ht_cap.ht_supported) { in __ieee80211_start_rx_ba_session()
275 ht_dbg(sta->sdata, in __ieee80211_start_rx_ba_session()
277 sta->sta.addr, tid); in __ieee80211_start_rx_ba_session()
282 if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { in __ieee80211_start_rx_ba_session()
283 ht_dbg(sta->sdata, in __ieee80211_start_rx_ba_session()
285 sta->sta.addr, tid); in __ieee80211_start_rx_ba_session()
294 (!(sta->sta.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA))) || in __ieee80211_start_rx_ba_session()
297 ht_dbg_ratelimited(sta->sdata, in __ieee80211_start_rx_ba_session()
299 sta->sta.addr, tid, ba_policy, buf_size); in __ieee80211_start_rx_ba_session()
307 if (buf_size > sta->sta.max_rx_aggregation_subframes) in __ieee80211_start_rx_ba_session()
308 buf_size = sta->sta.max_rx_aggregation_subframes; in __ieee80211_start_rx_ba_session()
311 ht_dbg(sta->sdata, "AddBA Req buf_size=%d for %pM\n", in __ieee80211_start_rx_ba_session()
312 buf_size, sta->sta.addr); in __ieee80211_start_rx_ba_session()
315 mutex_lock(&sta->ampdu_mlme.mtx); in __ieee80211_start_rx_ba_session()
317 if (test_bit(tid, sta->ampdu_mlme.agg_session_valid)) { in __ieee80211_start_rx_ba_session()
318 if (sta->ampdu_mlme.tid_rx_token[tid] == dialog_token) { in __ieee80211_start_rx_ba_session()
319 ht_dbg_ratelimited(sta->sdata, in __ieee80211_start_rx_ba_session()
321 sta->sta.addr, tid); in __ieee80211_start_rx_ba_session()
326 ieee80211_send_addba_resp(sta->sdata, sta->sta.addr, in __ieee80211_start_rx_ba_session()
332 ht_dbg_ratelimited(sta->sdata, in __ieee80211_start_rx_ba_session()
334 sta->sta.addr, tid); in __ieee80211_start_rx_ba_session()
337 ___ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT, in __ieee80211_start_rx_ba_session()
343 ret = drv_ampdu_action(local, sta->sdata, ¶ms); in __ieee80211_start_rx_ba_session()
344 ht_dbg(sta->sdata, in __ieee80211_start_rx_ba_session()
346 sta->sta.addr, tid, ret); in __ieee80211_start_rx_ba_session()
361 tid_agg_rx->session_timer.data = (unsigned long)&sta->timer_to_tid[tid]; in __ieee80211_start_rx_ba_session()
366 tid_agg_rx->reorder_timer.data = (unsigned long)&sta->timer_to_tid[tid]; in __ieee80211_start_rx_ba_session()
384 ret = drv_ampdu_action(local, sta->sdata, ¶ms); in __ieee80211_start_rx_ba_session()
385 ht_dbg(sta->sdata, "Rx A-MPDU request on %pM tid %d result %d\n", in __ieee80211_start_rx_ba_session()
386 sta->sta.addr, tid, ret); in __ieee80211_start_rx_ba_session()
406 rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx); in __ieee80211_start_rx_ba_session()
415 __set_bit(tid, sta->ampdu_mlme.agg_session_valid); in __ieee80211_start_rx_ba_session()
416 __clear_bit(tid, sta->ampdu_mlme.unexpected_agg); in __ieee80211_start_rx_ba_session()
417 sta->ampdu_mlme.tid_rx_token[tid] = dialog_token; in __ieee80211_start_rx_ba_session()
419 mutex_unlock(&sta->ampdu_mlme.mtx); in __ieee80211_start_rx_ba_session()
423 ieee80211_send_addba_resp(sta->sdata, sta->sta.addr, tid, in __ieee80211_start_rx_ba_session()
429 struct sta_info *sta, in ieee80211_process_addba_request() argument
447 __ieee80211_start_rx_ba_session(sta, dialog_token, timeout, in ieee80211_process_addba_request()