Received: by 2002:ab2:69cc:0:b0:1f4:be93:e15a with SMTP id n12csp2010188lqp; Tue, 16 Apr 2024 05:04:05 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUlsv9cZBOiGrNrUECBjtEQP04DW8yyOqLmayJp/amDxyX6IOokj9+qYsOKxU0mNE7UFScgf1ZbOoCiNnNkX6/hk/QyfX+nAn1bNHWXLg== X-Google-Smtp-Source: AGHT+IFhhZZ42jfT5g2QGKJBB8TG8X0Uom6st6ZSljXOloLlF1A4VUfnRoc6mfgTKD/NV3943C2i X-Received: by 2002:a05:6870:1616:b0:22e:c21c:c14d with SMTP id b22-20020a056870161600b0022ec21cc14dmr14893300oae.53.1713269045495; Tue, 16 Apr 2024 05:04:05 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713269045; cv=pass; d=google.com; s=arc-20160816; b=hJy8RTz60b+tHUF/czxg3TcZ+KGQT/v2Y0MlQ67cfZssvsh4EklGloYSgN93xUp7dJ /b7b2aSl4u629r9oR3zjvA1mWwhmhBWoYM8yOVZAADi9F7R3jSk2NEx/2vvkwq9UJhDY 1gwHi4U1K7w4DmmRvRYu1WUKMcdo45RYLIikIzkNzZpjUeMQ3O21Y8LRjREL1Nm0nq1x XPJqqd0vfuxn5LBcKrze+6e4n5UfkT4jF5g41NOIVC8+5RSLEVbfQtqjbB2mgWKvRS23 ULC84QIiQXEk2oJQ//jQIz4EXMNIBlqXKDfVF7pCRkF40Wvak2IZp7QWudoJJBdTepJ4 Ow4A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=kuQOLyN833VzrCL4pxflU3X17gaWBchbmFGZ3oAm6DE=; fh=iDCzsdFwsWJFQNkU5jtQEScRkZQmxU6Yvae2ZkYJQ3M=; b=m4DmIu8tIN6zyXdeZCbKzGmBsGNmagW+PQ+0WRXSH9R0fAnS4sdjCYuyZAq+uE5tyn NDYNV8kAZaA22JPuAKeX/eUnMtQNv5kBPwrjl0668fxH7gCrJ3YFypXHWWBN9Zp6lPfn tcw3oVY3KbiQmDpImeoSTUesuY9bxFa1cJHX78w6ETAnwSGeECJUgRbvp3lxnet/11Vv nF2ZJMi26oRnqeooL33gL6kCD0KJ/8yrnT2Cgoo3xBLLACHhLLyipgCMoOoJUcUoG+bd mY5bPhXps56UhRvInDK8QiNENpZx8b0+CHb//1Ma4u8gdU2TTR2CtXvCPxpxYXw+rulP nc4A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=bp.renesas.com dmarc=pass fromdomain=bp.renesas.com); spf=pass (google.com: domain of linux-kernel+bounces-146740-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-146740-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id o19-20020a05622a139300b00435ecc53c4csi12286561qtk.531.2024.04.16.05.04.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Apr 2024 05:04:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-146740-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=bp.renesas.com dmarc=pass fromdomain=bp.renesas.com); spf=pass (google.com: domain of linux-kernel+bounces-146740-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-146740-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3AB161C212A2 for ; Tue, 16 Apr 2024 12:04:05 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6A20C12AAE4; Tue, 16 Apr 2024 12:03:45 +0000 (UTC) Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D214312A163; Tue, 16 Apr 2024 12:03:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713269024; cv=none; b=N7hS7fWonVIcgD6cGPIvFZ9SoU1dzMhVRcvSvVfi0/bvklFSEE1CGusoDno3+UU3+yqLDGGUFsQ5qRy74XNtBGFM6M8xNYM0HDNwyhmMYiFfHE66SvBVH2z/Q+jyRpjbyZ5APiVIIedD5aTjJrx4yyD1STbxcy+I57gTjICS8yY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713269024; c=relaxed/simple; bh=rN+VTapyrFesE5ziZd1kIa7UZiklbkDypdkDabD7ipU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=LXpMOKLvoLZks7GqJ5fFJvG4LRdakDto3DYQ3NJGSJc4iNt10YwSzU4j2AruqWjkw6+5pQyO/1a+GDRb6tN+J2LYn1sIJdtfP8gQ5ZMar0L1FWGei3194JX3gzkdG/EoMW/lc/U88OwMvCqw0cdFKN70DYOWGxBJmQM4f4USNUg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-IronPort-AV: E=Sophos;i="6.07,205,1708354800"; d="scan'208";a="201616920" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 16 Apr 2024 21:03:33 +0900 Received: from renesas-deb12.cephei.uk (unknown [10.226.93.86]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id E0D6B400C44B; Tue, 16 Apr 2024 21:03:28 +0900 (JST) From: Paul Barker To: Sergey Shtylyov , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Niklas=20S=C3=B6derlund?= , Geert Uytterhoeven Cc: Paul Barker , Claudiu Beznea , Biju Das , YueHaibing , netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [net PATCH v3 1/4] net: ravb: Count packets instead of descriptors in R-Car RX path Date: Tue, 16 Apr 2024 13:02:51 +0100 Message-Id: <20240416120254.2620-2-paul.barker.ct@bp.renesas.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240416120254.2620-1-paul.barker.ct@bp.renesas.com> References: <20240416120254.2620-1-paul.barker.ct@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The units of "work done" in the RX path should be packets instead of descriptors. Descriptors which are used by the hardware to record error conditions or are empty in the case of a DMA mapping error should not count towards our RX work budget. Also make the limit variable unsigned as it can never be negative. Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper") Signed-off-by: Paul Barker Reviewed-by: Sergey Shtylyov Reviewed-by: Niklas Söderlund --- Changes v2->v3: * Use unsigned int for `limit` and `i` variables. * Add Niklas' Reviewed-by tag. Changes v1->v2: * Add Sergey's Reviewed-by tag. drivers/net/ethernet/renesas/ravb_main.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index ba01c8cc3c90..7d231d011bff 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -892,29 +892,24 @@ static bool ravb_rx_rcar(struct net_device *ndev, int *quota, int q) struct ravb_private *priv = netdev_priv(ndev); const struct ravb_hw_info *info = priv->info; int entry = priv->cur_rx[q] % priv->num_rx_ring[q]; - int boguscnt = (priv->dirty_rx[q] + priv->num_rx_ring[q]) - - priv->cur_rx[q]; struct net_device_stats *stats = &priv->stats[q]; struct ravb_ex_rx_desc *desc; + unsigned int limit, i; struct sk_buff *skb; dma_addr_t dma_addr; struct timespec64 ts; + int rx_packets = 0; u8 desc_status; u16 pkt_len; - int limit; - boguscnt = min(boguscnt, *quota); - limit = boguscnt; + limit = priv->dirty_rx[q] + priv->num_rx_ring[q] - priv->cur_rx[q]; desc = &priv->rx_ring[q].ex_desc[entry]; - while (desc->die_dt != DT_FEMPTY) { + for (i = 0; i < limit && rx_packets < *quota && desc->die_dt != DT_FEMPTY; i++) { /* Descriptor type must be checked before all other reads */ dma_rmb(); desc_status = desc->msc; pkt_len = le16_to_cpu(desc->ds_cc) & RX_DS; - if (--boguscnt < 0) - break; - /* We use 0-byte descriptors to mark the DMA mapping errors */ if (!pkt_len) continue; @@ -960,7 +955,7 @@ static bool ravb_rx_rcar(struct net_device *ndev, int *quota, int q) if (ndev->features & NETIF_F_RXCSUM) ravb_rx_csum(skb); napi_gro_receive(&priv->napi[q], skb); - stats->rx_packets++; + rx_packets++; stats->rx_bytes += pkt_len; } @@ -995,9 +990,9 @@ static bool ravb_rx_rcar(struct net_device *ndev, int *quota, int q) desc->die_dt = DT_FEMPTY; } - *quota -= limit - (++boguscnt); - - return boguscnt <= 0; + stats->rx_packets += rx_packets; + *quota -= rx_packets; + return *quota == 0; } /* Packet receive function for Ethernet AVB */ -- 2.39.2