From: Ben Greear <greearb@xxxxxxxxxxxxxxx> Do not initialize rix to -1, build the rix and set flags based on the mcs, nss, and mode. Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx> --- drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c index edf33540658e..300928edd0d7 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c @@ -1571,7 +1571,7 @@ mt7915_mac_add_txs_skb(struct mt7915_dev *dev, struct mt76_wcid *wcid, int pid, struct ieee80211_supported_band *sband; struct mt76_dev *mdev = &dev->mt76; struct mt76_phy *mphy; - struct ieee80211_tx_info *info; + struct ieee80211_tx_info *info = NULL; struct sk_buff_head list; struct rate_info rate = {}; struct sk_buff *skb = NULL; @@ -1596,8 +1596,6 @@ mt7915_mac_add_txs_skb(struct mt7915_dev *dev, struct mt76_wcid *wcid, int pid, info->status.ampdu_len = 1; info->status.ampdu_ack_len = !!(info->flags & IEEE80211_TX_STAT_ACK); - - info->status.rates[0].idx = -1; } txrate = FIELD_GET(MT_TXS0_TX_RATE, txs); @@ -1627,6 +1625,8 @@ mt7915_mac_add_txs_skb(struct mt7915_dev *dev, struct mt76_wcid *wcid, int pid, rate.mcs = mt76_get_rate(mphy->dev, sband, rate.mcs, cck); rate.legacy = sband->bitrates[rate.mcs].bitrate; + if (info) + info->status.rates[0].idx = rate.mcs; break; case MT_PHY_TYPE_HT: case MT_PHY_TYPE_HT_GF: @@ -1637,6 +1637,10 @@ mt7915_mac_add_txs_skb(struct mt7915_dev *dev, struct mt76_wcid *wcid, int pid, rate.flags = RATE_INFO_FLAGS_MCS; if (wcid->rate_short_gi) rate.flags |= RATE_INFO_FLAGS_SHORT_GI; + if (info) { + info->status.rates[0].idx = rate.mcs + rate.nss * 8; + info->status.rates[0].flags |= IEEE80211_TX_RC_MCS; + } break; case MT_PHY_TYPE_VHT: if (rate.mcs > 9) @@ -1645,6 +1649,10 @@ mt7915_mac_add_txs_skb(struct mt7915_dev *dev, struct mt76_wcid *wcid, int pid, rate.flags = RATE_INFO_FLAGS_VHT_MCS; if (wcid->rate_short_gi) rate.flags |= RATE_INFO_FLAGS_SHORT_GI; + if (info) { + info->status.rates[0].idx = (rate.nss << 4) | rate.mcs; + info->status.rates[0].flags |= IEEE80211_TX_RC_VHT_MCS; + } break; case MT_PHY_TYPE_HE_SU: case MT_PHY_TYPE_HE_EXT_SU: @@ -1656,6 +1664,8 @@ mt7915_mac_add_txs_skb(struct mt7915_dev *dev, struct mt76_wcid *wcid, int pid, rate.he_gi = wcid->rate_he_gi; rate.he_dcm = FIELD_GET(MT_TX_RATE_DCM, txrate); rate.flags = RATE_INFO_FLAGS_HE_MCS; + if (info) + info->status.rates[0].idx = (rate.nss << 4) | rate.mcs; break; default: WARN_ON_ONCE(true); -- 2.20.1