Commit be43ce64 authored by John Crispin's avatar John Crispin Committed by Kalle Valo

ath11k: drop tx_info from ath11k_sta

We will start using ieee80211_tx_status_ext() so we do not need to track
tx rates inside a struct ieee80211_tx_info. It is currently not possible
to populate that struct with HE rate info anyhow.
Signed-off-by: default avatarJohn Crispin <john@phrozen.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent df57acc4
...@@ -331,7 +331,6 @@ struct ath11k_sta { ...@@ -331,7 +331,6 @@ struct ath11k_sta {
u32 smps; u32 smps;
struct work_struct update_wk; struct work_struct update_wk;
struct ieee80211_tx_info tx_info;
struct rate_info txrate; struct rate_info txrate;
struct rate_info last_txrate; struct rate_info last_txrate;
u64 rx_duration; u64 rx_duration;
......
...@@ -1028,25 +1028,6 @@ int ath11k_dp_htt_tlv_iter(struct ath11k_base *ab, const void *ptr, size_t len, ...@@ -1028,25 +1028,6 @@ int ath11k_dp_htt_tlv_iter(struct ath11k_base *ab, const void *ptr, size_t len,
return 0; return 0;
} }
static u32 ath11k_bw_to_mac80211_bwflags(u8 bw)
{
u32 bwflags = 0;
switch (bw) {
case ATH11K_BW_40:
bwflags = IEEE80211_TX_RC_40_MHZ_WIDTH;
break;
case ATH11K_BW_80:
bwflags = IEEE80211_TX_RC_80_MHZ_WIDTH;
break;
case ATH11K_BW_160:
bwflags = IEEE80211_TX_RC_160_MHZ_WIDTH;
break;
}
return bwflags;
}
static void static void
ath11k_update_per_peer_tx_stats(struct ath11k *ar, ath11k_update_per_peer_tx_stats(struct ath11k *ar,
struct htt_ppdu_stats *ppdu_stats, u8 user) struct htt_ppdu_stats *ppdu_stats, u8 user)
...@@ -1056,7 +1037,6 @@ ath11k_update_per_peer_tx_stats(struct ath11k *ar, ...@@ -1056,7 +1037,6 @@ ath11k_update_per_peer_tx_stats(struct ath11k *ar,
struct ieee80211_sta *sta; struct ieee80211_sta *sta;
struct ath11k_sta *arsta; struct ath11k_sta *arsta;
struct htt_ppdu_stats_user_rate *user_rate; struct htt_ppdu_stats_user_rate *user_rate;
struct ieee80211_chanctx_conf *conf = NULL;
struct ath11k_per_peer_tx_stats *peer_stats = &ar->peer_tx_stats; struct ath11k_per_peer_tx_stats *peer_stats = &ar->peer_tx_stats;
struct htt_ppdu_user_stats *usr_stats = &ppdu_stats->user_stats[user]; struct htt_ppdu_user_stats *usr_stats = &ppdu_stats->user_stats[user];
struct htt_ppdu_stats_common *common = &ppdu_stats->common; struct htt_ppdu_stats_common *common = &ppdu_stats->common;
...@@ -1136,60 +1116,33 @@ ath11k_update_per_peer_tx_stats(struct ath11k *ar, ...@@ -1136,60 +1116,33 @@ ath11k_update_per_peer_tx_stats(struct ath11k *ar,
arsta = (struct ath11k_sta *)sta->drv_priv; arsta = (struct ath11k_sta *)sta->drv_priv;
memset(&arsta->txrate, 0, sizeof(arsta->txrate)); memset(&arsta->txrate, 0, sizeof(arsta->txrate));
memset(&arsta->tx_info.status, 0, sizeof(arsta->tx_info.status));
switch (flags) { switch (flags) {
case WMI_RATE_PREAMBLE_OFDM: case WMI_RATE_PREAMBLE_OFDM:
arsta->txrate.legacy = rate; arsta->txrate.legacy = rate;
if (arsta->arvif && arsta->arvif->vif)
conf = rcu_dereference(arsta->arvif->vif->chanctx_conf);
if (conf && conf->def.chan->band == NL80211_BAND_5GHZ)
arsta->tx_info.status.rates[0].idx = rate_idx - 4;
break; break;
case WMI_RATE_PREAMBLE_CCK: case WMI_RATE_PREAMBLE_CCK:
arsta->txrate.legacy = rate; arsta->txrate.legacy = rate;
arsta->tx_info.status.rates[0].idx = rate_idx;
if (mcs > ATH11K_HW_RATE_CCK_LP_1M &&
mcs <= ATH11K_HW_RATE_CCK_SP_2M)
arsta->tx_info.status.rates[0].flags |=
IEEE80211_TX_RC_USE_SHORT_PREAMBLE;
break; break;
case WMI_RATE_PREAMBLE_HT: case WMI_RATE_PREAMBLE_HT:
arsta->txrate.mcs = mcs + 8 * (nss - 1); arsta->txrate.mcs = mcs + 8 * (nss - 1);
arsta->tx_info.status.rates[0].idx = arsta->txrate.mcs;
arsta->txrate.flags = RATE_INFO_FLAGS_MCS; arsta->txrate.flags = RATE_INFO_FLAGS_MCS;
arsta->tx_info.status.rates[0].flags |= IEEE80211_TX_RC_MCS; if (sgi)
if (sgi) {
arsta->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI; arsta->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI;
arsta->tx_info.status.rates[0].flags |=
IEEE80211_TX_RC_SHORT_GI;
}
break; break;
case WMI_RATE_PREAMBLE_VHT: case WMI_RATE_PREAMBLE_VHT:
arsta->txrate.mcs = mcs; arsta->txrate.mcs = mcs;
ieee80211_rate_set_vht(&arsta->tx_info.status.rates[0], mcs, nss);
arsta->txrate.flags = RATE_INFO_FLAGS_VHT_MCS; arsta->txrate.flags = RATE_INFO_FLAGS_VHT_MCS;
arsta->tx_info.status.rates[0].flags |= IEEE80211_TX_RC_VHT_MCS; if (sgi)
if (sgi) {
arsta->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI; arsta->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI;
arsta->tx_info.status.rates[0].flags |=
IEEE80211_TX_RC_SHORT_GI;
}
break; break;
} }
arsta->txrate.nss = nss; arsta->txrate.nss = nss;
arsta->txrate.bw = ath11k_mac_bw_to_mac80211_bw(bw); arsta->txrate.bw = ath11k_mac_bw_to_mac80211_bw(bw);
arsta->tx_info.status.rates[0].flags |= ath11k_bw_to_mac80211_bwflags(bw);
arsta->tx_duration += tx_duration; arsta->tx_duration += tx_duration;
memcpy(&arsta->last_txrate, &arsta->txrate, sizeof(struct rate_info)); memcpy(&arsta->last_txrate, &arsta->txrate, sizeof(struct rate_info));
if (succ_pkts) {
arsta->tx_info.flags = IEEE80211_TX_STAT_ACK;
arsta->tx_info.status.rates[0].count = 1;
ieee80211_tx_rate_update(ar->hw, sta, &arsta->tx_info);
}
/* PPDU stats reported for mgmt packet doesn't have valid tx bytes. /* PPDU stats reported for mgmt packet doesn't have valid tx bytes.
* So skip peer stats update for mgmt packets. * So skip peer stats update for mgmt packets.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment