Lines Matching refs:tid

62 					 const u8 *da, u16 tid,
100 capab |= u16_encode_bits(tid, IEEE80211_ADDBA_PARAM_TID_MASK);
109 ieee80211_tx_skb_tid(sdata, skb, tid, -1);
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, -1);
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;
468 ht_dbg(sdata, "activated addBA response timer on %pM tid %d\n",
469 sta->sta.addr, tid);
472 sta->ampdu_mlme.last_addba_req_time[tid] = jiffies;
473 sta->ampdu_mlme.addba_req_num[tid]++;
489 ieee80211_send_addba_request(sdata, sta->sta.addr, tid,
496 void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid)
504 .tid = tid,
511 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
528 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);
560 u16 tid)
565 if (WARN_ON_ONCE(tid >= IEEE80211_NUM_TIDS))
568 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]);
584 u8 tid = tid_tx->tid;
597 ht_dbg(sta->sdata, "tx session timer expired on %pM tid %d\n",
598 sta->sta.addr, tid);
600 ieee80211_stop_tx_ba_session(&sta->sta, tid);
603 int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
612 trace_api_start_tx_ba_session(pubsta, tid);
614 if (WARN(sta->reserved_tid == tid,
615 "Requested to start BA session on reserved tid=%d", tid))
625 if ((tid >= IEEE80211_NUM_TIDS) ||
630 if (WARN_ON(tid >= IEEE80211_FIRST_TSPEC_TSID))
633 ht_dbg(sdata, "Open BA session requested for %pM tid %u\n",
634 pubsta->addr, tid);
645 "BA sessions blocked - Denying BA session request %pM tid %d\n",
646 sta->sta.addr, tid);
653 "MFP STA not authorized - deny BA session request %pM tid %d\n",
654 sta->sta.addr, tid);
681 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_MAX_RETRIES) {
691 if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES &&
692 time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] +
695 "BA request denied - %d failed requests on %pM tid %u\n",
696 sta->ampdu_mlme.addba_req_num[tid], sta->sta.addr, tid);
701 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
703 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) {
705 "BA request denied - session is not idle on %pM tid %u\n",
706 sta->sta.addr, tid);
723 tid_tx->tid = tid;
740 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx;
752 struct sta_info *sta, u16 tid)
758 .tid = tid,
765 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
769 ht_dbg(sta->sdata, "Aggregation is on for %pM tid %d\n",
770 sta->sta.addr, tid);
780 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid);
787 ieee80211_agg_splice_finish(sta->sdata, tid);
791 ieee80211_agg_start_txq(sta, tid, true);
794 void ieee80211_start_tx_ba_cb(struct sta_info *sta, int tid,
816 ieee80211_agg_tx_operational(local, sta, tid);
821 const u8 *ra, u16 tid, struct sta_info **sta)
825 if (tid >= IEEE80211_NUM_TIDS) {
826 ht_dbg(sdata, "Bad TID value: tid = %d (>= %d)\n",
827 tid, IEEE80211_NUM_TIDS);
837 tid_tx = rcu_dereference((*sta)->ampdu_mlme.tid_tx[tid]);
846 const u8 *ra, u16 tid)
853 trace_api_start_tx_ba_cb(sdata, ra, tid);
856 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta);
867 int ieee80211_stop_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid)
875 trace_api_stop_tx_ba_session(pubsta, tid);
880 if (tid >= IEEE80211_NUM_TIDS)
884 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
891 WARN(sta->reserved_tid == tid,
892 "Requested to stop BA session on reserved tid=%d", tid);
909 void ieee80211_stop_tx_ba_cb(struct sta_info *sta, int tid,
916 ht_dbg(sdata, "Stopping Tx BA session for %pM tid %d\n",
917 sta->sta.addr, tid);
923 "unexpected callback to A-MPDU stop for %pM tid %d\n",
924 sta->sta.addr, tid);
931 ieee80211_remove_tid_tx(sta, tid);
938 ieee80211_agg_start_txq(sta, tid, false);
941 ieee80211_send_delba(sdata, sta->sta.addr, tid,
946 const u8 *ra, u16 tid)
953 trace_api_stop_tx_ba_cb(sdata, ra, tid);
956 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta);
975 u16 capab, tid, buf_size;
982 tid = u16_get_bits(capab, IEEE80211_ADDBA_PARAM_TID_MASK);
986 txq = sta->sta.txq[tid];
990 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
995 ht_dbg(sta->sdata, "wrong addBA response token, %pM tid %d\n",
996 sta->sta.addr, tid);
1002 ht_dbg(sta->sdata, "switched off addBA timer for %pM tid %d\n",
1003 sta->sta.addr, tid);
1013 "got addBA resp for %pM tid %d but we already gave up\n",
1014 sta->sta.addr, tid);
1036 ieee80211_agg_tx_operational(local, sta, tid);
1038 sta->ampdu_mlme.addba_req_num[tid] = 0;
1050 __ieee80211_stop_tx_ba_session(sta, tid, AGG_STOP_DECLINED);