b1fda5eeec2510b34eb12222bd72838575bace14
[openwrt/openwrt.git] / target / linux / mediatek / patches-5.4 / 0400-eth-fix-rx-vlan-hw-offload.patch
1 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
2 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
3 @@ -1306,7 +1306,7 @@ static int mtk_poll_rx(struct napi_struc
4 skb->protocol = eth_type_trans(skb, netdev);
5
6 if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
7 - RX_DMA_VID(trxd.rxd3))
8 + (trxd.rxd2 & RX_DMA_VTAG))
9 __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
10 RX_DMA_VID(trxd.rxd3));
11 skb_record_rx_queue(skb, 0);
12 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
13 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
14 @@ -293,6 +293,7 @@
15 #define RX_DMA_LSO BIT(30)
16 #define RX_DMA_PLEN0(_x) (((_x) & 0x3fff) << 16)
17 #define RX_DMA_GET_PLEN0(_x) (((_x) >> 16) & 0x3fff)
18 +#define RX_DMA_VTAG BIT(15)
19
20 /* QDMA descriptor rxd3 */
21 #define RX_DMA_VID(_x) ((_x) & 0xfff)