Lines Matching refs:status
247 struct ieee80211_tx_status *status) in ieee80211_tx_radiotap_len() argument
252 if (status && status->rate && !(status->rate->flags & in ieee80211_tx_radiotap_len()
259 else if (info->status.rates[0].idx >= 0 && in ieee80211_tx_radiotap_len()
260 !(info->status.rates[0].flags & in ieee80211_tx_radiotap_len()
272 if (status && status->rate) { in ieee80211_tx_radiotap_len()
273 if (status->rate->flags & RATE_INFO_FLAGS_MCS) in ieee80211_tx_radiotap_len()
275 else if (status->rate->flags & RATE_INFO_FLAGS_VHT_MCS) in ieee80211_tx_radiotap_len()
277 else if (status->rate->flags & RATE_INFO_FLAGS_HE_MCS) in ieee80211_tx_radiotap_len()
279 } else if (info->status.rates[0].idx >= 0) { in ieee80211_tx_radiotap_len()
280 if (info->status.rates[0].flags & IEEE80211_TX_RC_MCS) in ieee80211_tx_radiotap_len()
282 else if (info->status.rates[0].flags & IEEE80211_TX_RC_VHT_MCS) in ieee80211_tx_radiotap_len()
294 struct ieee80211_tx_status *status) in ieee80211_add_tx_radiotap_header() argument
320 if (status && status->rate) { in ieee80211_add_tx_radiotap_header()
321 if (!(status->rate->flags & (RATE_INFO_FLAGS_MCS | in ieee80211_add_tx_radiotap_header()
326 legacy_rate = status->rate->legacy; in ieee80211_add_tx_radiotap_header()
327 } else if (info->status.rates[0].idx >= 0 && in ieee80211_add_tx_radiotap_header()
328 !(info->status.rates[0].flags & (IEEE80211_TX_RC_MCS | in ieee80211_add_tx_radiotap_header()
331 sband->bitrates[info->status.rates[0].idx].bitrate; in ieee80211_add_tx_radiotap_header()
346 if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) in ieee80211_add_tx_radiotap_header()
348 if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) in ieee80211_add_tx_radiotap_header()
359 if (status && status->rate && in ieee80211_add_tx_radiotap_header()
360 (status->rate->flags & RATE_INFO_FLAGS_MCS)) { in ieee80211_add_tx_radiotap_header()
365 if (status->rate->flags & RATE_INFO_FLAGS_SHORT_GI) in ieee80211_add_tx_radiotap_header()
367 if (status->rate->bw == RATE_INFO_BW_40) in ieee80211_add_tx_radiotap_header()
369 pos[2] = status->rate->mcs; in ieee80211_add_tx_radiotap_header()
371 } else if (status && status->rate && in ieee80211_add_tx_radiotap_header()
372 (status->rate->flags & RATE_INFO_FLAGS_VHT_MCS)) { in ieee80211_add_tx_radiotap_header()
387 if (status->rate->flags & RATE_INFO_FLAGS_SHORT_GI) in ieee80211_add_tx_radiotap_header()
392 switch (status->rate->bw) { in ieee80211_add_tx_radiotap_header()
409 *pos = (status->rate->mcs << 4) | status->rate->nss; in ieee80211_add_tx_radiotap_header()
418 } else if (status && status->rate && in ieee80211_add_tx_radiotap_header()
419 (status->rate->flags & RATE_INFO_FLAGS_HE_MCS)) { in ieee80211_add_tx_radiotap_header()
437 he->data6 |= HE_PREP(DATA6_NSTS, status->rate->nss); in ieee80211_add_tx_radiotap_header()
447 he->data3 |= HE_PREP(DATA3_DATA_MCS, status->rate->mcs); in ieee80211_add_tx_radiotap_header()
448 he->data3 |= HE_PREP(DATA3_DATA_DCM, status->rate->he_dcm); in ieee80211_add_tx_radiotap_header()
450 he->data5 |= HE_PREP(DATA5_GI, status->rate->he_gi); in ieee80211_add_tx_radiotap_header()
452 switch (status->rate->bw) { in ieee80211_add_tx_radiotap_header()
483 status->rate->he_ru_alloc + 4); in ieee80211_add_tx_radiotap_header()
486 WARN_ONCE(1, "Invalid SU BW %d\n", status->rate->bw); in ieee80211_add_tx_radiotap_header()
492 if ((status && status->rate) || info->status.rates[0].idx < 0) in ieee80211_add_tx_radiotap_header()
497 if (info->status.rates[0].flags & IEEE80211_TX_RC_MCS) { in ieee80211_add_tx_radiotap_header()
502 if (info->status.rates[0].flags & IEEE80211_TX_RC_SHORT_GI) in ieee80211_add_tx_radiotap_header()
504 if (info->status.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH) in ieee80211_add_tx_radiotap_header()
506 if (info->status.rates[0].flags & IEEE80211_TX_RC_GREEN_FIELD) in ieee80211_add_tx_radiotap_header()
508 pos[2] = info->status.rates[0].idx; in ieee80211_add_tx_radiotap_header()
510 } else if (info->status.rates[0].flags & IEEE80211_TX_RC_VHT_MCS) { in ieee80211_add_tx_radiotap_header()
525 if (info->status.rates[0].flags & IEEE80211_TX_RC_SHORT_GI) in ieee80211_add_tx_radiotap_header()
530 if (info->status.rates[0].flags & IEEE80211_TX_RC_40_MHZ_WIDTH) in ieee80211_add_tx_radiotap_header()
532 else if (info->status.rates[0].flags & IEEE80211_TX_RC_80_MHZ_WIDTH) in ieee80211_add_tx_radiotap_header()
534 else if (info->status.rates[0].flags & IEEE80211_TX_RC_160_MHZ_WIDTH) in ieee80211_add_tx_radiotap_header()
541 *pos = (ieee80211_rate_get_vht_mcs(&info->status.rates[0]) << 4) | in ieee80211_add_tx_radiotap_header()
542 ieee80211_rate_get_vht_nss(&info->status.rates[0]); in ieee80211_add_tx_radiotap_header()
650 info->status.ack_signal, in ieee80211_report_ack_skb()
651 info->status.is_valid_ack_signal, in ieee80211_report_ack_skb()
801 info->status.rates[i].idx = -1; in ieee80211_tx_get_rates()
802 info->status.rates[i].count = 0; in ieee80211_tx_get_rates()
804 } else if (info->status.rates[i].idx < 0) { in ieee80211_tx_get_rates()
808 info->status.rates[i].idx = -1; in ieee80211_tx_get_rates()
809 info->status.rates[i].count = 0; in ieee80211_tx_get_rates()
813 count += info->status.rates[i].count; in ieee80211_tx_get_rates()
826 struct ieee80211_tx_status *status) in ieee80211_tx_monitor() argument
835 rtap_len = ieee80211_tx_radiotap_len(info, status); in ieee80211_tx_monitor()
842 rtap_len, shift, status); in ieee80211_tx_monitor()
882 struct ieee80211_tx_status *status, in __ieee80211_tx_status() argument
885 struct sk_buff *skb = status->skb; in __ieee80211_tx_status()
888 struct ieee80211_tx_info *info = status->info; in __ieee80211_tx_status()
902 if (status->sta) { in __ieee80211_tx_status()
903 sta = container_of(status->sta, struct sta_info, sta); in __ieee80211_tx_status()
923 info->status.rates[rates_idx]; in __ieee80211_tx_status()
1035 if (status->free_list) in __ieee80211_tx_status()
1036 list_add_tail(&skb->list, status->free_list); in __ieee80211_tx_status()
1044 send_to_cooked, status); in __ieee80211_tx_status()
1051 struct ieee80211_tx_status status = { in ieee80211_tx_status() local
1061 status.sta = &sta->sta; in ieee80211_tx_status()
1063 ieee80211_tx_status_ext(hw, &status); in ieee80211_tx_status()
1069 struct ieee80211_tx_status *status) in ieee80211_tx_status_ext() argument
1072 struct ieee80211_tx_info *info = status->info; in ieee80211_tx_status_ext()
1073 struct ieee80211_sta *pubsta = status->sta; in ieee80211_tx_status_ext()
1074 struct sk_buff *skb = status->skb; in ieee80211_tx_status_ext()
1084 if (status->rate) in ieee80211_tx_status_ext()
1085 sta->tx_stats.last_rate_info = *status->rate; in ieee80211_tx_status_ext()
1100 if (!status->info) in ieee80211_tx_status_ext()
1121 acked, info->status.tx_time); in ieee80211_tx_status_ext()
1137 if (info->status.is_valid_ack_signal) { in ieee80211_tx_status_ext()
1139 (s8)info->status.ack_signal; in ieee80211_tx_status_ext()
1142 -info->status.ack_signal); in ieee80211_tx_status_ext()
1159 rate_control_tx_status(local, sband, status); in ieee80211_tx_status_ext()
1161 ieee80211s_update_metric(local, sta, status); in ieee80211_tx_status_ext()
1165 return __ieee80211_tx_status(hw, status, rates_idx, in ieee80211_tx_status_ext()
1185 if (status->free_list) in ieee80211_tx_status_ext()
1186 list_add_tail(&skb->list, status->free_list); in ieee80211_tx_status_ext()
1199 struct ieee80211_tx_status status = { in ieee80211_tx_rate_update() local
1204 rate_control_tx_status(local, sband, &status); in ieee80211_tx_rate_update()
1207 sta->tx_stats.last_rate = info->status.rates[0]; in ieee80211_tx_rate_update()
1216 struct ieee80211_tx_status status = { in ieee80211_tx_status_8023() local
1227 status.sta = &sta->sta; in ieee80211_tx_status_8023()
1229 ieee80211_tx_status_ext(hw, &status); in ieee80211_tx_status_8023()