Received: by 2002:ab2:7903:0:b0:1fb:b500:807b with SMTP id a3csp1422792lqj; Tue, 4 Jun 2024 00:29:57 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUd5ou9LwvXCA2ws0qKMpUdVEsbGFdel49m5YfccZKsW1/MGXsvYbFsIaLFJfTEC1m+mMyM2DbrBkJEDUMNt8RJBZJWSsqbdDSQSV2OJQ== X-Google-Smtp-Source: AGHT+IFapzwwZ2s7bMuNWoRxBxNysLYepagQzMZiHTanQhqKnZ9xl5bk6JQ5oqjyKmaDGDaOl8Dq X-Received: by 2002:ac8:5d8c:0:b0:43d:f99a:3f91 with SMTP id d75a77b69052e-43ff550b57amr153044531cf.65.1717486197633; Tue, 04 Jun 2024 00:29:57 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717486197; cv=pass; d=google.com; s=arc-20160816; b=ts5Rhf1ljLKzSrmpQAeFhp09rwIxxh9hwTeD33OaacgKUk+vT63hJOslH0IEngdLUj 0SeECZtp4fGdNB4dgCsjORARJwburR9VjOSnkb8uVbgvitxe3+h6gliJIgE9jLjysPaI A6NkGFqBPx4guFkIk4qkRpq3uOcqWWvos2Z6NulTL/NRjjPB0YtM2GeBcrQbFp6UjHoU wpW7PA2XwpuMN2oaZAwZLJFJgUJYer2PMLKMXXAa/dRWBnU3oI/6Qs2ZHYog8TguBZYu SQXA43s++OZWOkYog+sfuwa7dlOvuj/iSPgoDdQOsOo/Nu+gJsCJstvwoUe801SNk4EE qBnw== 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=tJF7Mg4ushpOIgzXLWeeoNBPBihfjUqYS1falgZGdro=; fh=cXKldWdygt6OvRh95xLWtvOg/a1bY7Hjo06mK/L4two=; b=ApXjWSjQvtZlZRvnQ1qogUua6DbPcx9Rz62Na9KxlnKXfiNEmuQ5QzVrgA3xv82Fzz rx9tvKuuL5A307OPu+5w8il45SugnEXJNaBTNqlu8mbdoXfyPuas+SIFcGxy5hSfgPW1 Qdf1MK3gjmfWixvELqOuuaHZXZDR5NE+ai2kMg7MFe0xnPzZm2H/9YWhMQa7za8XjnAB 6XmnoUFt3HMxP5ttdlH6m7v6VOoa+rLusASBjw2PYZgEa/6xqlkYt8laNSa2CfJOgddO T8Us4eqfjQ4zYYTz/LRhKEstA/X9WtFRih0J7FmJoBRrqMsCGhBUfbJdYpqZgkCC2RER qqUw==; 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-200154-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-200154-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. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id d75a77b69052e-43ff259d218si5398661cf.558.2024.06.04.00.29.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jun 2024 00:29:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-200154-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; 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-200154-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-200154-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 5E1AC1C2101D for ; Tue, 4 Jun 2024 07:29:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 07F84142648; Tue, 4 Jun 2024 07:28:55 +0000 (UTC) Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DF5AA1419BC; Tue, 4 Jun 2024 07:28:51 +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=1717486134; cv=none; b=A785RBHVc2GjRYHmPXmQmAu8bHPL7qJHSAE6C1gYSVJAVFF6VLvC5hEe5rk7myUxqQL2s1biI7JoMx69if6+UnHgCtJnPpbBfQlU0L/082J3Uawb8OhgjdLqY90xvBWEZJahI/0wbpTUIWEcZvkA1N+JgtnZk5UR+bXfdIs1ec0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717486134; c=relaxed/simple; bh=RSBGKdOzXdRtmVAKwVSFdjPnJ9eoE/CJ2FGAoU3DE7E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KnJZnogPPjzBe6geiU7Ao1zYJfeP0cwUgH88a4GN9SiRo3UAVd+ez4iOpLbG36LubfC2XUhJ1S2QnvUGcsj6uvIsm/bTcqxP4R1Mxrvco2O/qZDVEwa0Yusg1i4HNUmOj0sL3IdboEzIbs1PwBH/DNzqrhV14/piwEfHqjLhCDM= 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.08,213,1712588400"; d="scan'208";a="206651310" Received: from unknown (HELO relmlir6.idc.renesas.com) ([10.200.68.152]) by relmlie5.idc.renesas.com with ESMTP; 04 Jun 2024 16:28:50 +0900 Received: from renesas-deb12.mshome.net (unknown [10.226.92.239]) by relmlir6.idc.renesas.com (Postfix) with ESMTP id 7E3D541FB3BD; Tue, 4 Jun 2024 16:28:45 +0900 (JST) From: Paul Barker To: Sergey Shtylyov , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , =?UTF-8?q?Niklas=20S=C3=B6derlund?= , Simon Horman Cc: Paul Barker , Biju Das , Claudiu Beznea , Yoshihiro Shimoda , netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [net-next PATCH v5 2/7] net: ravb: Align poll function with NAPI docs Date: Tue, 4 Jun 2024 08:28:20 +0100 Message-Id: <20240604072825.7490-3-paul.barker.ct@bp.renesas.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240604072825.7490-1-paul.barker.ct@bp.renesas.com> References: <20240604072825.7490-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 Align ravb_poll() with the documentation in `Documentation/networking/kapi.rst` and `Documentation/networking/napi.rst`. The documentation says that we should prefer napi_complete_done() over napi_complete(), and using the former allows us to properly support busy polling. We should ensure that napi_complete_done() is only called if the work budget has not been exhausted, and we should only re-arm interrupts if it returns true. Signed-off-by: Paul Barker --- Changes v4->v5: * Re-wrote the commit message to make things clearer. Changes v3->v4: * Used Niklas' suggested commit message. drivers/net/ethernet/renesas/ravb_main.c | 26 ++++++++++-------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 193ad05383a8..472aa80002be 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -1341,23 +1341,19 @@ static int ravb_poll(struct napi_struct *napi, int budget) if (priv->rx_fifo_errors != ndev->stats.rx_fifo_errors) ndev->stats.rx_fifo_errors = priv->rx_fifo_errors; - if (work_done == budget) - goto out; - - napi_complete(napi); - - /* Re-enable RX/TX interrupts */ - spin_lock_irqsave(&priv->lock, flags); - if (!info->irq_en_dis) { - ravb_modify(ndev, RIC0, mask, mask); - ravb_modify(ndev, TIC, mask, mask); - } else { - ravb_write(ndev, mask, RIE0); - ravb_write(ndev, mask, TIE); + if (work_done < budget && napi_complete_done(napi, work_done)) { + /* Re-enable RX/TX interrupts */ + spin_lock_irqsave(&priv->lock, flags); + if (!info->irq_en_dis) { + ravb_modify(ndev, RIC0, mask, mask); + ravb_modify(ndev, TIC, mask, mask); + } else { + ravb_write(ndev, mask, RIE0); + ravb_write(ndev, mask, TIE); + } + spin_unlock_irqrestore(&priv->lock, flags); } - spin_unlock_irqrestore(&priv->lock, flags); -out: return work_done; } -- 2.39.2