Lines Matching refs:tid
62 const u8 *da, u16 tid, in ieee80211_send_addba_request() argument
87 capab |= u16_encode_bits(tid, IEEE80211_ADDBA_PARAM_TID_MASK); in ieee80211_send_addba_request()
96 ieee80211_tx_skb_tid(sdata, skb, tid, -1); in ieee80211_send_addba_request()
99 void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn) in ieee80211_send_bar() argument
119 bar_control |= (u16)(tid << IEEE80211_BAR_CTRL_TID_INFO_SHIFT); in ieee80211_send_bar()
125 ieee80211_tx_skb_tid(sdata, skb, tid, -1); in ieee80211_send_bar()
129 void ieee80211_assign_tid_tx(struct sta_info *sta, int tid, in ieee80211_assign_tid_tx() argument
134 rcu_assign_pointer(sta->ampdu_mlme.tid_tx[tid], tid_tx); in ieee80211_assign_tid_tx()
149 ieee80211_stop_queue_agg(struct ieee80211_sub_if_data *sdata, int tid) in __acquires()
151 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __acquires()
164 ieee80211_wake_queue_agg(struct ieee80211_sub_if_data *sdata, int tid) in __releases()
166 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __releases()
177 ieee80211_agg_stop_txq(struct sta_info *sta, int tid) in ieee80211_agg_stop_txq() argument
179 struct ieee80211_txq *txq = sta->sta.txq[tid]; in ieee80211_agg_stop_txq()
198 ieee80211_agg_start_txq(struct sta_info *sta, int tid, bool enable) in ieee80211_agg_start_txq() argument
200 struct ieee80211_txq *txq = sta->sta.txq[tid]; in ieee80211_agg_start_txq()
229 struct tid_ampdu_tx *tid_tx, u16 tid) in __acquires()
232 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)]; in __acquires()
235 ieee80211_stop_queue_agg(sdata, tid); in __acquires()
239 tid)) in __acquires()
252 ieee80211_agg_splice_finish(struct ieee80211_sub_if_data *sdata, u16 tid) in __releases()
254 ieee80211_wake_queue_agg(sdata, tid); in __releases()
257 static void ieee80211_remove_tid_tx(struct sta_info *sta, int tid) in ieee80211_remove_tid_tx() argument
264 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_remove_tid_tx()
276 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_remove_tid_tx()
279 ieee80211_assign_tid_tx(sta, tid, NULL); in ieee80211_remove_tid_tx()
281 ieee80211_agg_splice_finish(sta->sdata, tid); in ieee80211_remove_tid_tx()
286 int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, in __ieee80211_stop_tx_ba_session() argument
293 .tid = tid, in __ieee80211_stop_tx_ba_session()
320 tid_tx = sta->ampdu_mlme.tid_start_tx[tid]; in __ieee80211_stop_tx_ba_session()
322 sta->ampdu_mlme.tid_start_tx[tid] = NULL; in __ieee80211_stop_tx_ba_session()
324 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in __ieee80211_stop_tx_ba_session()
346 ieee80211_assign_tid_tx(sta, tid, NULL); in __ieee80211_stop_tx_ba_session()
354 ieee80211_agg_stop_txq(sta, tid); in __ieee80211_stop_tx_ba_session()
359 sta->sta.addr, tid); in __ieee80211_stop_tx_ba_session()
423 u8 tid = tid_tx->tid; in sta_addba_resp_timer_expired() local
429 sta->sta.addr, tid); in sta_addba_resp_timer_expired()
434 sta->sta.addr, tid); in sta_addba_resp_timer_expired()
436 ieee80211_stop_tx_ba_session(&sta->sta, tid); in sta_addba_resp_timer_expired()
444 u8 tid = tid_tx->tid; in ieee80211_send_addba_with_timeout() local
456 sta->sta.addr, tid); in ieee80211_send_addba_with_timeout()
459 sta->ampdu_mlme.last_addba_req_time[tid] = jiffies; in ieee80211_send_addba_with_timeout()
460 sta->ampdu_mlme.addba_req_num[tid]++; in ieee80211_send_addba_with_timeout()
476 ieee80211_send_addba_request(sdata, sta->sta.addr, tid, in ieee80211_send_addba_with_timeout()
483 void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) in ieee80211_tx_ba_session_handle_start() argument
491 .tid = tid, in ieee80211_tx_ba_session_handle_start()
498 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_tx_ba_session_handle_start()
515 params.ssn = sta->tid_seq[tid] >> 4; in ieee80211_tx_ba_session_handle_start()
530 sta->sta.addr, tid); in ieee80211_tx_ba_session_handle_start()
532 ieee80211_agg_splice_packets(sdata, tid_tx, tid); in ieee80211_tx_ba_session_handle_start()
533 ieee80211_assign_tid_tx(sta, tid, NULL); in ieee80211_tx_ba_session_handle_start()
534 ieee80211_agg_splice_finish(sdata, tid); in ieee80211_tx_ba_session_handle_start()
537 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_tx_ba_session_handle_start()
547 u16 tid) in ieee80211_refresh_tx_agg_session_timer() argument
552 if (WARN_ON_ONCE(tid >= IEEE80211_NUM_TIDS)) in ieee80211_refresh_tx_agg_session_timer()
555 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_refresh_tx_agg_session_timer()
571 u8 tid = tid_tx->tid; in sta_tx_agg_session_timer_expired() local
585 sta->sta.addr, tid); in sta_tx_agg_session_timer_expired()
587 ieee80211_stop_tx_ba_session(&sta->sta, tid); in sta_tx_agg_session_timer_expired()
590 int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, in ieee80211_start_tx_ba_session() argument
599 trace_api_start_tx_ba_session(pubsta, tid); in ieee80211_start_tx_ba_session()
601 if (WARN(sta->reserved_tid == tid, in ieee80211_start_tx_ba_session()
602 "Requested to start BA session on reserved tid=%d", tid)) in ieee80211_start_tx_ba_session()
614 if ((tid >= IEEE80211_NUM_TIDS) || in ieee80211_start_tx_ba_session()
619 if (WARN_ON(tid >= IEEE80211_FIRST_TSPEC_TSID)) in ieee80211_start_tx_ba_session()
623 pubsta->addr, tid); in ieee80211_start_tx_ba_session()
635 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
643 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
670 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_MAX_RETRIES) { in ieee80211_start_tx_ba_session()
680 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES && in ieee80211_start_tx_ba_session()
681 time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] + in ieee80211_start_tx_ba_session()
685 sta->ampdu_mlme.addba_req_num[tid], sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
690 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_start_tx_ba_session()
692 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { in ieee80211_start_tx_ba_session()
695 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
712 tid_tx->tid = tid; in ieee80211_start_tx_ba_session()
729 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx; in ieee80211_start_tx_ba_session()
741 struct sta_info *sta, u16 tid) in ieee80211_agg_tx_operational() argument
747 .tid = tid, in ieee80211_agg_tx_operational()
754 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_agg_tx_operational()
759 sta->sta.addr, tid); in ieee80211_agg_tx_operational()
769 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_agg_tx_operational()
776 ieee80211_agg_splice_finish(sta->sdata, tid); in ieee80211_agg_tx_operational()
780 ieee80211_agg_start_txq(sta, tid, true); in ieee80211_agg_tx_operational()
783 void ieee80211_start_tx_ba_cb(struct sta_info *sta, int tid, in ieee80211_start_tx_ba_cb() argument
805 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_start_tx_ba_cb()
810 const u8 *ra, u16 tid, struct sta_info **sta) in ieee80211_lookup_tid_tx() argument
814 if (tid >= IEEE80211_NUM_TIDS) { in ieee80211_lookup_tid_tx()
816 tid, IEEE80211_NUM_TIDS); in ieee80211_lookup_tid_tx()
826 tid_tx = rcu_dereference((*sta)->ampdu_mlme.tid_tx[tid]); in ieee80211_lookup_tid_tx()
835 const u8 *ra, u16 tid) in ieee80211_start_tx_ba_cb_irqsafe() argument
842 trace_api_start_tx_ba_cb(sdata, ra, tid); in ieee80211_start_tx_ba_cb_irqsafe()
845 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_start_tx_ba_cb_irqsafe()
856 int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid) in ieee80211_stop_tx_ba_session() argument
864 trace_api_stop_tx_ba_session(pubsta, tid); in ieee80211_stop_tx_ba_session()
869 if (tid >= IEEE80211_NUM_TIDS) in ieee80211_stop_tx_ba_session()
873 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_stop_tx_ba_session()
880 WARN(sta->reserved_tid == tid, in ieee80211_stop_tx_ba_session()
881 "Requested to stop BA session on reserved tid=%d", tid); in ieee80211_stop_tx_ba_session()
898 void ieee80211_stop_tx_ba_cb(struct sta_info *sta, int tid, in ieee80211_stop_tx_ba_cb() argument
906 sta->sta.addr, tid); in ieee80211_stop_tx_ba_cb()
913 sta->sta.addr, tid); in ieee80211_stop_tx_ba_cb()
920 ieee80211_remove_tid_tx(sta, tid); in ieee80211_stop_tx_ba_cb()
927 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_stop_tx_ba_cb()
930 ieee80211_send_delba(sdata, sta->sta.addr, tid, in ieee80211_stop_tx_ba_cb()
935 const u8 *ra, u16 tid) in ieee80211_stop_tx_ba_cb_irqsafe() argument
942 trace_api_stop_tx_ba_cb(sdata, ra, tid); in ieee80211_stop_tx_ba_cb_irqsafe()
945 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_stop_tx_ba_cb_irqsafe()
964 u16 capab, tid, buf_size; in ieee80211_process_addba_resp() local
971 tid = u16_get_bits(capab, IEEE80211_ADDBA_PARAM_TID_MASK); in ieee80211_process_addba_resp()
975 txq = sta->sta.txq[tid]; in ieee80211_process_addba_resp()
979 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_process_addba_resp()
985 sta->sta.addr, tid); in ieee80211_process_addba_resp()
992 sta->sta.addr, tid); in ieee80211_process_addba_resp()
1003 sta->sta.addr, tid); in ieee80211_process_addba_resp()
1025 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_process_addba_resp()
1027 sta->ampdu_mlme.addba_req_num[tid] = 0; in ieee80211_process_addba_resp()
1039 __ieee80211_stop_tx_ba_session(sta, tid, AGG_STOP_DECLINED); in ieee80211_process_addba_resp()