2021-07-14 19:42:09

by Ryder Lee

[permalink] [raw]
Subject: [PATCH] mt76: mt7915: fix endianness warnings in mu radiotap

Fix sparse: sparse: restricted __le32 degrades to integer

Fixes: e63fadb87fe1 ("mt76: mt7915: report HE MU radiotap")
Signed-off-by: Ryder Lee <[email protected]>
---
Hi Felix, could you help to fold this into previous commit?
---
drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
index f1574538315d..cb7397f53045 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
@@ -292,19 +292,19 @@ mt7915_mac_decode_he_mu_radiotap(struct sk_buff *skb,
MU_PREP(FLAGS2_SIG_B_SYMS_USERS,
le32_get_bits(rxv[2], MT_CRXV_HE_NUM_USER));

- he_mu->ru_ch1[0] = FIELD_GET(MT_CRXV_HE_RU0, cpu_to_le32(rxv[3]));
+ he_mu->ru_ch1[0] = FIELD_GET(MT_CRXV_HE_RU0, le32_to_cpu(rxv[3]));

if (status->bw >= RATE_INFO_BW_40) {
he_mu->flags1 |= HE_BITS(MU_FLAGS1_CH2_RU_KNOWN);
he_mu->ru_ch2[0] =
- FIELD_GET(MT_CRXV_HE_RU1, cpu_to_le32(rxv[3]));
+ FIELD_GET(MT_CRXV_HE_RU1, le32_to_cpu(rxv[3]));
}

if (status->bw >= RATE_INFO_BW_80) {
he_mu->ru_ch1[1] =
- FIELD_GET(MT_CRXV_HE_RU2, cpu_to_le32(rxv[3]));
+ FIELD_GET(MT_CRXV_HE_RU2, le32_to_cpu(rxv[3]));
he_mu->ru_ch2[1] =
- FIELD_GET(MT_CRXV_HE_RU3, cpu_to_le32(rxv[3]));
+ FIELD_GET(MT_CRXV_HE_RU3, le32_to_cpu(rxv[3]));
}
}

@@ -339,7 +339,7 @@ mt7915_mac_decode_he_radiotap(struct sk_buff *skb,
he->data5 = HE_PREP(DATA5_PE_DISAMBIG, PE_DISAMBIG, rxv[2]) |
le16_encode_bits(ltf_size,
IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE);
- if (cpu_to_le32(rxv[0]) & MT_PRXV_TXBF)
+ if (le32_to_cpu(rxv[0]) & MT_PRXV_TXBF)
he->data5 |= HE_BITS(DATA5_TXBF);
he->data6 = HE_PREP(DATA6_TXOP, TXOP_DUR, rxv[14]) |
HE_PREP(DATA6_DOPPLER, DOPPLER, rxv[14]);
--
2.29.2


2021-07-14 20:00:50

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mt76: mt7915: fix endianness warnings in mu radiotap


>
> - he_mu->ru_ch1[0] = FIELD_GET(MT_CRXV_HE_RU0, cpu_to_le32(rxv[3]));
> + he_mu->ru_ch1[0] = FIELD_GET(MT_CRXV_HE_RU0, le32_to_cpu(rxv[3]));

Instead of

FIELD_GET(MASK, le32_to_cpu(value))

you should probably consider

le32_get_bits(value, MASK)

(not really sure why the order of arguments got inverted though ...)

We might even consider doing an spatch to get rid of all the FIELD_GET()
I guess.

johannes