2021-09-18 09:54:02

by Sean Wang

[permalink] [raw]
Subject: [PATCH v2 08/16] mt76: mt7921: make all event parser reusable between mt7921s and mt7921e

From: Sean Wang <[email protected]>

The longer event such as the event for mcu_get_nic_capability would hold
the data in paged fragment skb for the SDIO device so we turn the skb to
be linearized skb before accessing it to reuse the same event parser
betweem mt7921s and mt7921e.

Tested-by: Deren Wu <[email protected]>
Signed-off-by: Sean Wang <[email protected]>
---
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
index 866b8797f16e..863781895652 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
@@ -456,7 +456,14 @@ mt7921_mcu_rx_unsolicited_event(struct mt7921_dev *dev, struct sk_buff *skb)

void mt7921_mcu_rx_event(struct mt7921_dev *dev, struct sk_buff *skb)
{
- struct mt7921_mcu_rxd *rxd = (struct mt7921_mcu_rxd *)skb->data;
+ struct mt7921_mcu_rxd *rxd;
+ int ret;
+
+ ret = skb_linearize(skb);
+ if (ret)
+ return;
+
+ rxd = (struct mt7921_mcu_rxd *)skb->data;

if (rxd->eid == 0x6) {
mt76_mcu_rx_event(&dev->mt76, skb);
--
2.25.1


2021-09-18 18:30:07

by Lorenzo Bianconi

[permalink] [raw]
Subject: Re: [PATCH v2 08/16] mt76: mt7921: make all event parser reusable between mt7921s and mt7921e

> From: Sean Wang <[email protected]>
>
> The longer event such as the event for mcu_get_nic_capability would hold
> the data in paged fragment skb for the SDIO device so we turn the skb to
> be linearized skb before accessing it to reuse the same event parser
> betweem mt7921s and mt7921e.
>
> Tested-by: Deren Wu <[email protected]>
> Signed-off-by: Sean Wang <[email protected]>
> ---
> drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
> index 866b8797f16e..863781895652 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
> @@ -456,7 +456,14 @@ mt7921_mcu_rx_unsolicited_event(struct mt7921_dev *dev, struct sk_buff *skb)
>
> void mt7921_mcu_rx_event(struct mt7921_dev *dev, struct sk_buff *skb)
> {
> - struct mt7921_mcu_rxd *rxd = (struct mt7921_mcu_rxd *)skb->data;
> + struct mt7921_mcu_rxd *rxd;
> + int ret;
> +
> + ret = skb_linearize(skb);

nit: we do not need ret variable here:

if (skb_linearize(skb))
return;

> + if (ret)
> + return;
> +
> + rxd = (struct mt7921_mcu_rxd *)skb->data;
>
> if (rxd->eid == 0x6) {
> mt76_mcu_rx_event(&dev->mt76, skb);
> --
> 2.25.1
>


Attachments:
(No filename) (1.37 kB)
signature.asc (235.00 B)
Download all attachments