Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp5707301img; Wed, 27 Mar 2019 13:39:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqylyU2W69jyZQYh3P/ZRZM3UP/yaHqpGPZRepTEeoNyDlU7G7QLKoJlW+klmn8X2itCY2du X-Received: by 2002:a62:6306:: with SMTP id x6mr36658146pfb.244.1553719153931; Wed, 27 Mar 2019 13:39:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553719153; cv=none; d=google.com; s=arc-20160816; b=0IAdbAr/9NNUvTqCl/xZoaBz16AhG83Wmo4HwygyZTDAp826g2X5519EZSpY3QGI5l tpBI8EgL0QR5N6vHoz94LxN1QkHn6CqBmQjVpWUnvD4igt2MREG1dXqF2dxRhdZ3eiz1 iyqIBVPLkOhHyDMFTrLnh60qfPj1xaRL/C8v0VQuRnIpinH2Cch4XF99wOFZ9KyoCYkm rJTLtcl4z4sZY8EdHIwONdO5TngoLv3WeZwGUW6oQyntVi56l5SbshY3g33iCwitc7Uj 0ZTuLqZoxZQkKsEC4YzXc9Ujmq3dXWwb0Y4iOLEGmLLwYiXZrNhd+FNtPV1l0whW6i2m G80A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=kbNAJ95g/uc2S3e/T8md6/Z9/iJRePB39ul4/vBZCT0=; b=RKNpRysiPQKmsn/hG6Veib15m/nHas4DTyW6BZgiRMf7ulHW1myyhAMHzHnYNs+P2s zI5nrnSOfPSYRv/j9CSJ2Dw04oJtmZpOflkPybABdHs6v1twWZmD/FToWvI6kDOl2Udr vXNTjGT82hg3IfbWsTNEdA9+m0i1RAtpjgBhdLjiqpLgKt9GsvJ0u6LdiQaryn8jqf// PQDOrtvQkN6VB0GwnIpbvy0tmEsk0/hoUC4UwbKlso66A4s2k/TgwPL3CIKCyklO9uDn abxpez6j/1Q369OwDuFEPYRpaDfN5jaySSBlUwvnEPMS1Ig3m+OxxolZFw57bhwrEOa7 mroQ== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=iki.fi Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a13si6689466pfn.70.2019.03.27.13.38.57; Wed, 27 Mar 2019 13:39:13 -0700 (PDT) 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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=iki.fi Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729020AbfC0Ufy (ORCPT + 99 others); Wed, 27 Mar 2019 16:35:54 -0400 Received: from emh06.mail.saunalahti.fi ([62.142.5.116]:55282 "EHLO emh06.mail.saunalahti.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727834AbfC0Ufx (ORCPT ); Wed, 27 Mar 2019 16:35:53 -0400 Received: from localhost.localdomain (85-76-9-223-nat.elisa-mobile.fi [85.76.9.223]) by emh06.mail.saunalahti.fi (Postfix) with ESMTP id AA78C30096; Wed, 27 Mar 2019 22:35:50 +0200 (EET) From: Aaro Koskinen To: "David S. Miller" , Jose Abreu , Alexandre Torgue , Giuseppe Cavallaro , netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Aaro Koskinen Subject: [PATCH 3/6] net: stmmac: don't stop NAPI processing when dropping a packet Date: Wed, 27 Mar 2019 22:35:37 +0200 Message-Id: <20190327203540.1884-4-aaro.koskinen@iki.fi> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20190327203540.1884-1-aaro.koskinen@iki.fi> References: <20190327203540.1884-1-aaro.koskinen@iki.fi> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Aaro Koskinen 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 --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 392d94cede17..a26e36dbb5df 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -3354,9 +3354,8 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) { struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue]; struct stmmac_channel *ch = &priv->channel[queue]; - unsigned int entry = rx_q->cur_rx; + unsigned int next_entry = rx_q->cur_rx; int coe = priv->hw->rx_csum; - unsigned int next_entry; unsigned int count = 0; bool xmac; @@ -3374,10 +3373,12 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) stmmac_display_ring(priv, rx_head, DMA_RX_SIZE, true); } while (count < limit) { - int status; + int entry, status; struct dma_desc *p; struct dma_desc *np; + entry = next_entry; + if (priv->extend_desc) p = (struct dma_desc *)(rx_q->dma_erx + entry); else @@ -3438,7 +3439,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) "len %d larger than size (%d)\n", 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 @@ -3473,7 +3474,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) dev_warn(priv->device, "packet dropped\n"); priv->dev->stats.rx_dropped++; - break; + continue; } dma_sync_single_for_cpu(priv->device, @@ -3498,7 +3499,7 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) "%s: Inconsistent Rx chain\n", priv->dev->name); priv->dev->stats.rx_dropped++; - break; + continue; } prefetch(skb->data - NET_IP_ALIGN); rx_q->rx_skbuff[entry] = NULL; @@ -3533,7 +3534,6 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) priv->dev->stats.rx_packets++; priv->dev->stats.rx_bytes += frame_len; } - entry = next_entry; } stmmac_rx_refill(priv, queue); -- 2.17.0