Message ID | 20211118164056.2965-7-greearb@candelatech.com (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | Felix Fietkau |
Headers | show |
Series | [01/11] mt76: mt7915: add comments about rx descriptor parsing | expand |
> From: Ben Greear <greearb@candelatech.com> > > 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@candelatech.com> > --- > 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; can it be NULL? > 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; ieee80211_rate_set_vht() > + 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 >
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);