| From 32301185df8fda5db88cfdd504774d7f537cde2a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 22 Apr 2021 22:20:54 -0700 |
| Subject: net: ethernet: mtk_eth_soc: fix RX VLAN offload |
| |
| From: Felix Fietkau <nbd@nbd.name> |
| |
| [ Upstream commit 3f57d8c40fea9b20543cab4da12f4680d2ef182c ] |
| |
| 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> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 6d2d60675ffd..d930fcda9c3b 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 454cfcd465fd..73ce1f0f307a 100644 |
| --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h |
| +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h |
| @@ -295,6 +295,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.30.2 |
| |