From patchwork Tue Jun 6 01:31:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Filippov X-Patchwork-Id: 771589 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3whZ1G4Jqwz9s3s for ; Tue, 6 Jun 2017 11:32:18 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="GAzmjD5Q"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751237AbdFFBbs (ORCPT ); Mon, 5 Jun 2017 21:31:48 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:35105 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751107AbdFFBbr (ORCPT ); Mon, 5 Jun 2017 21:31:47 -0400 Received: by mail-lf0-f67.google.com with SMTP id v20so7846981lfa.2; Mon, 05 Jun 2017 18:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=28c7/dj8cnxe1VhRVHjhBYNcLdgdx+DvrKboLmBpjNY=; b=GAzmjD5QNuyZTKPqJagV75B1ZJUZ+apGiMutbyHScVeGfOTVK4b5KrYD82DZVJf8FW 1EDS2+U4QzT8bAwQvEyuWFELJ5K7wQuNlXEYSlJgOpVegyu10vjoVowo8EDHsyjCElv2 Mn9ZD7YxvFnXUYsUMpCCl1hPTcmmSZyfbmHGWuuhh0bJH3E+XsK7TBumUabQpjY+pB7l /ZK2QroqOsEosMdZ+jCe1GXZnT5TJNZKKiTaSjuzzDPzl0aFpOjUN0ZQ0CdvBeUU/pqL 2Qr8bS1WIjx13fApwpSQC102v31F6rsnicJPPnr0PLrBo70gC6qP0TYs0Ws/vH5buRjI /MYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=28c7/dj8cnxe1VhRVHjhBYNcLdgdx+DvrKboLmBpjNY=; b=StyWLDR18jIrn5n+IQMk0sAK3iph3qjdKwBPjnCK69VoxnBQFT7qoBGte37tFse2jZ TwhV1L5u+WTA21GZUSK9mExyTA9E+oSz7CdgDEBSzPL+doS0168YH/q9hZhXUebmBNup yvmi1Lu2M9G+hyoA979DPR3wRKmNL+5qXxPUthZSM5V2obRSY5P3IL2dCn4KZ9/16c/n vAS1UEjmZKyE7qY3dlIcrPJjf3nIRZT1ypBTnCuhPp5hrrRyvLNW1NHyMWw5JhCiGRwj uezRT6+D00crx8ifuKbOHCQ05akKpc6AGG67uHkMfupMH+OJGlQXV9P5z0wH06m4qpql 5eqg== X-Gm-Message-State: AODbwcCXgzexzhA60Go4vBKWJwu1sBeXXntjSh3G8nusR7e00cH6Fc2E belhRisBuo89FLm/ X-Received: by 10.25.169.213 with SMTP id s204mr6784315lfe.119.1496712705409; Mon, 05 Jun 2017 18:31:45 -0700 (PDT) Received: from octofox.metropolis ([5.19.183.212]) by smtp.gmail.com with ESMTPSA id l142sm2122446lfl.25.2017.06.05.18.31.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 05 Jun 2017 18:31:44 -0700 (PDT) From: Max Filippov To: netdev@vger.kernel.org Cc: "David S. Miller" , Florian Fainelli , Thierry Reding , Tobias Klauser , Max Filippov , stable@vger.kernel.org Subject: [PATCH] net: ethoc: enable NAPI before poll may be scheduled Date: Mon, 5 Jun 2017 18:31:16 -0700 Message-Id: <1496712676-11862-1-git-send-email-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 Reviewed-by: Tobias Klauser Reviewed-by: Florian Fainelli --- drivers/net/ethernet/ethoc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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",