From patchwork Wed Oct 5 21:21:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1686480 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=bS2wZnzl; dkim-atps=neutral Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MjSGY6pwJz20Vp for ; Thu, 6 Oct 2022 08:23:01 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 065574182B; Wed, 5 Oct 2022 21:23:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 065574182B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1665004980; bh=ge9S5GLfQUIdjt7xzM+hlOKSwXvSpiaXP6dL04+49sw=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=bS2wZnzlHZqkfgOVTaBnqmWfoMw+1eElAu3eXBnFZogW/MMMulUMHJ0e9GCU3iy2z PlFdEy++fuesCY3UPuvpTDfnEkuhsrzs3Lfc0kwuT9XeFOcZdkWReIRo6K2sJ/MSMN UTlmIISaopVcLLFKyxxuKQ0Grtre8S9E0cry18LWI4xwtwJXiFO8mJM2dupO4kAURv krcF1RE5sVGTR3dotOzwdEbrCSTrJ12pKpqM7QxknxVozW4l1iGUez1DPU+GiCzJ9O u6SzwE4/ztCsl4LjyV/zZVd6oUcYPOFrpZTJ3V3t678Mpjka4PWMpsJFaYBO+kbtOO XNYG07Qif4Zog== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xHjDeNKQDE80; Wed, 5 Oct 2022 21:22:59 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp4.osuosl.org (Postfix) with ESMTP id C1B2541814; Wed, 5 Oct 2022 21:22:58 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org C1B2541814 X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 8D2A41BF301 for ; Wed, 5 Oct 2022 21:22:53 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 6845383145 for ; Wed, 5 Oct 2022 21:22:53 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 6845383145 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zsqTRuU3vO66 for ; Wed, 5 Oct 2022 21:22:52 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org C261F82B1B Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) by smtp1.osuosl.org (Postfix) with ESMTPS id C261F82B1B for ; Wed, 5 Oct 2022 21:22:52 +0000 (UTC) Received: by mail-pg1-x533.google.com with SMTP id e129so16420262pgc.9 for ; Wed, 05 Oct 2022 14:22:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date; bh=KYs5i1UtSKwff4LZqDYKTEYs6XamWF2jUJRPKUQ5EPA=; b=6pW0V9lOw/75kSYCcxKmC7Pr7JCpdXAlDXZ1B5MMEN8cCaymHbcG5Gr1VotIrqV2OG d0Va7ExKAXrEUs6Ivs/YF8aPlEFl7ztQW3+XG/kAD1vYkaZiRk9jUt8HgcK3aqAH72C5 e3714vQJMOo6VjjN0jEXMPucHz7+9wzVYVMtI2RVyYv8DTLt97LxuQI3e5AiS1kyaTyE +tCXyWoTT/W+ZcBauJlBt6Qcsv4MHxe0uFKM4soxt6OrkWxAt8GEvMYBFqwFQ+kQWqMZ jHRbdrNOzTSnG2r51yOZjcQjFuQ2wiQ1Oli2EtxRk8dXdpzPq+pKi/XkipWGxaT2bwav 5qmA== X-Gm-Message-State: ACrzQf2GRSynhLcCRvd1Tql+jMb/TtmMKS3ydaPAloOtomxlfT/VqI/q 2zpv4o4JqMZWjvi7NPf+XXIWq7G8oBSMuSweoFRfIqtJSHP67g4GCx0xmPK5yfYyIIji3Z1QSLp LmrvOH2KXYDMX7v3g3QDLCTPE84KUNmhM5GbUzzPKviVS3RXjT36dPyGgpZi5zzyfA4z30ULfFq 84pRAfAg== X-Google-Smtp-Source: AMsMyM6F/34DajcuFO5ZPtDyGeavPnnhWjOSTOEt+ArQFZVEWUxxDvySBHX1+F76e25DGu8FU97rxw== X-Received: by 2002:a63:90c1:0:b0:450:75b5:29fe with SMTP id a184-20020a6390c1000000b0045075b529femr1465586pge.541.1665004971939; Wed, 05 Oct 2022 14:22:51 -0700 (PDT) Received: from localhost.localdomain (c-73-223-190-181.hsd1.ca.comcast.net. [73.223.190.181]) by smtp.gmail.com with ESMTPSA id q12-20020a170902dacc00b0017f7b6e970esm2404666plx.146.2022.10.05.14.22.50 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Oct 2022 14:22:51 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Wed, 5 Oct 2022 14:21:50 -0700 Message-Id: <1665004913-25656-2-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1665004913-25656-1-git-send-email-jdamato@fastly.com> References: <1665004913-25656-1-git-send-email-jdamato@fastly.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date; bh=KYs5i1UtSKwff4LZqDYKTEYs6XamWF2jUJRPKUQ5EPA=; b=ENPx/W4zknC86eh1Xu472j51UA6rXQLfRPei8R9uLnX/hDyDxXhjrA8v6zygagjyqD 9Mzgfovzgler6FWxpHIiYHsczVBQn1xlB9OV2qB4Cl/6pA9tGDxOix/cmhMimB1G5Mob w1xT1zN1REtpO2ModVqkNHoKoyKTbwcILCKpU= X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.a=rsa-sha256 header.s=google header.b=ENPx/W4z Subject: [Intel-wired-lan] [next-queue v2 1/4] i40e: Store the irq number in i40e_q_vector X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: netdev@vger.kernel.org, Joe Damato , kuba@kernel.org, davem@davemloft.net MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Make it easy to figure out the IRQ number for a particular i40e_q_vector by storing the assigned IRQ in the structure itself. Signed-off-by: Joe Damato --- drivers/net/ethernet/intel/i40e/i40e.h | 1 + drivers/net/ethernet/intel/i40e/i40e_main.c | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h index 9926c4e..8e1f395 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h @@ -992,6 +992,7 @@ struct i40e_q_vector { struct rcu_head rcu; /* to avoid race with update stats on free */ char name[I40E_INT_NAME_STR_LEN]; bool arm_wb_state; + int irq_num; /* IRQ assigned to this q_vector */ } ____cacheline_internodealigned_in_smp; /* lan device */ diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 6b7535a..6efe130 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -4123,6 +4123,7 @@ static int i40e_vsi_request_irq_msix(struct i40e_vsi *vsi, char *basename) } /* register for affinity change notifications */ + q_vector->irq_num = irq_num; q_vector->affinity_notify.notify = i40e_irq_affinity_notify; q_vector->affinity_notify.release = i40e_irq_affinity_release; irq_set_affinity_notifier(irq_num, &q_vector->affinity_notify); From patchwork Wed Oct 5 21:21:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1686481 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=140.211.166.136; helo=smtp3.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=uJA3QK72; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MjSGf1dM5z20Vp for ; Thu, 6 Oct 2022 08:23:06 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 4421D60C1A; Wed, 5 Oct 2022 21:23:04 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 4421D60C1A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1665004984; bh=eMwiGlV06m7H89Z/huNj+rnHxxaLFp948ePfuOcgXWw=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=uJA3QK723XVhaY9Uq++paoCVWlo2I6vtc9LM+Fa6nmys6pjkcUxWFW6qdbecCcMB6 dXF6N7PKMh6jEHjmMJcTK2QXzFD4Unsv9Q0erk16QsLN0Hv7MJLiuHwMXumLztBgPb e6mf9O0KB+TukD8a/JfCcNZJGe28MFdXy5ubB1c6cqlhXYA4bz1GPC6Tox0Gphw0bf 4CcfqRueKL9cHuQyRUEnIfUAqmrdLDx22WrL1+cpa19T7666hqwSNxpOtmDUREUKLs c8n7aQvwSJLySJlXtJ3C5G/o+pbLI5FW/2q2lH/ekbVXEQhjr433DmfWRksvjbuNMn YT4b5c2KkjKQw== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nzv81GCp0qrN; Wed, 5 Oct 2022 21:23:03 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id 03BA660C20; Wed, 5 Oct 2022 21:23:03 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 03BA660C20 X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 73A171BF301 for ; Wed, 5 Oct 2022 21:22:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 4EE5A83183 for ; Wed, 5 Oct 2022 21:22:56 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 4EE5A83183 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7wDv6XsjfMA4 for ; Wed, 5 Oct 2022 21:22:55 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 742AD82B1B Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by smtp1.osuosl.org (Postfix) with ESMTPS id 742AD82B1B for ; Wed, 5 Oct 2022 21:22:54 +0000 (UTC) Received: by mail-pj1-x102f.google.com with SMTP id e11-20020a17090a77cb00b00205edbfd646so2485523pjs.1 for ; Wed, 05 Oct 2022 14:22:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date; bh=U0EN7jLsuXZw8oNWja5MPj7Nd3Qv6VMTCazforCQivc=; b=q+EMNJdUz7+rvoebusnt9wrj6NMp+TLe/FdGK0BdowFyUS81RaTcg1BwVdQkao2+X8 eXPgtN8pCn9641VbjN2cCOpPoVl+YQkg195AJ794MCV/Z1g51C0MhYHVAwzN8DCQLlmU X+B/mtoxsDuOMvvW9RhQurzNzZU3bbZ+LNMVRLv/WZnSSxEy2Gg7F1Zm+o2qcXU8LHzJ ssbxx42HTig9g0H+kYrc/SgwSy87dEl65PP9uk0jncwgVVAFZSxg5qFY2QXjkbnPzpPq 3RCcZvZrSn3kC6v/hpz2hRMH0rGLE9bUX6NaLZVcexsmm2SHt8e1wNl57zyIR+bR65R8 TaYA== X-Gm-Message-State: ACrzQf2v1nnyvj09bFnC0CrzC0jLPGDcUD9qYf0BHZAPzNwcvpWiofOv W8vC5nmjGPUk2y9DhdOr6K4XdYWtDnzJ4fzLcEMXP34BPwsQhq0S3S9E+xsH+bchDyR/7prIZgs weTvMPesRt0seIgYsUHTOuoJ4YEz7wGorekXa+Ifg++blAiPlrrJ7Ei6p7VdkkC3L464nLYmtJ2 GvJyVO0Q== X-Google-Smtp-Source: AMsMyM4aGc1TP3ffUgzMXwjgbCYlhU+t+KjxGZY6LeMaKOd3cIU1SJv1ncLlpzyWRfEtLwOkRNc3yQ== X-Received: by 2002:a17:903:1211:b0:178:9353:9e42 with SMTP id l17-20020a170903121100b0017893539e42mr1248640plh.45.1665004974025; Wed, 05 Oct 2022 14:22:54 -0700 (PDT) Received: from localhost.localdomain (c-73-223-190-181.hsd1.ca.comcast.net. [73.223.190.181]) by smtp.gmail.com with ESMTPSA id q12-20020a170902dacc00b0017f7b6e970esm2404666plx.146.2022.10.05.14.22.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Oct 2022 14:22:53 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Wed, 5 Oct 2022 14:21:51 -0700 Message-Id: <1665004913-25656-3-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1665004913-25656-1-git-send-email-jdamato@fastly.com> References: <1665004913-25656-1-git-send-email-jdamato@fastly.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date; bh=U0EN7jLsuXZw8oNWja5MPj7Nd3Qv6VMTCazforCQivc=; b=FEITd7pN7m03rHGdolRifajln9xYGwZSSvrnKfKhzd21QJhaNvUa7qcWi347wgn2Sy 6CxB4CtrQjvZj7HqTolY2fdYmzNUL/dPsTyMktZLy2E3LM7fKMyFCLy0HJ7fomV3w2Tg u+kRaqRCz90TLnNMOxk+FSJnJSZQMQgrxHGC8= X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.a=rsa-sha256 header.s=google header.b=FEITd7pN Subject: [Intel-wired-lan] [next-queue v2 2/4] i40e: Record number TXes cleaned during NAPI X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: netdev@vger.kernel.org, Joe Damato , kuba@kernel.org, davem@davemloft.net MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Update i40e_clean_tx_irq to take an out parameter (tx_cleaned) which stores the number TXs cleaned. Likewise, update i40e_clean_xdp_tx_irq and i40e_xmit_zc to do the same. Care has been taken to avoid changing the control flow of any functions involved. Signed-off-by: Joe Damato --- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 16 +++++++++++----- drivers/net/ethernet/intel/i40e/i40e_xsk.c | 15 +++++++++++---- drivers/net/ethernet/intel/i40e/i40e_xsk.h | 3 ++- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index b97c95f..a2cc98e 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -923,11 +923,13 @@ void i40e_detect_recover_hung(struct i40e_vsi *vsi) * @vsi: the VSI we care about * @tx_ring: Tx ring to clean * @napi_budget: Used to determine if we are in netpoll + * @tx_cleaned: Out parameter set to the number of TXes cleaned * * Returns true if there's any budget left (e.g. the clean is finished) **/ static bool i40e_clean_tx_irq(struct i40e_vsi *vsi, - struct i40e_ring *tx_ring, int napi_budget) + struct i40e_ring *tx_ring, int napi_budget, + unsigned int *tx_cleaned) { int i = tx_ring->next_to_clean; struct i40e_tx_buffer *tx_buf; @@ -1026,7 +1028,7 @@ static bool i40e_clean_tx_irq(struct i40e_vsi *vsi, i40e_arm_wb(tx_ring, vsi, budget); if (ring_is_xdp(tx_ring)) - return !!budget; + goto out; /* notify netdev of completed buffers */ netdev_tx_completed_queue(txring_txq(tx_ring), @@ -1048,6 +1050,8 @@ static bool i40e_clean_tx_irq(struct i40e_vsi *vsi, } } +out: + *tx_cleaned = total_packets; return !!budget; } @@ -2689,10 +2693,12 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) container_of(napi, struct i40e_q_vector, napi); struct i40e_vsi *vsi = q_vector->vsi; struct i40e_ring *ring; + bool tx_clean_complete = true; bool clean_complete = true; bool arm_wb = false; int budget_per_ring; int work_done = 0; + unsigned int tx_cleaned = 0; if (test_bit(__I40E_VSI_DOWN, vsi->state)) { napi_complete(napi); @@ -2704,11 +2710,11 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) */ i40e_for_each_ring(ring, q_vector->tx) { bool wd = ring->xsk_pool ? - i40e_clean_xdp_tx_irq(vsi, ring) : - i40e_clean_tx_irq(vsi, ring, budget); + i40e_clean_xdp_tx_irq(vsi, ring, &tx_cleaned) : + i40e_clean_tx_irq(vsi, ring, budget, &tx_cleaned); if (!wd) { - clean_complete = false; + clean_complete = tx_clean_complete = false; continue; } arm_wb |= ring->arm_wb; diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c index 790aaeff..f98ce7e4 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c +++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c @@ -530,18 +530,22 @@ static void i40e_set_rs_bit(struct i40e_ring *xdp_ring) * i40e_xmit_zc - Performs zero-copy Tx AF_XDP * @xdp_ring: XDP Tx ring * @budget: NAPI budget + * @tx_cleaned: Out parameter of the TX packets processed * * Returns true if the work is finished. **/ -static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) +static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget, + unsigned int *tx_cleaned) { struct xdp_desc *descs = xdp_ring->xsk_pool->tx_descs; u32 nb_pkts, nb_processed = 0; unsigned int total_bytes = 0; nb_pkts = xsk_tx_peek_release_desc_batch(xdp_ring->xsk_pool, budget); - if (!nb_pkts) + if (!nb_pkts) { + *tx_cleaned = 0; return true; + } if (xdp_ring->next_to_use + nb_pkts >= xdp_ring->count) { nb_processed = xdp_ring->count - xdp_ring->next_to_use; @@ -558,6 +562,7 @@ static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) i40e_update_tx_stats(xdp_ring, nb_pkts, total_bytes); + *tx_cleaned = nb_pkts; return nb_pkts < budget; } @@ -581,10 +586,12 @@ static void i40e_clean_xdp_tx_buffer(struct i40e_ring *tx_ring, * i40e_clean_xdp_tx_irq - Completes AF_XDP entries, and cleans XDP entries * @vsi: Current VSI * @tx_ring: XDP Tx ring + * @tx_cleaned: out parameter of number of TXes cleaned * * Returns true if cleanup/tranmission is done. **/ -bool i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring) +bool i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring, + unsigned int *tx_cleaned) { struct xsk_buff_pool *bp = tx_ring->xsk_pool; u32 i, completed_frames, xsk_frames = 0; @@ -634,7 +641,7 @@ bool i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring) if (xsk_uses_need_wakeup(tx_ring->xsk_pool)) xsk_set_tx_need_wakeup(tx_ring->xsk_pool); - return i40e_xmit_zc(tx_ring, I40E_DESC_UNUSED(tx_ring)); + return i40e_xmit_zc(tx_ring, I40E_DESC_UNUSED(tx_ring), tx_cleaned); } /** diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.h b/drivers/net/ethernet/intel/i40e/i40e_xsk.h index 821df24..396ed11 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_xsk.h +++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.h @@ -30,7 +30,8 @@ int i40e_xsk_pool_setup(struct i40e_vsi *vsi, struct xsk_buff_pool *pool, bool i40e_alloc_rx_buffers_zc(struct i40e_ring *rx_ring, u16 cleaned_count); int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget); -bool i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring); +bool i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring, + unsigned int *tx_cleaned); int i40e_xsk_wakeup(struct net_device *dev, u32 queue_id, u32 flags); int i40e_realloc_rx_bi_zc(struct i40e_vsi *vsi, bool zc); void i40e_clear_rx_bi_zc(struct i40e_ring *rx_ring); From patchwork Wed Oct 5 21:21:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1686482 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::133; helo=smtp2.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=6KG2Ou74; dkim-atps=neutral Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MjSGj5f7sz20Vp for ; Thu, 6 Oct 2022 08:23:09 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 14BB0405BE; Wed, 5 Oct 2022 21:23:08 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 14BB0405BE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1665004988; bh=d3BiycLtcjswEhRo2LfGdhnZzb6S5TlfyErH7npug7c=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=6KG2Ou74I4tGJTxkrOQgogbPE1qQ6ckSN2dWJmyPgjCZ43j/pHv/KHpp8+y065UXE qBtC7lqWJA4yp3Roaea9b3mdGLB1MET0ShDxIDf6UiFXqgCg/lISEU8haSnooEUmqE sXiA1ARs6QicEMYykxQymSlGPSwaxN7DzDiD99CgsDGfHoyzUeWjQR2vjmmZGxd4pS xP0avzirl9GleFHBW2sMNomS9Di2pq2AcaQsOMYKQ44w6acHTbb0RQNzJnNyjsMUmQ F41H3uuS+efFvY78SouPH1HOWZ+oDXzGXF+CmUVeHxkjSE5an8WhcPxQhRcmXAoOuN cSarBMhihlSXg== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RYs2wf3zYF9P; Wed, 5 Oct 2022 21:23:07 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp2.osuosl.org (Postfix) with ESMTP id F3A2C405D2; Wed, 5 Oct 2022 21:23:06 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org F3A2C405D2 X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 979791BF301 for ; Wed, 5 Oct 2022 21:22:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 5F60483163 for ; Wed, 5 Oct 2022 21:22:57 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 5F60483163 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QW5-YpdvNUZp for ; Wed, 5 Oct 2022 21:22:56 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 9315082B1B Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by smtp1.osuosl.org (Postfix) with ESMTPS id 9315082B1B for ; Wed, 5 Oct 2022 21:22:56 +0000 (UTC) Received: by mail-pl1-x635.google.com with SMTP id z20so10057284plb.10 for ; Wed, 05 Oct 2022 14:22:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date; bh=q4JM7+U+5ija2zkoCvZioCAGm6tutm0eZk4NJurUNV4=; b=SsRso6WILzyX5eOipLPOtg3iDOFjA6wlQXnK7UX3osUPpRkVOjX4y7K1mlJT2i5jch p+U+UX94hijASKf+jtmvE90zIwM6dz852r6yGqeux6LHB5KeDCLjxuKOLlTaUscvlbGv hBDblQYynds7RQ0LPCicz4NsVt141jJRSZloXY6p6Y7V3DDRadCe7yPNGayEUuhLggAG tJc/L8SbE4sQ1ZZbKDH0GN9zJb+eoOtHuNO2EBbAasRzdJHspN0Wo+R50GHPRbddGo58 AQPaBJ1aHSesCp3wfTdPPSe8TNbeLXUTbCtpDbkq/FjwlDESottbtKflpckR1kWdWd7E 6jQg== X-Gm-Message-State: ACrzQf23PiOkp2sSEY8DJU9FWT2hJY8NXYPDGZPHgW0LlIhUQoR5LSSq O1O5UTVRPshxGX/w95vQ08KHewAxla3FLc3Z7EKPBVlC+5Abp/trBBhn9SwxWNnKR6dMhpbmow/ fZ1xpY/ocr1+b5/EG0JYfLp0h/RERf5GyAYq77ONW3sPR7ed6QCGMMOQrdsqsusO8/njsUzWibF PbsOY9Og== X-Google-Smtp-Source: AMsMyM7py2fT6tDqPJxN4ka6WJPXRLdCqLKRbZedN3T8VjdsRp03xHOQ4PHrp4Jhj7ndTcP/o9Uhpg== X-Received: by 2002:a17:902:8ec5:b0:179:d8f4:cb64 with SMTP id x5-20020a1709028ec500b00179d8f4cb64mr1435841plo.16.1665004975689; Wed, 05 Oct 2022 14:22:55 -0700 (PDT) Received: from localhost.localdomain (c-73-223-190-181.hsd1.ca.comcast.net. [73.223.190.181]) by smtp.gmail.com with ESMTPSA id q12-20020a170902dacc00b0017f7b6e970esm2404666plx.146.2022.10.05.14.22.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Oct 2022 14:22:55 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Wed, 5 Oct 2022 14:21:52 -0700 Message-Id: <1665004913-25656-4-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1665004913-25656-1-git-send-email-jdamato@fastly.com> References: <1665004913-25656-1-git-send-email-jdamato@fastly.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date; bh=q4JM7+U+5ija2zkoCvZioCAGm6tutm0eZk4NJurUNV4=; b=ScAKQ4e/26zjF3AlEMo3ibjAz8V0TQgk9Qm4zjRZTmOuN7dqjUbFgqc6mud9yu/qwJ WOQwHswRQH6j0NDPTiG3gZ2sN74zsBJMcXuHjTGEXK5W/TxZw//P5w4CBOhm/KUXdnKv zImN6+AyduYB3hf58UBCluDPaC53iVL068x7w= X-Mailman-Original-Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.a=rsa-sha256 header.s=google header.b=ScAKQ4e/ Subject: [Intel-wired-lan] [next-queue v2 3/4] i40e: Record number of RXes cleaned during NAPI X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: netdev@vger.kernel.org, Joe Damato , kuba@kernel.org, davem@davemloft.net MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Adjust i40e_clean_rx_irq and i40e_clean_rx_irq_zc to accept an out parameter which records the number of RX packets cleaned. Care has been taken to avoid any changes in control flow. Signed-off-by: Joe Damato --- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 11 ++++++++--- drivers/net/ethernet/intel/i40e/i40e_xsk.c | 6 +++++- drivers/net/ethernet/intel/i40e/i40e_xsk.h | 3 ++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index a2cc98e..8a0d4fd 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -2426,6 +2426,7 @@ static void i40e_inc_ntc(struct i40e_ring *rx_ring) * i40e_clean_rx_irq - Clean completed descriptors from Rx ring - bounce buf * @rx_ring: rx descriptor ring to transact packets on * @budget: Total limit on number of packets to process + * @rx_cleaned: Out parameter of the number of packets processed * * This function provides a "bounce buffer" approach to Rx interrupt * processing. The advantage to this is that on systems that have @@ -2434,7 +2435,8 @@ static void i40e_inc_ntc(struct i40e_ring *rx_ring) * * Returns amount of work completed **/ -static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget) +static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget, + unsigned int *rx_cleaned) { unsigned int total_rx_bytes = 0, total_rx_packets = 0, frame_sz = 0; u16 cleaned_count = I40E_DESC_UNUSED(rx_ring); @@ -2571,6 +2573,8 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget) i40e_update_rx_stats(rx_ring, total_rx_bytes, total_rx_packets); + *rx_cleaned = total_rx_packets; + /* guarantee a trip back through this routine if there was a failure */ return failure ? budget : (int)total_rx_packets; } @@ -2699,6 +2703,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) int budget_per_ring; int work_done = 0; unsigned int tx_cleaned = 0; + unsigned int rx_cleaned = 0; if (test_bit(__I40E_VSI_DOWN, vsi->state)) { napi_complete(napi); @@ -2738,8 +2743,8 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) i40e_for_each_ring(ring, q_vector->rx) { int cleaned = ring->xsk_pool ? - i40e_clean_rx_irq_zc(ring, budget_per_ring) : - i40e_clean_rx_irq(ring, budget_per_ring); + i40e_clean_rx_irq_zc(ring, budget_per_ring, &rx_cleaned) : + i40e_clean_rx_irq(ring, budget_per_ring, &rx_cleaned); work_done += cleaned; /* if we clean as many as budgeted, we must not be done */ diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c index f98ce7e4..b1f582a0 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c +++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c @@ -378,10 +378,12 @@ static void i40e_handle_xdp_result_zc(struct i40e_ring *rx_ring, * i40e_clean_rx_irq_zc - Consumes Rx packets from the hardware ring * @rx_ring: Rx ring * @budget: NAPI budget + * @rx_cleaned: out parameter of the packets processed * * Returns amount of work completed **/ -int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget) +int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget, + unsigned int *rx_cleaned) { unsigned int total_rx_bytes = 0, total_rx_packets = 0; u16 next_to_clean = rx_ring->next_to_clean; @@ -452,6 +454,8 @@ int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget) i40e_finalize_xdp_rx(rx_ring, xdp_xmit); i40e_update_rx_stats(rx_ring, total_rx_bytes, total_rx_packets); + *rx_cleaned = total_rx_packets; + if (xsk_uses_need_wakeup(rx_ring->xsk_pool)) { if (failure || next_to_clean == rx_ring->next_to_use) xsk_set_rx_need_wakeup(rx_ring->xsk_pool); diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.h b/drivers/net/ethernet/intel/i40e/i40e_xsk.h index 396ed11..1089cc0 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_xsk.h +++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.h @@ -28,7 +28,8 @@ int i40e_queue_pair_enable(struct i40e_vsi *vsi, int queue_pair); int i40e_xsk_pool_setup(struct i40e_vsi *vsi, struct xsk_buff_pool *pool, u16 qid); bool i40e_alloc_rx_buffers_zc(struct i40e_ring *rx_ring, u16 cleaned_count); -int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget); +int i40e_clean_rx_irq_zc(struct i40e_ring *rx_ring, int budget, + unsigned int *rx_cleaned); bool i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring, unsigned int *tx_cleaned); From patchwork Wed Oct 5 21:21:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1686483 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=ZI7o3A3q; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MjSGp0rsLz20Vp for ; Thu, 6 Oct 2022 08:23:14 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 64B9360D53; Wed, 5 Oct 2022 21:23:12 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 64B9360D53 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1665004992; bh=4qI+uesF48y3JWNSTu+V6BclV2y96vWnHKTvydEAS+8=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=ZI7o3A3qoM3+Y02RgEvajMAFVNvgNc7a7dzZT0eOnUsYQT9LTzOJN/VgSKk22VXlv VCgGS5r1ODA5GEnorK5UePY8uygUcrrTfHOvDROLgV/Jdcc4yK0wRtv9lVig+xwJsb YG47wdrnVg8fIE2k3C4qdHnd6fuV4qR3tLrD87LiDRXGGWzgu8gvUBiA7cBMx43ljk bzgd6pfnKWtas+g6hU8NwDTgCmCUoNI+8kO/JY8ifsyZaTiF2uQJiAGazISkhz3pTJ GRFhtlmrHBbSI6KPk9y3H3htd2c4cO45Bdgqdqwmlsmf2PJkmFot8SZS/9ci+Jz51/ oQ/65v8ta1r9A== X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y74Zzi4Z4PJK; Wed, 5 Oct 2022 21:23:11 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id 5426460FD9; Wed, 5 Oct 2022 21:23:11 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 5426460FD9 X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 4FF791BF301 for ; Wed, 5 Oct 2022 21:22:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 2AD4260C20 for ; Wed, 5 Oct 2022 21:22:59 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 2AD4260C20 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qNTAxfb_46pn for ; Wed, 5 Oct 2022 21:22:58 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 3EBC060C1A Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by smtp3.osuosl.org (Postfix) with ESMTPS id 3EBC060C1A for ; Wed, 5 Oct 2022 21:22:58 +0000 (UTC) Received: by mail-pj1-x1031.google.com with SMTP id b15so8737732pje.1 for ; Wed, 05 Oct 2022 14:22:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date; bh=SlseP4dgiApJQK/x/PEYzxG6w1TjAk1Gik0zr1f0WYA=; b=HaD2g6aYdNpypLul+fI2/X+Sc3GFmpDIsSDzlNehqr6WuIyomtZ4nHxkZcGVQ1rnIG hgbyxN/cv2QT4Q72FWjQjkKVVF62+8/ehefQguz/+J4pLASZvS/zYxe7/rUZfz4aTp+x 5xd3BvkyNlr/hC5x1eIiMx+i4wIyKSy3WrMqEZ2wfdjyl9pnWJHNEuVAz7pLywgTtSxJ NYwWX0zX1QNSyJTLEugcgCiE09QJww8iXQw+84RSHwyCT9hpDTyMRqTkNi9AeY5r3pzI MKhH1pMllAAlVhptxYGBEiHWFA1afX9iMvCOP1nx9JhbQqWGcxwfto0irkLjeNNnYF3Q 8sjg== X-Gm-Message-State: ACrzQf1qQ/f9b9gNh28ntoHyvy/a/8f4rmYp5kcRTr9C4lrMJh6Mlk/Y dWRWIJnAObz54vSyb4dXg/ROu0ouGB3JKuzHVzcB1U7063iOYOl6069NjQ7oFiRvBfP4Ybrt5/J cobvCecrQU+smU7c5ykSBHhM5b1nUxh/vrT/WoZGXgZNRt7O4CloD4KGtneympoREI7vCuwpNU1 dCGWi4Sw== X-Google-Smtp-Source: AMsMyM6U43yiWbXNCsWZlFnJdfPvB5IEMVAeI7HcjhcAYH+6iwM8T7SORXoUgM3wjEKBr78wAOr2vQ== X-Received: by 2002:a17:902:f545:b0:178:b4c3:eab6 with SMTP id h5-20020a170902f54500b00178b4c3eab6mr1391848plf.148.1665004977368; Wed, 05 Oct 2022 14:22:57 -0700 (PDT) Received: from localhost.localdomain (c-73-223-190-181.hsd1.ca.comcast.net. [73.223.190.181]) by smtp.gmail.com with ESMTPSA id q12-20020a170902dacc00b0017f7b6e970esm2404666plx.146.2022.10.05.14.22.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Oct 2022 14:22:56 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Wed, 5 Oct 2022 14:21:53 -0700 Message-Id: <1665004913-25656-5-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1665004913-25656-1-git-send-email-jdamato@fastly.com> References: <1665004913-25656-1-git-send-email-jdamato@fastly.com> X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date; bh=SlseP4dgiApJQK/x/PEYzxG6w1TjAk1Gik0zr1f0WYA=; b=fXk4yjR2HNMxdxzSQjs7KO2j7GunI93mT0OnU17esOpjMqql4deqlSuuX/XGlxqEnJ tNy9MlmOJhQZAt9YSF0uhCfIgWNXCBHpNYU/DoKcdGu/k7d/G1Vd48aUurBM0BUoWD8e t7/9w2qqxbLIOWewPSG0DjqiKxZw7vlYguwTA= X-Mailman-Original-Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.a=rsa-sha256 header.s=google header.b=fXk4yjR2 Subject: [Intel-wired-lan] [next-queue v2 4/4] i40e: Add i40e_napi_poll tracepoint X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: netdev@vger.kernel.org, Joe Damato , kuba@kernel.org, davem@davemloft.net MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" Add a tracepoint for i40e_napi_poll that allows users to get detailed information about the amount of work done. This information can help users better tune the correct NAPI parameters (like weight and budget), as well as debug NIC settings like rx-usecs and tx-usecs, etc. An example of the output from this tracepoint: $ sudo perf trace -e i40e:i40e_napi_poll -a --call-graph=fp --libtraceevent_print [..snip..] 388.258 :0/0 i40e:i40e_napi_poll(i40e_napi_poll on dev eth2 q i40e-eth2-TxRx-9 irq 346 irq_mask 00000000,00000000,00000000,00000000,00000000,00800000 curr_cpu 23 budget 64 bpr 64 rx_cleaned 28 tx_cleaned 0 rx_clean_complete 1 tx_clean_complete 1) i40e_napi_poll ([i40e]) i40e_napi_poll ([i40e]) __napi_poll ([kernel.kallsyms]) net_rx_action ([kernel.kallsyms]) __do_softirq ([kernel.kallsyms]) common_interrupt ([kernel.kallsyms]) asm_common_interrupt ([kernel.kallsyms]) intel_idle_irq ([kernel.kallsyms]) cpuidle_enter_state ([kernel.kallsyms]) cpuidle_enter ([kernel.kallsyms]) do_idle ([kernel.kallsyms]) cpu_startup_entry ([kernel.kallsyms]) [0x243fd8] ([kernel.kallsyms]) secondary_startup_64_no_verify ([kernel.kallsyms]) Signed-off-by: Joe Damato --- drivers/net/ethernet/intel/i40e/i40e_trace.h | 49 ++++++++++++++++++++++++++++ drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 ++ 2 files changed, 52 insertions(+) diff --git a/drivers/net/ethernet/intel/i40e/i40e_trace.h b/drivers/net/ethernet/intel/i40e/i40e_trace.h index b5b1229..7d7c161 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_trace.h +++ b/drivers/net/ethernet/intel/i40e/i40e_trace.h @@ -55,6 +55,55 @@ * being built from shared code. */ +#define NO_DEV "(i40e no_device)" + +TRACE_EVENT(i40e_napi_poll, + + TP_PROTO(struct napi_struct *napi, struct i40e_q_vector *q, int budget, + int budget_per_ring, unsigned int rx_cleaned, unsigned int tx_cleaned, + bool rx_clean_complete, bool tx_clean_complete), + + TP_ARGS(napi, q, budget, budget_per_ring, rx_cleaned, tx_cleaned, + rx_clean_complete, tx_clean_complete), + + TP_STRUCT__entry( + __field(int, budget) + __field(int, budget_per_ring) + __field(unsigned int, rx_cleaned) + __field(unsigned int, tx_cleaned) + __field(int, rx_clean_complete) + __field(int, tx_clean_complete) + __field(int, irq_num) + __field(int, curr_cpu) + __string(qname, q->name) + __string(dev_name, napi->dev ? napi->dev->name : NO_DEV) + __bitmask(irq_affinity, nr_cpumask_bits) + ), + + TP_fast_assign( + __entry->budget = budget; + __entry->budget_per_ring = budget_per_ring; + __entry->rx_cleaned = rx_cleaned; + __entry->tx_cleaned = tx_cleaned; + __entry->rx_clean_complete = rx_clean_complete; + __entry->tx_clean_complete = tx_clean_complete; + __entry->irq_num = q->irq_num; + __entry->curr_cpu = get_cpu(); + __assign_str(qname, q->name); + __assign_str(dev_name, napi->dev ? napi->dev->name : NO_DEV); + __assign_bitmask(irq_affinity, cpumask_bits(&q->affinity_mask), + nr_cpumask_bits); + ), + + TP_printk("i40e_napi_poll on dev %s q %s irq %d irq_mask %s curr_cpu %d " + "budget %d bpr %d rx_cleaned %lu tx_cleaned %lu " + "rx_clean_complete %d tx_clean_complete %d", + __get_str(dev_name), __get_str(qname), __entry->irq_num, + __get_bitmask(irq_affinity), __entry->curr_cpu, __entry->budget, + __entry->budget_per_ring, __entry->rx_cleaned, __entry->tx_cleaned, + __entry->rx_clean_complete, __entry->tx_clean_complete) +); + /* Events related to a vsi & ring */ DECLARE_EVENT_CLASS( i40e_tx_template, diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index 8a0d4fd..cda7f59 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -2752,6 +2752,9 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) clean_complete = false; } + trace_i40e_napi_poll(napi, q_vector, budget, budget_per_ring, rx_cleaned, + tx_cleaned, clean_complete, tx_clean_complete); + /* If work not completed, return budget and polling will return */ if (!clean_complete) { int cpu_id = smp_processor_id();