Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2295889ybl; Thu, 19 Dec 2019 11:09:47 -0800 (PST) X-Google-Smtp-Source: APXvYqzDUAe/LFlINKMz/hqsVM8UeqriPr6YJRItdFRujP7y0ndSenzweGfh1QK2g4U2zYrJ229+ X-Received: by 2002:a05:6830:147:: with SMTP id j7mr10586945otp.44.1576782587432; Thu, 19 Dec 2019 11:09:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576782587; cv=none; d=google.com; s=arc-20160816; b=nZ+6Y9/rS8aF7ALA6/DgLa6wVjjlV6MjsNGCy/CPcbea+Zg1ctSu/FSs3rS9Mlg/6Y KiDL25lCubQHRz4bNppLKd5ud25pGMznNrCSgz2s8R0rGowlHA/QxrCFefnbXdQN4QrH HJ53G+/ApBQdjhkBu00UtqC5KGoUHidGYIrir5OLeqwGTIJojJz3xTqnhSwaH4ahZJZf RSXILd59WCO0LdWbacJ42oDzb/SDYxKigF4RV0T4ttALXoiBRKMjyZXWaiGfxK+1uWgB pkerKfh8sZ5668OrKGPq75PL5YDsFQn60d7qTH/BXg8IsAL2c1DyRSKj0sN2ntgOrgRh ajZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Wyl2EXafAAIXpHSL9byhuAzcyascWyiSI05TZnWRMSg=; b=Uz6vPPUzJxZoazo5akYSlt0BwAjFX3hxuN7CXRquyu/008nlapvS/nGH86DejNhMey muVewHGlqL6nKsps0PeQapqB1mxzb0w18R+N0sP6VwAuy9sMtT4dxm/UEKSA7W/dEVJ2 znbn4oH/mpyaf8vTsOzJsSNr8GAp49iFQsbyoWy/7/p7wEwQMCiaWkOYqvKqfp9JfJjh uKHn5ipn6BLbkuLHJt0Rrg2pgl/fejA5EDCyPYT2smnS+3AsVuwDi08H5E4vV31Ks8SN 1ouY3CcMpise1PCJMNIBP3gF5rglERyNrGTAJN+qFoZcTHBec8ke2Wju4InDG42rSLGV e8iA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2hZO8cii; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m26si3706771otn.307.2019.12.19.11.09.36; Thu, 19 Dec 2019 11:09:47 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2hZO8cii; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727221AbfLSSln (ORCPT + 99 others); Thu, 19 Dec 2019 13:41:43 -0500 Received: from mail.kernel.org ([198.145.29.99]:60644 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728090AbfLSSlf (ORCPT ); Thu, 19 Dec 2019 13:41:35 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7CE2324672; Thu, 19 Dec 2019 18:41:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1576780895; bh=+IO7bBmFdYv0WZ7BaHdGbFpLUu0k8PARUHVTAujg88k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2hZO8ciieOMAikEK9NiWgP3v+z8kkVHYRoLNieB6+6xPNwA/y7MmP1GFZy1ocMwTX 2YBu78CVN0icYsD0uyxh1shiB3SSS+Qn9I8Owd0d011XSFKkn/Yaspa7Zljxyz5M9B Z5MHAQToudHDwapZTnoYTi6WgpDUvVdrCnpNiD8k= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Aaro Koskinen , "David S. Miller" , Aviraj CJ Subject: [PATCH 4.4 162/162] net: stmmac: dont stop NAPI processing when dropping a packet Date: Thu, 19 Dec 2019 19:34:30 +0100 Message-Id: <20191219183217.626538726@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191219183150.477687052@linuxfoundation.org> References: <20191219183150.477687052@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Aaro Koskinen commit 07b3975352374c3f5ebb4a42ef0b253fe370542d upstream. Currently, if we drop a packet, we exit from NAPI loop before the budget is consumed. In some situations this will make the RX processing stall e.g. when flood pinging the system with oversized packets, as the errorneous packets are not dropped efficiently. If we drop a packet, we should just continue to the next one as long as the budget allows. Signed-off-by: Aaro Koskinen Signed-off-by: David S. Miller [acj: backport v4.4 -stable -adjust context] Signed-off-by: Aviraj CJ Signed-off-by: Greg Kroah-Hartman --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -2176,8 +2176,7 @@ static inline void stmmac_rx_refill(stru static int stmmac_rx(struct stmmac_priv *priv, int limit) { unsigned int rxsize = priv->dma_rx_size; - unsigned int entry = priv->cur_rx % rxsize; - unsigned int next_entry; + unsigned int next_entry = priv->cur_rx % rxsize; unsigned int count = 0; int coe = priv->hw->rx_csum; @@ -2189,9 +2188,11 @@ static int stmmac_rx(struct stmmac_priv stmmac_display_ring((void *)priv->dma_rx, rxsize, 0); } while (count < limit) { - int status; + int status, entry; struct dma_desc *p; + entry = next_entry; + if (priv->extend_desc) p = (struct dma_desc *)(priv->dma_erx + entry); else @@ -2239,7 +2240,7 @@ static int stmmac_rx(struct stmmac_priv /* check if frame_len fits the preallocated memory */ if (frame_len > priv->dma_buf_sz) { priv->dev->stats.rx_length_errors++; - break; + continue; } /* ACS is set; GMAC core strips PAD/FCS for IEEE 802.3 @@ -2260,7 +2261,7 @@ static int stmmac_rx(struct stmmac_priv pr_err("%s: Inconsistent Rx descriptor chain\n", priv->dev->name); priv->dev->stats.rx_dropped++; - break; + continue; } prefetch(skb->data - NET_IP_ALIGN); priv->rx_skbuff[entry] = NULL; @@ -2291,7 +2292,6 @@ static int stmmac_rx(struct stmmac_priv priv->dev->stats.rx_packets++; priv->dev->stats.rx_bytes += frame_len; } - entry = next_entry; } stmmac_rx_refill(priv);