Type of txdw7 is __le16, so assign __le32 is wrong. Also, the
TXDESC_ANTENNA_SELECT_C is defined for __le32, so shift 16 bits to fit
the value. Compile test only.
sparse warnings: (new ones prefixed by >>)
>> rtl8xxxu_core.c:5198:24: sparse: sparse: invalid assignment: |=
>> rtl8xxxu_core.c:5198:24: sparse: left side has type restricted __le16
>> rtl8xxxu_core.c:5198:24: sparse: right side has type restricted __le32
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Ping-Ke Shih <[email protected]>
---
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
index 35dc777c1fba8..0869b95f1b3f3 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
@@ -5250,7 +5250,7 @@ rtl8xxxu_fill_txdesc_v3(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr,
tx_desc->txdw2 |= cpu_to_le32(TXDESC_ANTENNA_SELECT_A |
TXDESC_ANTENNA_SELECT_B);
- tx_desc->txdw7 |= cpu_to_le32(TXDESC_ANTENNA_SELECT_C);
+ tx_desc->txdw7 |= cpu_to_le16(TXDESC_ANTENNA_SELECT_C >> 16);
}
static void rtl8xxxu_tx(struct ieee80211_hw *hw,
--
2.25.1
On 19/01/2023 13:31, Ping-Ke Shih wrote:
> Type of txdw7 is __le16, so assign __le32 is wrong. Also, the
> TXDESC_ANTENNA_SELECT_C is defined for __le32, so shift 16 bits to fit
> the value. Compile test only.
>
> sparse warnings: (new ones prefixed by >>)
>>> rtl8xxxu_core.c:5198:24: sparse: sparse: invalid assignment: |=
>>> rtl8xxxu_core.c:5198:24: sparse: left side has type restricted __le16
>>> rtl8xxxu_core.c:5198:24: sparse: right side has type restricted __le32
>
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Ping-Ke Shih <[email protected]>
> ---
> drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
> index 35dc777c1fba8..0869b95f1b3f3 100644
> --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
> +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
> @@ -5250,7 +5250,7 @@ rtl8xxxu_fill_txdesc_v3(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr,
>
> tx_desc->txdw2 |= cpu_to_le32(TXDESC_ANTENNA_SELECT_A |
> TXDESC_ANTENNA_SELECT_B);
> - tx_desc->txdw7 |= cpu_to_le32(TXDESC_ANTENNA_SELECT_C);
> + tx_desc->txdw7 |= cpu_to_le16(TXDESC_ANTENNA_SELECT_C >> 16);
> }
>
> static void rtl8xxxu_tx(struct ieee80211_hw *hw,
Tested-by: Bitterblue Smith <[email protected]>
Ping-Ke Shih <[email protected]> wrote:
> Type of txdw7 is __le16, so assign __le32 is wrong. Also, the
> TXDESC_ANTENNA_SELECT_C is defined for __le32, so shift 16 bits to fit
> the value. Compile test only.
>
> sparse warnings: (new ones prefixed by >>)
> >> rtl8xxxu_core.c:5198:24: sparse: sparse: invalid assignment: |=
> >> rtl8xxxu_core.c:5198:24: sparse: left side has type restricted __le16
> >> rtl8xxxu_core.c:5198:24: sparse: right side has type restricted __le32
>
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Ping-Ke Shih <[email protected]>
> Tested-by: Bitterblue Smith <[email protected]>
Patch applied to wireless-next.git, thanks.
6869ba4911df wifi: rtl8xxxu: fix txdw7 assignment of TX DESC v3
--
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches