Lines Matching refs:tid
62 const u8 *da, u16 tid,
100 capab |= (u16)(tid << 2); /* bit 5:2 TID number */
109 ieee80211_tx_skb_tid(sdata, skb, tid);
112 void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn)
132 bar_control |= (u16)(tid << IEEE80211_BAR_CTRL_TID_INFO_SHIFT);
138 ieee80211_tx_skb_tid(sdata, skb, tid);
142 void ieee80211_assign_tid_tx(struct sta_info *sta, int tid,
147 rcu_assign_pointer(sta->ampdu_mlme.tid_tx[tid], tid_tx);
162 ieee80211_stop_queue_agg(struct ieee80211_sub_if_data *sdata, int tid)
164 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)];
177 ieee80211_wake_queue_agg(struct ieee80211_sub_if_data *sdata, int tid)
179 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)];
190 ieee80211_agg_stop_txq(struct sta_info *sta, int tid)
192 struct ieee80211_txq *txq = sta->sta.txq[tid];
211 ieee80211_agg_start_txq(struct sta_info *sta, int tid, bool enable)
213 struct ieee80211_txq *txq = sta->sta.txq[tid];
242 struct tid_ampdu_tx *tid_tx, u16 tid)
245 int queue = sdata->vif.hw_queue[ieee80211_ac_from_tid(tid)];
248 ieee80211_stop_queue_agg(sdata, tid);
252 tid))
265 ieee80211_agg_splice_finish(struct ieee80211_sub_if_data *sdata, u16 tid)
267 ieee80211_wake_queue_agg(sdata, tid);
270 static void ieee80211_remove_tid_tx(struct sta_info *sta, int tid)
277 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
289 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid);
292 ieee80211_assign_tid_tx(sta, tid, NULL);
294 ieee80211_agg_splice_finish(sta->sdata, tid);
299 int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
306 .tid = tid,
333 tid_tx = sta->ampdu_mlme.tid_start_tx[tid];
335 sta->ampdu_mlme.tid_start_tx[tid] = NULL;
337 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
359 ieee80211_assign_tid_tx(sta, tid, NULL);
367 ieee80211_agg_stop_txq(sta, tid);
371 ht_dbg(sta->sdata, "Tx BA session stop requested for %pM tid %u\n",
372 sta->sta.addr, tid);
436 u8 tid = tid_tx->tid;
441 "timer expired on %pM tid %d not expecting addBA response\n",
442 sta->sta.addr, tid);
446 ht_dbg(sta->sdata, "addBA response timer expired on %pM tid %d\n",
447 sta->sta.addr, tid);
449 ieee80211_stop_tx_ba_session(&sta->sta, tid);
457 u8 tid = tid_tx->tid;
462 ht_dbg(sdata, "activated addBA response timer on %pM tid %d\n",
463 sta->sta.addr, tid);
466 sta->ampdu_mlme.last_addba_req_time[tid] = jiffies;
467 sta->ampdu_mlme.addba_req_num[tid]++;
483 ieee80211_send_addba_request(sdata, sta->sta.addr, tid,
490 void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid)
498 .tid = tid,
505 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
514 ieee80211_agg_stop_txq(sta, tid);
525 params.ssn = sta->tid_seq[tid] >> 4;
542 "BA request denied - HW unavailable for %pM tid %d\n",
543 sta->sta.addr, tid);
545 ieee80211_agg_splice_packets(sdata, tid_tx, tid);
546 ieee80211_assign_tid_tx(sta, tid, NULL);
547 ieee80211_agg_splice_finish(sdata, tid);
550 ieee80211_agg_start_txq(sta, tid, false);
567 u8 tid = tid_tx->tid;
580 ht_dbg(sta->sdata, "tx session timer expired on %pM tid %d\n",
581 sta->sta.addr, tid);
583 ieee80211_stop_tx_ba_session(&sta->sta, tid);
586 int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
595 trace_api_start_tx_ba_session(pubsta, tid);
597 if (WARN(sta->reserved_tid == tid,
598 "Requested to start BA session on reserved tid=%d", tid))
608 if ((tid >= IEEE80211_NUM_TIDS) ||
613 if (WARN_ON(tid >= IEEE80211_FIRST_TSPEC_TSID))
616 ht_dbg(sdata, "Open BA session requested for %pM tid %u\n",
617 pubsta->addr, tid);
628 "BA sessions blocked - Denying BA session request %pM tid %d\n",
629 sta->sta.addr, tid);
636 "MFP STA not authorized - deny BA session request %pM tid %d\n",
637 sta->sta.addr, tid);
664 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_MAX_RETRIES) {
674 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES &&
675 time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] +
678 "BA request denied - %d failed requests on %pM tid %u\n",
679 sta->ampdu_mlme.addba_req_num[tid], sta->sta.addr, tid);
684 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
686 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) {
688 "BA request denied - session is not idle on %pM tid %u\n",
689 sta->sta.addr, tid);
706 tid_tx->tid = tid;
723 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx;
735 struct sta_info *sta, u16 tid)
741 .tid = tid,
748 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
752 ht_dbg(sta->sdata, "Aggregation is on for %pM tid %d\n",
753 sta->sta.addr, tid);
763 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid);
770 ieee80211_agg_splice_finish(sta->sdata, tid);
774 ieee80211_agg_start_txq(sta, tid, true);
777 void ieee80211_start_tx_ba_cb(struct sta_info *sta, int tid,
793 ieee80211_agg_tx_operational(local, sta, tid);
798 const u8 *ra, u16 tid, struct sta_info **sta)
802 if (tid >= IEEE80211_NUM_TIDS) {
803 ht_dbg(sdata, "Bad TID value: tid = %d (>= %d)\n",
804 tid, IEEE80211_NUM_TIDS);
814 tid_tx = rcu_dereference((*sta)->ampdu_mlme.tid_tx[tid]);
823 const u8 *ra, u16 tid)
830 trace_api_start_tx_ba_cb(sdata, ra, tid);
833 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta);
844 int __ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
851 ret = ___ieee80211_stop_tx_ba_session(sta, tid, reason);
858 int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid)
866 trace_api_stop_tx_ba_session(pubsta, tid);
871 if (tid >= IEEE80211_NUM_TIDS)
875 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
882 WARN(sta->reserved_tid == tid,
883 "Requested to stop BA session on reserved tid=%d", tid);
900 void ieee80211_stop_tx_ba_cb(struct sta_info *sta, int tid,
907 ht_dbg(sdata, "Stopping Tx BA session for %pM tid %d\n",
908 sta->sta.addr, tid);
914 "unexpected callback to A-MPDU stop for %pM tid %d\n",
915 sta->sta.addr, tid);
922 ieee80211_remove_tid_tx(sta, tid);
929 ieee80211_agg_start_txq(sta, tid, false);
932 ieee80211_send_delba(sdata, sta->sta.addr, tid,
937 const u8 *ra, u16 tid)
944 trace_api_stop_tx_ba_cb(sdata, ra, tid);
947 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta);
966 u16 capab, tid, buf_size;
971 tid = (capab & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2;
975 txq = sta->sta.txq[tid];
981 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
986 ht_dbg(sta->sdata, "wrong addBA response token, %pM tid %d\n",
987 sta->sta.addr, tid);
993 ht_dbg(sta->sdata, "switched off addBA timer for %pM tid %d\n",
994 sta->sta.addr, tid);
1004 "got addBA resp for %pM tid %d but we already gave up\n",
1005 sta->sta.addr, tid);
1027 ieee80211_agg_tx_operational(local, sta, tid);
1029 sta->ampdu_mlme.addba_req_num[tid] = 0;
1041 ___ieee80211_stop_tx_ba_session(sta, tid, AGG_STOP_DECLINED);