Message ID | 1496712676-11862-1-git-send-email-jcmvbkbc@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On 2017-06-06 at 03:31:16 +0200, Max Filippov <jcmvbkbc@gmail.com> wrote: > 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. > > Cc: stable@vger.kernel.org > Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Tobias Klauser <tklauser@distanz.ch>
On 06/05/2017 06:31 PM, Max Filippov wrote: > 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. > > Cc: stable@vger.kernel.org > Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Fixes: a1702857724f ("net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.") Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
From: Max Filippov <jcmvbkbc@gmail.com> Date: Mon, 5 Jun 2017 18:31:16 -0700 > 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. > > Cc: stable@vger.kernel.org > Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Applied and queued up for -stable.
diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c index 23d8274..4f33660 100644 --- a/drivers/net/ethernet/ethoc.c +++ b/drivers/net/ethernet/ethoc.c @@ -739,6 +739,8 @@ static int ethoc_open(struct net_device *dev) if (ret) return ret; + napi_enable(&priv->napi); + ethoc_init_ring(priv, dev->mem_start); ethoc_reset(priv); @@ -754,7 +756,6 @@ static int ethoc_open(struct net_device *dev) priv->old_duplex = -1; phy_start(dev->phydev); - napi_enable(&priv->napi); if (netif_msg_ifup(priv)) { dev_info(&dev->dev, "I/O: %08lx Memory: %08lx-%08lx\n",
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. Cc: stable@vger.kernel.org Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> --- drivers/net/ethernet/ethoc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)