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 |
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 --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);