1 From 663878cede037eaf6705741e81e671c833dbbf12 Mon Sep 17 00:00:00 2001
2 From: Florian Fainelli <f.fainelli@gmail.com>
3 Date: Fri, 15 Feb 2019 12:16:51 -0800
4 Subject: net: systemport: Fix reception of BPDUs
6 [ Upstream commit a40061ea2e39494104602b3048751341bda374a1 ]
8 SYSTEMPORT has its RXCHK parser block that attempts to validate the
9 packet structures, unfortunately setting the L2 header check bit will
10 cause Bridge PDUs (BPDUs) to be incorrectly rejected because they look
11 like LLC/SNAP packets with a non-IPv4 or non-IPv6 Ethernet Type.
13 Fixes: 4e8aedfe78c7 ("net: systemport: Turn on offloads by default")
14 Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
15 Signed-off-by: David S. Miller <davem@davemloft.net>
16 Signed-off-by: Sasha Levin <sashal@kernel.org>
18 drivers/net/ethernet/broadcom/bcmsysport.c | 4 ++++
19 1 file changed, 4 insertions(+)
21 diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
22 index 143b9a384af8..53b3c1a5851c 100644
23 --- a/drivers/net/ethernet/broadcom/bcmsysport.c
24 +++ b/drivers/net/ethernet/broadcom/bcmsysport.c
25 @@ -126,6 +126,10 @@ static int bcm_sysport_set_rx_csum(struct net_device *dev,
27 priv->rx_chk_en = !!(wanted & NETIF_F_RXCSUM);
28 reg = rxchk_readl(priv, RXCHK_CONTROL);
29 + /* Clear L2 header checks, which would prevent BPDUs
30 + * from being received.
32 + reg &= ~RXCHK_L2_HDR_DIS;