diff mbox series

wifi: mt76: mt7925: fix get wrong chip cap from incorrect pointer

Message ID 20241101081249.27834-1-mingyen.hsieh@mediatek.com (mailing list archive)
State Superseded
Delegated to: Felix Fietkau
Headers show
Series wifi: mt76: mt7925: fix get wrong chip cap from incorrect pointer | expand

Commit Message

Mingyen Hsieh Nov. 1, 2024, 8:12 a.m. UTC
From: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>

Use tlv instead of skb, because using skb will get invalid data
with wrong offset.

Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
---
 drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ping-Ke Shih Nov. 4, 2024, 12:36 a.m. UTC | #1
Mingyen Hsieh <mingyen.hsieh@mediatek.com> wrote:
> 
> Use tlv instead of skb, because using skb will get invalid data
> with wrong offset.
> 
> Fixes: 86c051f2c418 ("wifi: mt76: mt7925: enabling MLO when the firmware supports it")
> Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
> ---
>  drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> index 0c2a2337c313..9b6aff463063 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
> @@ -823,7 +823,7 @@ mt7925_mcu_get_nic_capability(struct mt792x_dev *dev)
>                         mt7925_mcu_parse_phy_cap(dev, tlv->data);
>                         break;
>                 case MT_NIC_CAP_CHIP_CAP:
> -                       memcpy(&dev->phy.chip_cap, (void *)skb->data, sizeof(u64));
> +                       memcpy(&dev->phy.chip_cap, (void *)tlv->data, sizeof(u64));

chip_cap is u64 in CPU order, and tlv->data coming from firmware should be 
little-endian order. So using le64_to_cpu() might be more suitable: 

dev->phy.chip_cap = le64_to_cpu((__le64 *)tlv->data);


>                         break;
>                 case MT_NIC_CAP_EML_CAP:
>                         mt7925_mcu_parse_eml_cap(dev, tlv->data);
> --
> 2.45.2
>
diff mbox series

Patch

diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
index 0c2a2337c313..9b6aff463063 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
@@ -823,7 +823,7 @@  mt7925_mcu_get_nic_capability(struct mt792x_dev *dev)
 			mt7925_mcu_parse_phy_cap(dev, tlv->data);
 			break;
 		case MT_NIC_CAP_CHIP_CAP:
-			memcpy(&dev->phy.chip_cap, (void *)skb->data, sizeof(u64));
+			memcpy(&dev->phy.chip_cap, (void *)tlv->data, sizeof(u64));
 			break;
 		case MT_NIC_CAP_EML_CAP:
 			mt7925_mcu_parse_eml_cap(dev, tlv->data);