Received: by 2002:ab2:7041:0:b0:1f4:bcc8:f211 with SMTP id x1csp38214lql; Fri, 12 Apr 2024 03:02:55 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWRyZT9zb0BFZN16p6wd8c0tXw7CsQI+V9qoJ8IHMTvIyaBZWVmitt9jHvgEnJIDZIvWRMmq6CZ/IWkWZEo2bni2oIQ9rp98ewfugxfmg== X-Google-Smtp-Source: AGHT+IFlGpswNr2yQLHuCldxotyyOhe2lkRatl07UWdqqreeUlkEL7IH2VQghE5B7LMd6z62Ug1Q X-Received: by 2002:a17:902:ce85:b0:1e4:b70d:eb72 with SMTP id f5-20020a170902ce8500b001e4b70deb72mr2406097plg.35.1712916174931; Fri, 12 Apr 2024 03:02:54 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712916174; cv=pass; d=google.com; s=arc-20160816; b=faarvTZbUFfnJylFRqVJfO+0gYPT0zaAWCB1kF3n98C+fzTMO5ca5VDxauejDd5mB/ xdPnpVEdt8Ze3TKAcSCtXfe7wdoJ0LGHb+DddjW7TXpTbROoUKHm/X4EPKdh+pNF/FKl JKbtA3TWVjFpCEHyrhHO6SygvoZ8uh0MVvS9JGwxkEWdr/holaAbn7HYBxdyo51SDo8e U8/gNJB8xlC9fFvWDliZ9erkd3x5Jf7OvnxHr+rw8xzvXbKw0gqFPbEsENHXfrhssdeW cY8RYya0jhXhwqKzYr2uAXgWmiATX6rrvsGc9c3izgCkQi8gLYCRGzpgVD8QTrviPcjz nR/A== 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=+ey2wTdbDVRF71lj3JggKXfhDWBknVmhupt5foL6jCI=; fh=DTWwm9RX7fuZ+9MrG0jgaAAB0GzU+sjg57DWXP/tul8=; b=QkWgJSHn4jMJslTTJSLSFHqyk7GyuheRYvrxJ/Iq/GH5s3uK5RfcSRgAi1fZ4NDWrY gb/lgNFV7gAIJkEvfsUovvkX7sKswn54LJliZgBwv4STyzFwdITk8yxCbz6RExYJOelg GegQgm9393kV+JRsi/04I1uEGVFAkhNDXJuvmN/yqrWk3SC9uPXHGNe+JehqJ+gaWqtw 8EMXwAhkSiOvPrAP6Hm9XdLuZOPmdKQ2aSUX6tR7/qN23rM7jhVlrNyHbSbmXPTjxhqY xXsKCK2i6X9DqGjNNaBLQI/M+MRySMu5tsy5Vci5XFv/zKpOtdy9IPFkoiyFUNLHclqT +JEg==; 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-142449-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-142449-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=renesas.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id h9-20020a170902748900b001e299cd96f6si2836734pll.43.2024.04.12.03.02.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 03:02:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-142449-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; 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-142449-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-142449-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 70D152827B0 for ; Fri, 12 Apr 2024 10:01:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0A80953E1A; Fri, 12 Apr 2024 10:01:13 +0000 (UTC) Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DB1D85339D; Fri, 12 Apr 2024 10:01:06 +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=1712916072; cv=none; b=m4y03q926qmKXmXEGxV1PpRTk7urc+RDmT/ruDYApkTWAdYeg4w013TJYVlXuXljGVN6tKmFHcrJzrv6Hb28udZSRC9weZRIUTM50mbC2TZ5tLQLdq+cOuTiPC6i2VXG6tcqoLvY3VoMM/MJ6h+TjvMrllA5i6B3C2C75vZuKpk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712916072; c=relaxed/simple; bh=O6GuO6dL+mnkgBssp6jciU4D4kxvqd84cJa2JEwFgyU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OkjsozrgacrUZandHcov4TZzQGH+qamnrKj8dDVi1klnUSDiVxQ216pMThDyy4xIUal0JV3YVdq+pAGPyc+RLgZb39UGLH0KsxQlh3/cFTTjbc0SJfYvbLWkyQbjmn6xSkEBEAhLrjQg6W1N0/gCme067aHs1QXH8C1ust2OanQ= 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,195,1708354800"; d="scan'208";a="201242335" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 12 Apr 2024 19:01:05 +0900 Received: from renesas-deb12.cephei.uk (unknown [10.226.93.65]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 8642341E0D16; Fri, 12 Apr 2024 19:01:01 +0900 (JST) From: Paul Barker To: Sergey Shtylyov , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Niklas=20S=C3=B6derlund?= 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 v2 1/4] net: ravb: Count packets instead of descriptors in R-Car RX path Date: Fri, 12 Apr 2024 11:00:21 +0100 Message-Id: <20240412100024.2296-2-paul.barker.ct@bp.renesas.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240412100024.2296-1-paul.barker.ct@bp.renesas.com> References: <20240412100024.2296-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-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. Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper") Signed-off-by: Paul Barker Reviewed-by: Sergey Shtylyov --- drivers/net/ethernet/renesas/ravb_main.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index ba01c8cc3c90..70f2900648d4 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -892,29 +892,25 @@ 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; struct sk_buff *skb; dma_addr_t dma_addr; struct timespec64 ts; + int rx_packets = 0; u8 desc_status; u16 pkt_len; int limit; + int i; - 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 +956,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 +991,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