Lines Matching refs:tid
62 const u8 *da, u16 tid, in ieee80211_send_addba_request() argument
100 capab |= (u16)(tid << 2); /* bit 5:2 TID number */ in ieee80211_send_addba_request()
109 ieee80211_tx_skb_tid(sdata, skb, tid); in ieee80211_send_addba_request()
112 void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn) in ieee80211_send_bar() argument
132 bar_control |= (u16)(tid << IEEE80211_BAR_CTRL_TID_INFO_SHIFT); in ieee80211_send_bar()
138 ieee80211_tx_skb_tid(sdata, skb, tid); in ieee80211_send_bar()
142 void ieee80211_assign_tid_tx(struct sta_info *sta, int tid, in ieee80211_assign_tid_tx() argument
147 rcu_assign_pointer(sta->ampdu_mlme.tid_tx[tid], tid_tx); in ieee80211_assign_tid_tx()
162 ieee80211_stop_queue_agg(struct ieee80211_sub_if_data *sdata, int tid) in __acquires()
164 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __acquires()
177 ieee80211_wake_queue_agg(struct ieee80211_sub_if_data *sdata, int tid) in __releases()
179 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __releases()
190 ieee80211_agg_stop_txq(struct sta_info *sta, int tid) in ieee80211_agg_stop_txq() argument
192 struct ieee80211_txq *txq = sta->sta.txq[tid]; in ieee80211_agg_stop_txq()
211 ieee80211_agg_start_txq(struct sta_info *sta, int tid, bool enable) in ieee80211_agg_start_txq() argument
213 struct ieee80211_txq *txq = sta->sta.txq[tid]; in ieee80211_agg_start_txq()
242 struct tid_ampdu_tx *tid_tx, u16 tid) in __acquires()
245 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __acquires()
248 ieee80211_stop_queue_agg(sdata, tid); in __acquires()
252 tid)) in __acquires()
265 ieee80211_agg_splice_finish(struct ieee80211_sub_if_data *sdata, u16 tid) in __releases()
267 ieee80211_wake_queue_agg(sdata, tid); in __releases()
270 static void ieee80211_remove_tid_tx(struct sta_info *sta, int tid) in ieee80211_remove_tid_tx() argument
277 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_remove_tid_tx()
289 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_remove_tid_tx()
292 ieee80211_assign_tid_tx(sta, tid, NULL); in ieee80211_remove_tid_tx()
294 ieee80211_agg_splice_finish(sta->sdata, tid); in ieee80211_remove_tid_tx()
299 int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, in ___ieee80211_stop_tx_ba_session() argument
306 .tid = tid, in ___ieee80211_stop_tx_ba_session()
333 tid_tx = sta->ampdu_mlme.tid_start_tx[tid]; in ___ieee80211_stop_tx_ba_session()
335 sta->ampdu_mlme.tid_start_tx[tid] = NULL; in ___ieee80211_stop_tx_ba_session()
337 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ___ieee80211_stop_tx_ba_session()
359 ieee80211_assign_tid_tx(sta, tid, NULL); in ___ieee80211_stop_tx_ba_session()
367 ieee80211_agg_stop_txq(sta, tid); in ___ieee80211_stop_tx_ba_session()
372 sta->sta.addr, tid); in ___ieee80211_stop_tx_ba_session()
436 u8 tid = tid_tx->tid; in sta_addba_resp_timer_expired() local
442 sta->sta.addr, tid); in sta_addba_resp_timer_expired()
447 sta->sta.addr, tid); in sta_addba_resp_timer_expired()
449 ieee80211_stop_tx_ba_session(&sta->sta, tid); in sta_addba_resp_timer_expired()
457 u8 tid = tid_tx->tid; in ieee80211_send_addba_with_timeout() local
463 sta->sta.addr, tid); in ieee80211_send_addba_with_timeout()
466 sta->ampdu_mlme.last_addba_req_time[tid] = jiffies; in ieee80211_send_addba_with_timeout()
467 sta->ampdu_mlme.addba_req_num[tid]++; in ieee80211_send_addba_with_timeout()
483 ieee80211_send_addba_request(sdata, sta->sta.addr, tid, in ieee80211_send_addba_with_timeout()
490 void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) in ieee80211_tx_ba_session_handle_start() argument
498 .tid = tid, in ieee80211_tx_ba_session_handle_start()
505 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_tx_ba_session_handle_start()
514 ieee80211_agg_stop_txq(sta, tid); in ieee80211_tx_ba_session_handle_start()
524 params.ssn = sta->tid_seq[tid] >> 4; in ieee80211_tx_ba_session_handle_start()
539 sta->sta.addr, tid); in ieee80211_tx_ba_session_handle_start()
541 ieee80211_agg_splice_packets(sdata, tid_tx, tid); in ieee80211_tx_ba_session_handle_start()
542 ieee80211_assign_tid_tx(sta, tid, NULL); in ieee80211_tx_ba_session_handle_start()
543 ieee80211_agg_splice_finish(sdata, tid); in ieee80211_tx_ba_session_handle_start()
546 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_tx_ba_session_handle_start()
563 u8 tid = tid_tx->tid; in sta_tx_agg_session_timer_expired() local
577 sta->sta.addr, tid); in sta_tx_agg_session_timer_expired()
579 ieee80211_stop_tx_ba_session(&sta->sta, tid); in sta_tx_agg_session_timer_expired()
582 int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, in ieee80211_start_tx_ba_session() argument
591 trace_api_start_tx_ba_session(pubsta, tid); in ieee80211_start_tx_ba_session()
593 if (WARN(sta->reserved_tid == tid, in ieee80211_start_tx_ba_session()
594 "Requested to start BA session on reserved tid=%d", tid)) in ieee80211_start_tx_ba_session()
604 if ((tid >= IEEE80211_NUM_TIDS) || in ieee80211_start_tx_ba_session()
609 if (WARN_ON(tid >= IEEE80211_FIRST_TSPEC_TSID)) in ieee80211_start_tx_ba_session()
613 pubsta->addr, tid); in ieee80211_start_tx_ba_session()
625 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
633 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
660 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_MAX_RETRIES) { in ieee80211_start_tx_ba_session()
670 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES && in ieee80211_start_tx_ba_session()
671 time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] + in ieee80211_start_tx_ba_session()
675 sta->ampdu_mlme.addba_req_num[tid], sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
680 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_start_tx_ba_session()
682 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { in ieee80211_start_tx_ba_session()
685 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
702 tid_tx->tid = tid; in ieee80211_start_tx_ba_session()
719 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx; in ieee80211_start_tx_ba_session()
731 struct sta_info *sta, u16 tid) in ieee80211_agg_tx_operational() argument
737 .tid = tid, in ieee80211_agg_tx_operational()
744 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_agg_tx_operational()
749 sta->sta.addr, tid); in ieee80211_agg_tx_operational()
759 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_agg_tx_operational()
766 ieee80211_agg_splice_finish(sta->sdata, tid); in ieee80211_agg_tx_operational()
770 ieee80211_agg_start_txq(sta, tid, true); in ieee80211_agg_tx_operational()
773 void ieee80211_start_tx_ba_cb(struct sta_info *sta, int tid, in ieee80211_start_tx_ba_cb() argument
789 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_start_tx_ba_cb()
794 const u8 *ra, u16 tid, struct sta_info **sta) in ieee80211_lookup_tid_tx() argument
798 if (tid >= IEEE80211_NUM_TIDS) { in ieee80211_lookup_tid_tx()
800 tid, IEEE80211_NUM_TIDS); in ieee80211_lookup_tid_tx()
810 tid_tx = rcu_dereference((*sta)->ampdu_mlme.tid_tx[tid]); in ieee80211_lookup_tid_tx()
819 const u8 *ra, u16 tid) in ieee80211_start_tx_ba_cb_irqsafe() argument
826 trace_api_start_tx_ba_cb(sdata, ra, tid); in ieee80211_start_tx_ba_cb_irqsafe()
829 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_start_tx_ba_cb_irqsafe()
840 int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, in __ieee80211_stop_tx_ba_session() argument
847 ret = ___ieee80211_stop_tx_ba_session(sta, tid, reason); in __ieee80211_stop_tx_ba_session()
854 int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid) in ieee80211_stop_tx_ba_session() argument
862 trace_api_stop_tx_ba_session(pubsta, tid); in ieee80211_stop_tx_ba_session()
867 if (tid >= IEEE80211_NUM_TIDS) in ieee80211_stop_tx_ba_session()
871 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_stop_tx_ba_session()
878 WARN(sta->reserved_tid == tid, in ieee80211_stop_tx_ba_session()
879 "Requested to stop BA session on reserved tid=%d", tid); in ieee80211_stop_tx_ba_session()
896 void ieee80211_stop_tx_ba_cb(struct sta_info *sta, int tid, in ieee80211_stop_tx_ba_cb() argument
904 sta->sta.addr, tid); in ieee80211_stop_tx_ba_cb()
911 sta->sta.addr, tid); in ieee80211_stop_tx_ba_cb()
918 ieee80211_remove_tid_tx(sta, tid); in ieee80211_stop_tx_ba_cb()
925 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_stop_tx_ba_cb()
928 ieee80211_send_delba(sdata, sta->sta.addr, tid, in ieee80211_stop_tx_ba_cb()
933 const u8 *ra, u16 tid) in ieee80211_stop_tx_ba_cb_irqsafe() argument
940 trace_api_stop_tx_ba_cb(sdata, ra, tid); in ieee80211_stop_tx_ba_cb_irqsafe()
943 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_stop_tx_ba_cb_irqsafe()
962 u16 capab, tid, buf_size; in ieee80211_process_addba_resp() local
967 tid = (capab & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2; in ieee80211_process_addba_resp()
971 txq = sta->sta.txq[tid]; in ieee80211_process_addba_resp()
977 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_process_addba_resp()
983 sta->sta.addr, tid); in ieee80211_process_addba_resp()
990 sta->sta.addr, tid); in ieee80211_process_addba_resp()
1001 sta->sta.addr, tid); in ieee80211_process_addba_resp()
1023 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_process_addba_resp()
1025 sta->ampdu_mlme.addba_req_num[tid] = 0; in ieee80211_process_addba_resp()
1037 ___ieee80211_stop_tx_ba_session(sta, tid, AGG_STOP_DECLINED); in ieee80211_process_addba_resp()