lkml.org 
[lkml]   [2021]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next 01/14] net: ethernet: mtk_eth_soc: fix RX VLAN offload
    Date
    From: Felix Fietkau <nbd@nbd.name>

    The VLAN ID in the rx descriptor is only valid if the RX_DMA_VTAG bit is
    set. Fixes frames wrongly marked with VLAN tags.

    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    [Ilya: fix commit message]
    Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
    ---
    drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 +-
    drivers/net/ethernet/mediatek/mtk_eth_soc.h | 1 +
    2 files changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
    index 6b00c12c6c43..b2175ec451ab 100644
    --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
    +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
    @@ -1319,7 +1319,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
    skb->protocol = eth_type_trans(skb, netdev);

    if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
    - RX_DMA_VID(trxd.rxd3))
    + (trxd.rxd2 & RX_DMA_VTAG))
    __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
    RX_DMA_VID(trxd.rxd3));
    skb_record_rx_queue(skb, 0);
    diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
    index 1a6750c08bb9..875e67b41561 100644
    --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
    +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
    @@ -301,6 +301,7 @@
    #define RX_DMA_LSO BIT(30)
    #define RX_DMA_PLEN0(_x) (((_x) & 0x3fff) << 16)
    #define RX_DMA_GET_PLEN0(_x) (((_x) >> 16) & 0x3fff)
    +#define RX_DMA_VTAG BIT(15)

    /* QDMA descriptor rxd3 */
    #define RX_DMA_VID(_x) ((_x) & 0xfff)
    --
    2.31.1
    \
     
     \ /
      Last update: 2021-04-22 06:10    [W:2.321 / U:0.596 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site