Commit 41d36887 authored by Max Filippov's avatar Max Filippov Committed by Ben Hutchings

net: ethoc: enable NAPI before poll may be scheduled

commit d220b942 upstream.

ethoc_reset enables device interrupts, ethoc_interrupt may schedule a
NAPI poll before NAPI is enabled in the ethoc_open, which results in
device being unable to send or receive anything until it's closed and
reopened. In case the device is flooded with ingress packets it may be
unable to recover at all.
Move napi_enable above ethoc_reset in the ethoc_open to fix that.

Fixes: a1702857 ("net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.")
Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
Reviewed-by: default avatarTobias Klauser <tklauser@distanz.ch>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent ef67a1c6
...@@ -706,6 +706,8 @@ static int ethoc_open(struct net_device *dev) ...@@ -706,6 +706,8 @@ static int ethoc_open(struct net_device *dev)
if (ret) if (ret)
return ret; return ret;
napi_enable(&priv->napi);
ethoc_init_ring(priv, dev->mem_start); ethoc_init_ring(priv, dev->mem_start);
ethoc_reset(priv); ethoc_reset(priv);
...@@ -718,7 +720,6 @@ static int ethoc_open(struct net_device *dev) ...@@ -718,7 +720,6 @@ static int ethoc_open(struct net_device *dev)
} }
phy_start(priv->phy); phy_start(priv->phy);
napi_enable(&priv->napi);
if (netif_msg_ifup(priv)) { if (netif_msg_ifup(priv)) {
dev_info(&dev->dev, "I/O: %08lx Memory: %08lx-%08lx\n", dev_info(&dev->dev, "I/O: %08lx Memory: %08lx-%08lx\n",
......
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