Lines Matching refs:status

117 	 *  (4) we get TX status before having processed the frame and
122 * even at the same time because we queue both TX status events and
124 * same order that they were received or TX status last. Hence, there
126 * status, which drivers can ensure, see below.
135 * (a) don't mix the irq-safe/not irq-safe TX status/RX processing
137 * (b) always process RX events before TX status events if ordering
138 * can be unknown, for example with different interrupt status
142 * changes before calling TX status events if ordering can be
210 struct ieee80211_tx_status *status)
215 if (status && status->n_rates)
216 status_rate = &status->rates[status->n_rates - 1];
226 else if (info->status.rates[0].idx >= 0 &&
227 !(info->status.rates[0].flags &
246 } else if (info->status.rates[0].idx >= 0) {
247 if (info->status.rates[0].flags & IEEE80211_TX_RC_MCS)
249 else if (info->status.rates[0].flags & IEEE80211_TX_RC_VHT_MCS)
260 struct ieee80211_tx_status *status)
270 if (status && status->n_rates)
271 status_rate = &status->rates[status->n_rates - 1];
298 } else if (info->status.rates[0].idx >= 0 &&
299 !(info->status.rates[0].flags & (IEEE80211_TX_RC_MCS |
305 sband->bitrates[info->status.rates[0].idx].bitrate;
321 if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT)
323 if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS)
470 if (status_rate || info->status.rates[0].idx < 0)
475 if (info->status.rates[0].flags & IEEE80211_TX_RC_MCS) {
480 if (info->status.rates[0].flags & IEEE80211_TX_RC_SHORT_GI)
482 if (info->status.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
484 if (info->status.rates[0].flags & IEEE80211_TX_RC_GREEN_FIELD)
486 pos[2] = info->status.rates[0].idx;
488 } else if (info->status.rates[0].flags & IEEE80211_TX_RC_VHT_MCS) {
503 if (info->status.rates[0].flags & IEEE80211_TX_RC_SHORT_GI)
508 if (info->status.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
510 else if (info->status.rates[0].flags & IEEE80211_TX_RC_80_MHZ_WIDTH)
512 else if (info->status.rates[0].flags & IEEE80211_TX_RC_160_MHZ_WIDTH)
519 *pos = (ieee80211_rate_get_vht_mcs(&info->status.rates[0]) << 4) |
520 ieee80211_rate_get_vht_nss(&info->status.rates[0]);
612 !!(info->status.flags & IEEE80211_TX_STATUS_ACK_SIGNAL_VALID);
613 struct cfg80211_tx_status status = {
622 status.tx_tstamp =
624 status.ack_tstamp = ktime_to_ns(ack_hwtstamp);
641 info->status.ack_signal,
646 &status,
649 pr_warn("Unknown status report in ack skb\n");
681 "bad SMPS status link: %d\n", link_id))
691 * and we have to be associated to have a status from the
836 /* This packet was aggregated but doesn't carry status info */
874 /* just the first aggr frame carry status info */
875 info->status.rates[i].idx = -1;
876 info->status.rates[i].count = 0;
878 } else if (info->status.rates[i].idx < 0) {
882 info->status.rates[i].idx = -1;
883 info->status.rates[i].count = 0;
887 count += info->status.rates[i].count;
899 struct ieee80211_tx_status *status)
908 rtap_len = ieee80211_tx_radiotap_len(info, status);
915 rtap_len, status);
955 struct ieee80211_tx_status *status,
958 struct sk_buff *skb = status->skb;
961 struct ieee80211_tx_info *info = status->info;
972 if (status->sta) {
973 sta = container_of(status->sta, struct sta_info, sta);
992 info->status.rates[rates_idx];
1089 ieee80211_report_used_skb(local, skb, false, status->ack_hwtstamp);
1103 if (status->free_list)
1104 list_add_tail(&skb->list, status->free_list);
1112 send_to_cooked, status);
1119 struct ieee80211_tx_status status = {
1129 status.sta = &sta->sta;
1131 ieee80211_tx_status_ext(hw, &status);
1137 struct ieee80211_tx_status *status)
1140 struct ieee80211_tx_info *info = status->info;
1141 struct ieee80211_sta *pubsta = status->sta;
1142 struct sk_buff *skb = status->skb;
1151 if (status->n_rates)
1153 status->rates[status->n_rates - 1].rate_idx;
1168 if (!status->info)
1176 !!(info->status.flags & IEEE80211_TX_STATUS_ACK_SIGNAL_VALID);
1189 acked, info->status.tx_time);
1207 (s8)info->status.ack_signal;
1210 -info->status.ack_signal);
1227 rate_control_tx_status(local, status);
1229 ieee80211s_update_metric(local, sta, status);
1233 return __ieee80211_tx_status(hw, status, rates_idx,
1252 ieee80211_report_used_skb(local, skb, false, status->ack_hwtstamp);
1253 if (status->free_list)
1254 list_add_tail(&skb->list, status->free_list);
1266 struct ieee80211_tx_status status = {
1271 rate_control_tx_status(local, &status);
1274 sta->deflink.tx_stats.last_rate = info->status.rates[0];