aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Fainelli <f.fainelli@gmail.com>2018-07-11 05:47:58 -0400
committerDavid S. Miller <davem@davemloft.net>2018-07-12 17:47:47 -0400
commit9e3bff923913729d76d87f0015848ee7b8ff7083 (patch)
treebd61f6707025750d1944fb1eae95974d56fac56c
parent70b7ff130224d2d22a158c7f4aa5e7fb1c95949d (diff)
net: systemport: Fix CRC forwarding check for SYSTEMPORT Lite
SYSTEMPORT Lite reversed the logic compared to SYSTEMPORT, the GIB_FCS_STRIP bit is set when the Ethernet FCS is stripped, and that bit is not set by default. Fix the logic such that we properly check whether that bit is set or not and we don't forward an extra 4 bytes to the network stack. Fixes: 44a4524c54af ("net: systemport: Add support for SYSTEMPORT Lite") Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/broadcom/bcmsysport.c4
-rw-r--r--drivers/net/ethernet/broadcom/bcmsysport.h3
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index d5fca2e5a9bc..a1f60f89e059 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -1946,8 +1946,8 @@ static int bcm_sysport_open(struct net_device *dev)
1946 if (!priv->is_lite) 1946 if (!priv->is_lite)
1947 priv->crc_fwd = !!(umac_readl(priv, UMAC_CMD) & CMD_CRC_FWD); 1947 priv->crc_fwd = !!(umac_readl(priv, UMAC_CMD) & CMD_CRC_FWD);
1948 else 1948 else
1949 priv->crc_fwd = !!(gib_readl(priv, GIB_CONTROL) & 1949 priv->crc_fwd = !((gib_readl(priv, GIB_CONTROL) &
1950 GIB_FCS_STRIP); 1950 GIB_FCS_STRIP) >> GIB_FCS_STRIP_SHIFT);
1951 1951
1952 phydev = of_phy_connect(dev, priv->phy_dn, bcm_sysport_adj_link, 1952 phydev = of_phy_connect(dev, priv->phy_dn, bcm_sysport_adj_link,
1953 0, priv->phy_interface); 1953 0, priv->phy_interface);
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.h b/drivers/net/ethernet/broadcom/bcmsysport.h
index d6e5d0cbf3a3..cf440b91fd04 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.h
+++ b/drivers/net/ethernet/broadcom/bcmsysport.h
@@ -278,7 +278,8 @@ struct bcm_rsb {
278#define GIB_GTX_CLK_EXT_CLK (0 << GIB_GTX_CLK_SEL_SHIFT) 278#define GIB_GTX_CLK_EXT_CLK (0 << GIB_GTX_CLK_SEL_SHIFT)
279#define GIB_GTX_CLK_125MHZ (1 << GIB_GTX_CLK_SEL_SHIFT) 279#define GIB_GTX_CLK_125MHZ (1 << GIB_GTX_CLK_SEL_SHIFT)
280#define GIB_GTX_CLK_250MHZ (2 << GIB_GTX_CLK_SEL_SHIFT) 280#define GIB_GTX_CLK_250MHZ (2 << GIB_GTX_CLK_SEL_SHIFT)
281#define GIB_FCS_STRIP (1 << 6) 281#define GIB_FCS_STRIP_SHIFT 6
282#define GIB_FCS_STRIP (1 << GIB_FCS_STRIP_SHIFT)
282#define GIB_LCL_LOOP_EN (1 << 7) 283#define GIB_LCL_LOOP_EN (1 << 7)
283#define GIB_LCL_LOOP_TXEN (1 << 8) 284#define GIB_LCL_LOOP_TXEN (1 << 8)
284#define GIB_RMT_LOOP_EN (1 << 9) 285#define GIB_RMT_LOOP_EN (1 << 9)