Commit 9ffa1fca authored by David S. Miller's avatar David S. Miller

Merge branch 'systemport-net'

Florian Fainelli says:

====================
net: systemport: RX path and suspend fixes

These two patches fix a race condition where we have our RX interrupts
enabled, but not NAPI for the RX path, and the second patch fixes an
issue for packets stuck in RX fifo during a suspend/resume cycle.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents ebcf34f3 704d33e7
...@@ -1397,6 +1397,9 @@ static void bcm_sysport_netif_start(struct net_device *dev) ...@@ -1397,6 +1397,9 @@ static void bcm_sysport_netif_start(struct net_device *dev)
/* Enable NAPI */ /* Enable NAPI */
napi_enable(&priv->napi); napi_enable(&priv->napi);
/* Enable RX interrupt and TX ring full interrupt */
intrl2_0_mask_clear(priv, INTRL2_0_RDMA_MBDONE | INTRL2_0_TX_RING_FULL);
phy_start(priv->phydev); phy_start(priv->phydev);
/* Enable TX interrupts for the 32 TXQs */ /* Enable TX interrupts for the 32 TXQs */
...@@ -1499,9 +1502,6 @@ static int bcm_sysport_open(struct net_device *dev) ...@@ -1499,9 +1502,6 @@ static int bcm_sysport_open(struct net_device *dev)
if (ret) if (ret)
goto out_free_rx_ring; goto out_free_rx_ring;
/* Enable RX interrupt and TX ring full interrupt */
intrl2_0_mask_clear(priv, INTRL2_0_RDMA_MBDONE | INTRL2_0_TX_RING_FULL);
/* Turn on TDMA */ /* Turn on TDMA */
ret = tdma_enable_set(priv, 1); ret = tdma_enable_set(priv, 1);
if (ret) if (ret)
...@@ -1858,6 +1858,8 @@ static int bcm_sysport_resume(struct device *d) ...@@ -1858,6 +1858,8 @@ static int bcm_sysport_resume(struct device *d)
if (!netif_running(dev)) if (!netif_running(dev))
return 0; return 0;
umac_reset(priv);
/* We may have been suspended and never received a WOL event that /* We may have been suspended and never received a WOL event that
* would turn off MPD detection, take care of that now * would turn off MPD detection, take care of that now
*/ */
...@@ -1885,9 +1887,6 @@ static int bcm_sysport_resume(struct device *d) ...@@ -1885,9 +1887,6 @@ static int bcm_sysport_resume(struct device *d)
netif_device_attach(dev); netif_device_attach(dev);
/* Enable RX interrupt and TX ring full interrupt */
intrl2_0_mask_clear(priv, INTRL2_0_RDMA_MBDONE | INTRL2_0_TX_RING_FULL);
/* RX pipe enable */ /* RX pipe enable */
topctrl_writel(priv, 0, RX_FLUSH_CNTL); topctrl_writel(priv, 0, RX_FLUSH_CNTL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment