Lines Matching full:tid

62 					 const u8 *da, u16 tid,  in ieee80211_send_addba_request()  argument
100 capab |= u16_encode_bits(tid, IEEE80211_ADDBA_PARAM_TID_MASK); in ieee80211_send_addba_request()
109 ieee80211_tx_skb_tid(sdata, skb, tid, -1); 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, -1); 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()
251 "TID %d gone but expected when splicing aggregates from the pending queue\n", 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()
371 ht_dbg(sta->sdata, "Tx BA session stop requested for %pM tid %u\n", in ___ieee80211_stop_tx_ba_session()
372 sta->sta.addr, tid); in ___ieee80211_stop_tx_ba_session()
421 * to the driver on this TID which might confuse it. in ___ieee80211_stop_tx_ba_session()
436 u8 tid = tid_tx->tid; in sta_addba_resp_timer_expired() local
438 /* check if the TID waits for addBA response */ in sta_addba_resp_timer_expired()
441 "timer expired on %pM tid %d not expecting addBA response\n", in sta_addba_resp_timer_expired()
442 sta->sta.addr, tid); in sta_addba_resp_timer_expired()
446 ht_dbg(sta->sdata, "addBA response timer expired on %pM tid %d\n", 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
468 ht_dbg(sdata, "activated addBA response timer on %pM tid %d\n", in ieee80211_send_addba_with_timeout()
469 sta->sta.addr, tid); in ieee80211_send_addba_with_timeout()
472 sta->ampdu_mlme.last_addba_req_time[tid] = jiffies; in ieee80211_send_addba_with_timeout()
473 sta->ampdu_mlme.addba_req_num[tid]++; in ieee80211_send_addba_with_timeout()
489 ieee80211_send_addba_request(sdata, sta->sta.addr, tid, in ieee80211_send_addba_with_timeout()
496 void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) in ieee80211_tx_ba_session_handle_start() argument
504 .tid = tid, in ieee80211_tx_ba_session_handle_start()
511 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_tx_ba_session_handle_start()
523 * packets have been flushed out and no packets for this TID in ieee80211_tx_ba_session_handle_start()
528 params.ssn = sta->tid_seq[tid] >> 4; in ieee80211_tx_ba_session_handle_start()
542 "BA request denied - HW unavailable for %pM tid %d\n", in ieee80211_tx_ba_session_handle_start()
543 sta->sta.addr, tid); in ieee80211_tx_ba_session_handle_start()
545 ieee80211_agg_splice_packets(sdata, tid_tx, tid); in ieee80211_tx_ba_session_handle_start()
546 ieee80211_assign_tid_tx(sta, tid, NULL); in ieee80211_tx_ba_session_handle_start()
547 ieee80211_agg_splice_finish(sdata, tid); in ieee80211_tx_ba_session_handle_start()
550 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_tx_ba_session_handle_start()
560 u16 tid) in ieee80211_refresh_tx_agg_session_timer() argument
565 if (WARN_ON_ONCE(tid >= IEEE80211_NUM_TIDS)) in ieee80211_refresh_tx_agg_session_timer()
568 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_refresh_tx_agg_session_timer()
584 u8 tid = tid_tx->tid; in sta_tx_agg_session_timer_expired() local
597 ht_dbg(sta->sdata, "tx session timer expired on %pM tid %d\n", in sta_tx_agg_session_timer_expired()
598 sta->sta.addr, tid); in sta_tx_agg_session_timer_expired()
600 ieee80211_stop_tx_ba_session(&sta->sta, tid); in sta_tx_agg_session_timer_expired()
603 int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, in ieee80211_start_tx_ba_session() argument
612 trace_api_start_tx_ba_session(pubsta, tid); in ieee80211_start_tx_ba_session()
614 if (WARN(sta->reserved_tid == tid, in ieee80211_start_tx_ba_session()
615 "Requested to start BA session on reserved tid=%d", tid)) in ieee80211_start_tx_ba_session()
627 if ((tid >= IEEE80211_NUM_TIDS) || in ieee80211_start_tx_ba_session()
632 if (WARN_ON(tid >= IEEE80211_FIRST_TSPEC_TSID)) in ieee80211_start_tx_ba_session()
635 ht_dbg(sdata, "Open BA session requested for %pM tid %u\n", in ieee80211_start_tx_ba_session()
636 pubsta->addr, tid); in ieee80211_start_tx_ba_session()
647 "BA sessions blocked - Denying BA session request %pM tid %d\n", in ieee80211_start_tx_ba_session()
648 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
655 "MFP STA not authorized - deny BA session request %pM tid %d\n", in ieee80211_start_tx_ba_session()
656 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
683 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_MAX_RETRIES) { in ieee80211_start_tx_ba_session()
693 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES && in ieee80211_start_tx_ba_session()
694 time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] + in ieee80211_start_tx_ba_session()
697 "BA request denied - %d failed requests on %pM tid %u\n", in ieee80211_start_tx_ba_session()
698 sta->ampdu_mlme.addba_req_num[tid], sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
703 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_start_tx_ba_session()
704 /* check if the TID is not in aggregation flow already */ in ieee80211_start_tx_ba_session()
705 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { in ieee80211_start_tx_ba_session()
707 "BA request denied - session is not idle on %pM tid %u\n", in ieee80211_start_tx_ba_session()
708 sta->sta.addr, tid); in ieee80211_start_tx_ba_session()
725 tid_tx->tid = tid; in ieee80211_start_tx_ba_session()
742 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx; in ieee80211_start_tx_ba_session()
754 struct sta_info *sta, u16 tid) in ieee80211_agg_tx_operational() argument
760 .tid = tid, in ieee80211_agg_tx_operational()
767 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_agg_tx_operational()
771 ht_dbg(sta->sdata, "Aggregation is on for %pM tid %d\n", in ieee80211_agg_tx_operational()
772 sta->sta.addr, tid); in ieee80211_agg_tx_operational()
782 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_agg_tx_operational()
789 ieee80211_agg_splice_finish(sta->sdata, tid); in ieee80211_agg_tx_operational()
793 ieee80211_agg_start_txq(sta, tid, true); in ieee80211_agg_tx_operational()
796 void ieee80211_start_tx_ba_cb(struct sta_info *sta, int tid, in ieee80211_start_tx_ba_cb() argument
818 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_start_tx_ba_cb()
823 const u8 *ra, u16 tid, struct sta_info **sta) in ieee80211_lookup_tid_tx() argument
827 if (tid >= IEEE80211_NUM_TIDS) { in ieee80211_lookup_tid_tx()
828 ht_dbg(sdata, "Bad TID value: tid = %d (>= %d)\n", in ieee80211_lookup_tid_tx()
829 tid, IEEE80211_NUM_TIDS); in ieee80211_lookup_tid_tx()
839 tid_tx = rcu_dereference((*sta)->ampdu_mlme.tid_tx[tid]); in ieee80211_lookup_tid_tx()
848 const u8 *ra, u16 tid) in ieee80211_start_tx_ba_cb_irqsafe() argument
855 trace_api_start_tx_ba_cb(sdata, ra, tid); in ieee80211_start_tx_ba_cb_irqsafe()
858 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_start_tx_ba_cb_irqsafe()
869 int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, in __ieee80211_stop_tx_ba_session() argument
876 ret = ___ieee80211_stop_tx_ba_session(sta, tid, reason); in __ieee80211_stop_tx_ba_session()
883 int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid) in ieee80211_stop_tx_ba_session() argument
891 trace_api_stop_tx_ba_session(pubsta, tid); in ieee80211_stop_tx_ba_session()
896 if (tid >= IEEE80211_NUM_TIDS) in ieee80211_stop_tx_ba_session()
900 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_stop_tx_ba_session()
907 WARN(sta->reserved_tid == tid, in ieee80211_stop_tx_ba_session()
908 "Requested to stop BA session on reserved tid=%d", tid); in ieee80211_stop_tx_ba_session()
925 void ieee80211_stop_tx_ba_cb(struct sta_info *sta, int tid, in ieee80211_stop_tx_ba_cb() argument
932 ht_dbg(sdata, "Stopping Tx BA session for %pM tid %d\n", in ieee80211_stop_tx_ba_cb()
933 sta->sta.addr, tid); in ieee80211_stop_tx_ba_cb()
939 "unexpected callback to A-MPDU stop for %pM tid %d\n", in ieee80211_stop_tx_ba_cb()
940 sta->sta.addr, tid); in ieee80211_stop_tx_ba_cb()
947 ieee80211_remove_tid_tx(sta, tid); in ieee80211_stop_tx_ba_cb()
954 ieee80211_agg_start_txq(sta, tid, false); in ieee80211_stop_tx_ba_cb()
957 ieee80211_send_delba(sdata, sta->sta.addr, tid, in ieee80211_stop_tx_ba_cb()
962 const u8 *ra, u16 tid) in ieee80211_stop_tx_ba_cb_irqsafe() argument
969 trace_api_stop_tx_ba_cb(sdata, ra, tid); in ieee80211_stop_tx_ba_cb_irqsafe()
972 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_stop_tx_ba_cb_irqsafe()
991 u16 capab, tid, buf_size; in ieee80211_process_addba_resp() local
996 tid = u16_get_bits(capab, IEEE80211_ADDBA_PARAM_TID_MASK); in ieee80211_process_addba_resp()
1000 txq = sta->sta.txq[tid]; in ieee80211_process_addba_resp()
1006 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_process_addba_resp()
1011 ht_dbg(sta->sdata, "wrong addBA response token, %pM tid %d\n", in ieee80211_process_addba_resp()
1012 sta->sta.addr, tid); in ieee80211_process_addba_resp()
1018 ht_dbg(sta->sdata, "switched off addBA timer for %pM tid %d\n", in ieee80211_process_addba_resp()
1019 sta->sta.addr, tid); in ieee80211_process_addba_resp()
1029 "got addBA resp for %pM tid %d but we already gave up\n", in ieee80211_process_addba_resp()
1030 sta->sta.addr, tid); in ieee80211_process_addba_resp()
1052 ieee80211_agg_tx_operational(local, sta, tid); in ieee80211_process_addba_resp()
1054 sta->ampdu_mlme.addba_req_num[tid] = 0; in ieee80211_process_addba_resp()
1066 ___ieee80211_stop_tx_ba_session(sta, tid, AGG_STOP_DECLINED); in ieee80211_process_addba_resp()