mt76: mt7915: report rx mode value in mt7915_mac_fill_rx_rate
Report rx mode in mt7915_mac_fill_rx_rate routine in order to properly
add he radiotap if mode is at least HE_SU.
Fixes: 1c9db0aa23
("mt76: mt7915: update rx rate reporting for mt7916")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
badb6ffaa1
commit
05268cf178
|
@ -309,7 +309,7 @@ mt7915_mac_decode_he_mu_radiotap(struct sk_buff *skb, __le32 *rxv)
|
|||
}
|
||||
|
||||
static void
|
||||
mt7915_mac_decode_he_radiotap(struct sk_buff *skb, __le32 *rxv, u32 mode)
|
||||
mt7915_mac_decode_he_radiotap(struct sk_buff *skb, __le32 *rxv, u8 mode)
|
||||
{
|
||||
struct mt76_rx_status *status = (struct mt76_rx_status *)skb->cb;
|
||||
static const struct ieee80211_radiotap_he known = {
|
||||
|
@ -474,10 +474,10 @@ static int
|
|||
mt7915_mac_fill_rx_rate(struct mt7915_dev *dev,
|
||||
struct mt76_rx_status *status,
|
||||
struct ieee80211_supported_band *sband,
|
||||
__le32 *rxv)
|
||||
__le32 *rxv, u8 *mode)
|
||||
{
|
||||
u32 v0, v2;
|
||||
u8 stbc, gi, bw, dcm, mode, nss;
|
||||
u8 stbc, gi, bw, dcm, nss;
|
||||
int i, idx;
|
||||
bool cck = false;
|
||||
|
||||
|
@ -490,18 +490,18 @@ mt7915_mac_fill_rx_rate(struct mt7915_dev *dev,
|
|||
if (!is_mt7915(&dev->mt76)) {
|
||||
stbc = FIELD_GET(MT_PRXV_HT_STBC, v0);
|
||||
gi = FIELD_GET(MT_PRXV_HT_SHORT_GI, v0);
|
||||
mode = FIELD_GET(MT_PRXV_TX_MODE, v0);
|
||||
*mode = FIELD_GET(MT_PRXV_TX_MODE, v0);
|
||||
dcm = FIELD_GET(MT_PRXV_DCM, v0);
|
||||
bw = FIELD_GET(MT_PRXV_FRAME_MODE, v0);
|
||||
} else {
|
||||
stbc = FIELD_GET(MT_CRXV_HT_STBC, v2);
|
||||
gi = FIELD_GET(MT_CRXV_HT_SHORT_GI, v2);
|
||||
mode = FIELD_GET(MT_CRXV_TX_MODE, v2);
|
||||
*mode = FIELD_GET(MT_CRXV_TX_MODE, v2);
|
||||
dcm = !!(idx & GENMASK(3, 0) & MT_PRXV_TX_DCM);
|
||||
bw = FIELD_GET(MT_CRXV_FRAME_MODE, v2);
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
switch (*mode) {
|
||||
case MT_PHY_TYPE_CCK:
|
||||
cck = true;
|
||||
fallthrough;
|
||||
|
@ -546,7 +546,7 @@ mt7915_mac_fill_rx_rate(struct mt7915_dev *dev,
|
|||
case IEEE80211_STA_RX_BW_20:
|
||||
break;
|
||||
case IEEE80211_STA_RX_BW_40:
|
||||
if (mode & MT_PHY_TYPE_HE_EXT_SU &&
|
||||
if (*mode & MT_PHY_TYPE_HE_EXT_SU &&
|
||||
(idx & MT_PRXV_TX_ER_SU_106T)) {
|
||||
status->bw = RATE_INFO_BW_HE_RU;
|
||||
status->he_ru =
|
||||
|
@ -566,7 +566,7 @@ mt7915_mac_fill_rx_rate(struct mt7915_dev *dev,
|
|||
}
|
||||
|
||||
status->enc_flags |= RX_ENC_FLAG_STBC_MASK * stbc;
|
||||
if (mode < MT_PHY_TYPE_HE_SU && gi)
|
||||
if (*mode < MT_PHY_TYPE_HE_SU && gi)
|
||||
status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
|
||||
|
||||
return 0;
|
||||
|
@ -581,7 +581,6 @@ mt7915_mac_fill_rx(struct mt7915_dev *dev, struct sk_buff *skb)
|
|||
struct ieee80211_supported_band *sband;
|
||||
__le32 *rxd = (__le32 *)skb->data;
|
||||
__le32 *rxv = NULL;
|
||||
u32 mode = 0;
|
||||
u32 rxd0 = le32_to_cpu(rxd[0]);
|
||||
u32 rxd1 = le32_to_cpu(rxd[1]);
|
||||
u32 rxd2 = le32_to_cpu(rxd[2]);
|
||||
|
@ -590,10 +589,10 @@ mt7915_mac_fill_rx(struct mt7915_dev *dev, struct sk_buff *skb)
|
|||
u32 csum_mask = MT_RXD0_NORMAL_IP_SUM | MT_RXD0_NORMAL_UDP_TCP_SUM;
|
||||
bool unicast, insert_ccmp_hdr = false;
|
||||
u8 remove_pad, amsdu_info;
|
||||
u8 mode = 0, qos_ctl = 0;
|
||||
bool hdr_trans;
|
||||
u16 hdr_gap;
|
||||
u16 seq_ctrl = 0;
|
||||
u8 qos_ctl = 0;
|
||||
__le16 fc = 0;
|
||||
int idx;
|
||||
|
||||
|
@ -766,7 +765,8 @@ mt7915_mac_fill_rx(struct mt7915_dev *dev, struct sk_buff *skb)
|
|||
}
|
||||
|
||||
if (!is_mt7915(&dev->mt76) || (rxd1 & MT_RXD1_NORMAL_GROUP_5)) {
|
||||
ret = mt7915_mac_fill_rx_rate(dev, status, sband, rxv);
|
||||
ret = mt7915_mac_fill_rx_rate(dev, status, sband, rxv,
|
||||
&mode);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue