Lines Matching refs:tid
63 const u8 *da, u16 tid, in ieee80211_send_addba_request() argument
102 capab |= (u16)(tid << 2); /* bit 5:2 TID number */ in ieee80211_send_addba_request()
114 void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn) in ieee80211_send_bar() argument
135 bar_control |= (u16)(tid << IEEE80211_BAR_CTRL_TID_INFO_SHIFT); in ieee80211_send_bar()
141 ieee80211_tx_skb_tid(sdata, skb, tid); in ieee80211_send_bar()
145 void ieee80211_assign_tid_tx(struct sta_info *sta, int tid, in ieee80211_assign_tid_tx() argument
150 rcu_assign_pointer(sta->ampdu_mlme.tid_tx[tid], tid_tx); in ieee80211_assign_tid_tx()
165 ieee80211_stop_queue_agg(struct ieee80211_sub_if_data *sdata, int tid) in __acquires()
167 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __acquires()
180 ieee80211_wake_queue_agg(struct ieee80211_sub_if_data *sdata, int tid) in __releases()
182 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __releases()
193 ieee80211_agg_stop_txq(struct sta_info *sta, int tid) in ieee80211_agg_stop_txq() argument
195 struct ieee80211_txq *txq = sta->sta.txq[tid]; in ieee80211_agg_stop_txq()
210 ieee80211_agg_start_txq(struct sta_info *sta, int tid, bool enable) in ieee80211_agg_start_txq() argument
212 struct ieee80211_txq *txq = sta->sta.txq[tid]; in ieee80211_agg_start_txq()
235 struct tid_ampdu_tx *tid_tx, u16 tid) in __acquires()
238 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __acquires()
241 ieee80211_stop_queue_agg(sdata, tid); in __acquires()
245 tid)) in __acquires()
258 ieee80211_agg_splice_finish(struct ieee80211_sub_if_data *sdata, u16 tid) in __releases()
260 ieee80211_wake_queue_agg(sdata, tid); in __releases()
263 static void ieee80211_remove_tid_tx(struct sta_info *sta, int tid) in ieee80211_remove_tid_tx() argument
270 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_remove_tid_tx()
282 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_remove_tid_tx()
285 ieee80211_assign_tid_tx(sta, tid, NULL); in ieee80211_remove_tid_tx()
287 ieee80211_agg_splice_finish(sta->sdata, tid); in ieee80211_remove_tid_tx()
288 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_remove_tid_tx()
293 int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, in ___ieee80211_stop_tx_ba_session() argument
319 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ___ieee80211_stop_tx_ba_session()
335 &sta->sta, tid, NULL, 0, false); in ___ieee80211_stop_tx_ba_session()
342 ieee80211_assign_tid_tx(sta, tid, NULL); in ___ieee80211_stop_tx_ba_session()
353 sta->sta.addr, tid); in ___ieee80211_stop_tx_ba_session()
385 &sta->sta, tid, NULL, 0, false); in ___ieee80211_stop_tx_ba_session()
419 u16 tid = *(u8 *)data; in sta_addba_resp_timer_expired() local
421 struct sta_info, timer_to_tid[tid]); in sta_addba_resp_timer_expired()
426 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in sta_addba_resp_timer_expired()
432 sta->sta.addr, tid); in sta_addba_resp_timer_expired()
437 sta->sta.addr, tid); in sta_addba_resp_timer_expired()
439 ieee80211_stop_tx_ba_session(&sta->sta, tid); in sta_addba_resp_timer_expired()
443 void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) in ieee80211_tx_ba_session_handle_start() argument
451 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_tx_ba_session_handle_start()
460 ieee80211_agg_stop_txq(sta, tid); in ieee80211_tx_ba_session_handle_start()
470 start_seq_num = sta->tid_seq[tid] >> 4; in ieee80211_tx_ba_session_handle_start()
473 &sta->sta, tid, &start_seq_num, 0, false); in ieee80211_tx_ba_session_handle_start()
477 sta->sta.addr, tid); in ieee80211_tx_ba_session_handle_start()
479 ieee80211_agg_splice_packets(sdata, tid_tx, tid); in ieee80211_tx_ba_session_handle_start()
480 ieee80211_assign_tid_tx(sta, tid, NULL); in ieee80211_tx_ba_session_handle_start()
481 ieee80211_agg_splice_finish(sdata, tid); in ieee80211_tx_ba_session_handle_start()
484 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_tx_ba_session_handle_start()
493 sta->sta.addr, tid); in ieee80211_tx_ba_session_handle_start()
496 sta->ampdu_mlme.last_addba_req_time[tid] = jiffies; in ieee80211_tx_ba_session_handle_start()
497 sta->ampdu_mlme.addba_req_num[tid]++; in ieee80211_tx_ba_session_handle_start()
501 ieee80211_send_addba_request(sdata, sta->sta.addr, tid, in ieee80211_tx_ba_session_handle_start()
546 int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, in ieee80211_start_tx_ba_session() argument
555 trace_api_start_tx_ba_session(pubsta, tid); in ieee80211_start_tx_ba_session()
557 if (WARN(sta->reserved_tid == tid, in ieee80211_start_tx_ba_session()
558 "Requested to start BA session on reserved tid=%d", tid)) in ieee80211_start_tx_ba_session()
567 if ((tid >= IEEE80211_NUM_TIDS) || in ieee80211_start_tx_ba_session()
573 pubsta->addr, tid); in ieee80211_start_tx_ba_session()
585 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
612 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_MAX_RETRIES) { in ieee80211_start_tx_ba_session()
622 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES && in ieee80211_start_tx_ba_session()
623 time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] + in ieee80211_start_tx_ba_session()
627 sta->ampdu_mlme.addba_req_num[tid], sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
632 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_start_tx_ba_session()
634 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { in ieee80211_start_tx_ba_session()
637 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
656 tid_tx->addba_resp_timer.data = (unsigned long)&sta->timer_to_tid[tid]; in ieee80211_start_tx_ba_session()
661 tid_tx->session_timer.data = (unsigned long)&sta->timer_to_tid[tid]; in ieee80211_start_tx_ba_session()
672 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx; in ieee80211_start_tx_ba_session()
684 struct sta_info *sta, u16 tid) in ieee80211_agg_tx_operational() argument
690 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_agg_tx_operational()
693 sta->sta.addr, tid); in ieee80211_agg_tx_operational()
697 &sta->sta, tid, NULL, tid_tx->buf_size, in ieee80211_agg_tx_operational()
706 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_agg_tx_operational()
713 ieee80211_agg_splice_finish(sta->sdata, tid); in ieee80211_agg_tx_operational()
717 ieee80211_agg_start_txq(sta, tid, true); in ieee80211_agg_tx_operational()
720 void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid) in ieee80211_start_tx_ba_cb() argument
727 trace_api_start_tx_ba_cb(sdata, ra, tid); in ieee80211_start_tx_ba_cb()
729 if (tid >= IEEE80211_NUM_TIDS) { in ieee80211_start_tx_ba_cb()
731 tid, IEEE80211_NUM_TIDS); in ieee80211_start_tx_ba_cb()
744 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_start_tx_ba_cb()
755 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_start_tx_ba_cb()
763 const u8 *ra, u16 tid) in ieee80211_start_tx_ba_cb_irqsafe() argument
775 ra_tid->tid = tid; in ieee80211_start_tx_ba_cb_irqsafe()
783 int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, in __ieee80211_stop_tx_ba_session() argument
790 ret = ___ieee80211_stop_tx_ba_session(sta, tid, reason); in __ieee80211_stop_tx_ba_session()
797 int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid) in ieee80211_stop_tx_ba_session() argument
805 trace_api_stop_tx_ba_session(pubsta, tid); in ieee80211_stop_tx_ba_session()
810 if (tid >= IEEE80211_NUM_TIDS) in ieee80211_stop_tx_ba_session()
814 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_stop_tx_ba_session()
821 WARN(sta->reserved_tid == tid, in ieee80211_stop_tx_ba_session()
822 "Requested to stop BA session on reserved tid=%d", tid); in ieee80211_stop_tx_ba_session()
839 void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid) in ieee80211_stop_tx_ba_cb() argument
847 trace_api_stop_tx_ba_cb(sdata, ra, tid); in ieee80211_stop_tx_ba_cb()
849 if (tid >= IEEE80211_NUM_TIDS) { in ieee80211_stop_tx_ba_cb()
851 tid, IEEE80211_NUM_TIDS); in ieee80211_stop_tx_ba_cb()
855 ht_dbg(sdata, "Stopping Tx BA session for %pM tid %d\n", ra, tid); in ieee80211_stop_tx_ba_cb()
867 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_stop_tx_ba_cb()
872 sta->sta.addr, tid); in ieee80211_stop_tx_ba_cb()
879 ieee80211_remove_tid_tx(sta, tid); in ieee80211_stop_tx_ba_cb()
885 ieee80211_send_delba(sdata, ra, tid, in ieee80211_stop_tx_ba_cb()
894 const u8 *ra, u16 tid) in ieee80211_stop_tx_ba_cb_irqsafe() argument
906 ra_tid->tid = tid; in ieee80211_stop_tx_ba_cb_irqsafe()
921 u16 capab, tid; in ieee80211_process_addba_resp() local
927 tid = (capab & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2; in ieee80211_process_addba_resp()
933 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_process_addba_resp()
939 sta->sta.addr, tid); in ieee80211_process_addba_resp()
946 sta->sta.addr, tid); in ieee80211_process_addba_resp()
957 sta->sta.addr, tid); in ieee80211_process_addba_resp()
979 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_process_addba_resp()
981 sta->ampdu_mlme.addba_req_num[tid] = 0; in ieee80211_process_addba_resp()
990 ___ieee80211_stop_tx_ba_session(sta, tid, AGG_STOP_DECLINED); in ieee80211_process_addba_resp()