diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2014-08-28 15:11:03 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-09-01 18:11:47 -0700 |
commit | d09d3038a336cbab6bde616ce44266c36c214f81 (patch) | |
tree | 62875b85916231a50302f738d3b7d9ab17d98f9a /drivers/net/ethernet/broadcom/bcmsysport.c | |
parent | afb84b6261841f8ab387e267e748236fa805bea0 (diff) | |
download | op-kernel-dev-d09d3038a336cbab6bde616ce44266c36c214f81.zip op-kernel-dev-d09d3038a336cbab6bde616ce44266c36c214f81.tar.gz |
net: systemport: tell RXCHK if we are using Broadcom tags
When Broadcom tags are enabled, e.g: when interfaced to an Ethernet
switch, make sure that we tell the RXCHK engine that it should be
expecting a 4-bytes Broadcom tag after the Ethernet MAC Source Address.
Use netdev_uses_dsa() to check for that condition since that will tell
us if a switch is attached to our network interface.
Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bcmsysport.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bcmsysport.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c index 6f4e186..8f91de1 100644 --- a/drivers/net/ethernet/broadcom/bcmsysport.c +++ b/drivers/net/ethernet/broadcom/bcmsysport.c @@ -139,6 +139,15 @@ static int bcm_sysport_set_rx_csum(struct net_device *dev, else reg &= ~RXCHK_SKIP_FCS; + /* If Broadcom tags are enabled (e.g: using a switch), make + * sure we tell the RXCHK hardware to expect a 4-bytes Broadcom + * tag after the Ethernet MAC Source Address. + */ + if (netdev_uses_dsa(dev)) + reg |= RXCHK_BRCM_TAG_EN; + else + reg &= ~RXCHK_BRCM_TAG_EN; + rxchk_writel(priv, reg, RXCHK_CONTROL); return 0; |