From patchwork Wed Oct 5 08:31:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1686235 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=EJpDOgnp; 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 4Mj79v6H4cz23jM for ; Wed, 5 Oct 2022 19:32:51 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id B9FC760B77; Wed, 5 Oct 2022 08:32:49 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org B9FC760B77 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1664958769; 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=EJpDOgnplvXR8WCHg5vyG/HcGUINLfiNUJR1KCqP07pzrDlLaPtgHMtoaKfUAfcaX rUJ6hP7fPfKBZjNR9DB5DXMCLMvfMIq8GOmWWEvPfzrXWl8HzVqyfvxbn87m4VJV/f WZyrnspWDHe2nhDM594EH6CYJCRwqs0IB8jiSljzQybARP+Dd0BRSkAHTq9cBlqRUN 3gvyyP2KZbkoGdKkZhMhfDk3Bo0XT+yfcxAYjC3si+4Ypwfl/r+b65RTRjD3QR82oN cFCzteWq0wSQcSu2/qsxrFGRRk7/i6DCzwipFLI5dFpfgZvgKqdzgUHuUGNn3PVtgf 9XOIrG9I+KHzA== 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 iZbstp5FIA2v; Wed, 5 Oct 2022 08:32:47 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id C525F60D77; Wed, 5 Oct 2022 08:32:46 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org C525F60D77 X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id B42C31C1148 for ; Wed, 5 Oct 2022 08:32:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 95860415EF for ; Wed, 5 Oct 2022 08:32:41 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 95860415EF 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 M_59yzQgnyzh for ; Wed, 5 Oct 2022 08:32:40 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 3614A4151E Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by smtp4.osuosl.org (Postfix) with ESMTPS id 3614A4151E for ; Wed, 5 Oct 2022 08:32:40 +0000 (UTC) Received: by mail-pl1-x630.google.com with SMTP id d11so14830030pll.8 for ; Wed, 05 Oct 2022 01:32:40 -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=t0HzkG4oU6U0dcwy/1Fl94SdoMZfy2sAWgmKZGr9CBRI2YJvgTw9q0jpdsEQ3RmX1t BBsQ8U8hPRbWIFHu9QxGwiR1kfQPiPtZYvBtjBGjmlTeVLViJthBYvk0Stm/LgLpfkb5 oReQ18I188H+7BfpSX9gS5XUmiGCvNHJnI4G5kuORWf35OhXl36khIyOvtDUMSdsGFCD AagsHYyXpmrqfyFNmVCa0EfszdV04RooxSlehQgBwH85UuxJADDem7375ap4Da7H37li RT+oiLuwcT1ivzjuiSQQcoZjX+ANyVOQa60N3LU/e4CyH4bBrKDlhWo6kDzUd7Sruzum tA9w== X-Gm-Message-State: ACrzQf1/lNX4qCp1zKJia14ab4UurIfdW7do0BiaGA6fuIl7NvDb22hR nQEcLWSfgPTEYPtIZ520icBXIZcOauPKWP+3zEpoCIWEYgmjr+kqnKYCYCxoEGUBSx+Dhf5EJaB wALdGbGsk4OA3nRRtPHjOz5OuDG50VtCLoGqQ0kB09vIgsIB9tt4XuZ0Bs6Uw3YY6vcf6sEDEoc 9iNsNUMQ== X-Google-Smtp-Source: AMsMyM5uvV2N+z8o7Lps/R5jdrkwdk2pbiCEvdcvFm3zqeAqi/0UM8OGHPa6MZ/YEzKEVyK9Rq3/Vw== X-Received: by 2002:a17:90a:ea95:b0:20a:f65b:143b with SMTP id h21-20020a17090aea9500b0020af65b143bmr167924pjz.230.1664958759422; Wed, 05 Oct 2022 01:32:39 -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 jj9-20020a170903048900b0017ec1b1bf9fsm5899320plb.217.2022.10.05.01.32.38 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Oct 2022 01:32:39 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Wed, 5 Oct 2022 01:31:41 -0700 Message-Id: <1664958703-4224-2-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1664958703-4224-1-git-send-email-jdamato@fastly.com> References: <1664958703-4224-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=BNpQVvhEgCIekoG+t0cPqZeXurSlQZRXpEwPW8enJ92DBNA0QI4277kT1cO1fEJR/0 b3GLCRn3d3x34ITuilfh48b1uO2erhW6yFJlzyj6F+puarqJPa0G7TQtEz308oFKzkMi DTNWQc6KBRHqjUVKmtk+dcsjciI3D6zVRGM98= X-Mailman-Original-Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.a=rsa-sha256 header.s=google header.b=BNpQVvhE Subject: [Intel-wired-lan] [next-queue 1/3] 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 08:31:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1686236 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=5Es08lxH; 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 4Mj79y6610z23jM for ; Wed, 5 Oct 2022 19:32:54 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 5E13860D7F; Wed, 5 Oct 2022 08:32:52 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 5E13860D7F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1664958772; bh=Z+X2otfe2yIE+fpnkz/59zKMA/1uu7WZTOCp/SJ5U1E=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=5Es08lxHv9yMA7EgsSxFZstEJ0InFJtV/4BADOrYuPI643T4DnjEkCfhsYuFORCR2 b3HiMGIQrxQNgT4cjtZyu51UM5X5HE7xcT2IKp6l/eFEzf11TFZyCN0TInTFgkXfc6 zf1SnVsga8iO11rle6sxLoUPPF3fzLmhxDXZDheOOKli+gsGW+XiF+MlM1WCXG5gM1 HUfYl7I+U5JXw90HfDlVqD5oHynhkeRfL7f8VNzUgXnlW2nk7oHj4fSBfMNUdJ5w/2 YqhtprE+xTtX5fvD5463Xl5vZ4g8NSsa2sObXvu9WEgNgZIDZoGW3B4nHt+ntzJ3HT WbNM+v+g2VZXQ== 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 GT0jEERAeq5f; Wed, 5 Oct 2022 08:32:51 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id 3165360D77; Wed, 5 Oct 2022 08:32:51 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 3165360D77 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 7BB871BF422 for ; Wed, 5 Oct 2022 08:32:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 5760D81A92 for ; Wed, 5 Oct 2022 08:32:43 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 5760D81A92 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 iZ1PfkS4wbUr for ; Wed, 5 Oct 2022 08:32:42 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 85DA381753 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by smtp1.osuosl.org (Postfix) with ESMTPS id 85DA381753 for ; Wed, 5 Oct 2022 08:32:41 +0000 (UTC) Received: by mail-pj1-x1033.google.com with SMTP id o9-20020a17090a0a0900b0020ad4e758b3so1117097pjo.4 for ; Wed, 05 Oct 2022 01:32:41 -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=5c69IeZzfgTGXU/R5PtSxXzBkuWCA8qXZSyfdvVPThc=; b=j1sR2zLNnalxDc+emExsvidPHkcZ7i9hzgVSwKHFGUj/rGoBBd92rpQZwjRf58n1nx 4j9Vl9C6f2JLGRK5YmQuHOr0iWlsICSA/T+OwjTxeLIsmAjpWi3B/kMcpHhyERldd20e nW1SIACtY2o3ZqtA16cREAf83lkEc3Cg7RWqqAg9R6KUjnbJhCFMmJqUUDgJ7kADve7K 9No2btqQowjAyoBZhTSg6Gt7CuYtjzN400fjMiEyXhETCwCs9n4D4K1ehZcgA1BVgYyT AOR05SmTMsw5qpCNFicw9s1D1pVQy1fTcTVn91bUWajAx6JNzrhWL84IcTEXcoXI5NxF eMFw== X-Gm-Message-State: ACrzQf3JcMbnFvICMyLFyTcacpqHqt33HQErDeQobb3Y8iFaxClmsoP0 w/Ykw6J31Q9SUaqGOvKtVF+oOcLch44dlL7sPg8hItMJLd5MxjaLboJk2DB8MvNqLNddH3bt81K E8XorNU/d7reaWhkU2d7N3Ln1fbZcT5gd3JTwJqcMR5HP6H1ac/9NbkqOV/V+c4kSbyYy33vMur 6lG6iXDw== X-Google-Smtp-Source: AMsMyM5UeKKnC3PGanLBov9NeVY79Ss7qMxRT/gIE5zVzi9U8iCKOISbqaBnpa6GtqdJxMv+Ni151Q== X-Received: by 2002:a17:903:2441:b0:178:4f51:1f78 with SMTP id l1-20020a170903244100b001784f511f78mr30089335pls.82.1664958760583; Wed, 05 Oct 2022 01:32:40 -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 jj9-20020a170903048900b0017ec1b1bf9fsm5899320plb.217.2022.10.05.01.32.39 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Oct 2022 01:32:40 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Wed, 5 Oct 2022 01:31:42 -0700 Message-Id: <1664958703-4224-3-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1664958703-4224-1-git-send-email-jdamato@fastly.com> References: <1664958703-4224-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=5c69IeZzfgTGXU/R5PtSxXzBkuWCA8qXZSyfdvVPThc=; b=L0TCBdGPIONDu+M+x4v6NGulAoiFhyZLsQnUfFRZr1/uzq1c3yxaZ1dVzdpWzySKv8 pRIiox9HBzsKp+XlESc/nv1EpxhvjDtLrSMxCGkPvdpUe3yHHTgrSHX6smI2ayRUAE4G dqPTD6y1eyB3293o2JoIleOzVfuptLQGDeVN8= 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=L0TCBdGP Subject: [Intel-wired-lan] [next-queue 2/3] i40e: i40e_clean_tx_irq returns work done 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_tx_irq to return the actual number of packets cleaned and adjust the logic in i40e_napi_poll to check this value. Signed-off-by: Joe Damato --- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 24 +++++++++++++----------- drivers/net/ethernet/intel/i40e/i40e_xsk.c | 12 ++++++------ drivers/net/ethernet/intel/i40e/i40e_xsk.h | 2 +- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index b97c95f..ed88309 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -924,10 +924,10 @@ void i40e_detect_recover_hung(struct i40e_vsi *vsi) * @tx_ring: Tx ring to clean * @napi_budget: Used to determine if we are in netpoll * - * Returns true if there's any budget left (e.g. the clean is finished) + * Returns the number of packets cleaned **/ -static bool i40e_clean_tx_irq(struct i40e_vsi *vsi, - struct i40e_ring *tx_ring, int napi_budget) +static int i40e_clean_tx_irq(struct i40e_vsi *vsi, + struct i40e_ring *tx_ring, int napi_budget) { int i = tx_ring->next_to_clean; struct i40e_tx_buffer *tx_buf; @@ -1026,7 +1026,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; + return total_packets; /* notify netdev of completed buffers */ netdev_tx_completed_queue(txring_txq(tx_ring), @@ -1048,7 +1048,7 @@ static bool i40e_clean_tx_irq(struct i40e_vsi *vsi, } } - return !!budget; + return total_packets; } /** @@ -2689,10 +2689,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; + int tx_wd = 0; if (test_bit(__I40E_VSI_DOWN, vsi->state)) { napi_complete(napi); @@ -2703,12 +2705,12 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) * budget and be more aggressive about cleaning up the Tx descriptors. */ 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); + tx_wd = ring->xsk_pool ? + i40e_clean_xdp_tx_irq(vsi, ring) : + i40e_clean_tx_irq(vsi, ring, budget); - if (!wd) { - clean_complete = false; + if (tx_wd >= budget) { + tx_clean_complete = false; continue; } arm_wb |= ring->arm_wb; @@ -2742,7 +2744,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) } /* If work not completed, return budget and polling will return */ - if (!clean_complete) { + if (!clean_complete || !tx_clean_complete) { int cpu_id = smp_processor_id(); /* It is possible that the interrupt affinity has changed but, diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c index 790aaeff..925682c 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c +++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c @@ -531,9 +531,9 @@ static void i40e_set_rs_bit(struct i40e_ring *xdp_ring) * @xdp_ring: XDP Tx ring * @budget: NAPI budget * - * Returns true if the work is finished. + * Returns number of packets cleaned **/ -static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) +static int i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) { struct xdp_desc *descs = xdp_ring->xsk_pool->tx_descs; u32 nb_pkts, nb_processed = 0; @@ -541,7 +541,7 @@ static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) nb_pkts = xsk_tx_peek_release_desc_batch(xdp_ring->xsk_pool, budget); if (!nb_pkts) - return true; + return 0; if (xdp_ring->next_to_use + nb_pkts >= xdp_ring->count) { nb_processed = xdp_ring->count - xdp_ring->next_to_use; @@ -558,7 +558,7 @@ static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget) i40e_update_tx_stats(xdp_ring, nb_pkts, total_bytes); - return nb_pkts < budget; + return nb_pkts; } /** @@ -582,9 +582,9 @@ static void i40e_clean_xdp_tx_buffer(struct i40e_ring *tx_ring, * @vsi: Current VSI * @tx_ring: XDP Tx ring * - * Returns true if cleanup/tranmission is done. + * Returns number of packets cleaned **/ -bool i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring) +int i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring) { struct xsk_buff_pool *bp = tx_ring->xsk_pool; u32 i, completed_frames, xsk_frames = 0; diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.h b/drivers/net/ethernet/intel/i40e/i40e_xsk.h index 821df24..4e810c2 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_xsk.h +++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.h @@ -30,7 +30,7 @@ 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); +int i40e_clean_xdp_tx_irq(struct i40e_vsi *vsi, struct i40e_ring *tx_ring); 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 08:31:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joe Damato X-Patchwork-Id: 1686237 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::138; helo=smtp1.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=DUmJ6hB8; dkim-atps=neutral Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) (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 4Mj7B23Hqdz23jM for ; Wed, 5 Oct 2022 19:32:58 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id B5C0681753; Wed, 5 Oct 2022 08:32:56 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org B5C0681753 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1664958776; bh=5CLSCHJDJq3gtAOJ21r9eVrL/DYjcKfH82Fx/kTrgEI=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=DUmJ6hB8UrrkT4fdBmfodeSoO+SYl5v01eXXgk4tTFMVPgwgXCm22+PsZovvzoZ03 S92kZfIdCkrtQDQ7IaQrvNPI9gLPkCoSuygI7qTXXpGdPhBQoHTlw165HA8J/PuaoP +R8wgscLivzkYi2NqKnNxKqQICzVXd55YypNLK5wS1qnrlOa+1bFvHJmImovElbXIw C4AsOYTU5pl9X0vzpnO9Aw2IZY9FvkO8I75+K2X5ZDIC0D8dALm6ddZYsKOVtfdOsk euFnZ1vWbJf8YpFmMPJHrHaZaExAaRyyD+A/DDQ0sjtnK7TmU82kGwUz1R4WOBXrgn 5nPrC87C3CGhQ== 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 sbKbd6yOoZoS; Wed, 5 Oct 2022 08:32:55 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp1.osuosl.org (Postfix) with ESMTP id 7F84F81A92; Wed, 5 Oct 2022 08:32:55 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 7F84F81A92 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 06A441BF422 for ; Wed, 5 Oct 2022 08:32:44 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id E373C60D77 for ; Wed, 5 Oct 2022 08:32:43 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org E373C60D77 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 3AsPOlg0rzvZ for ; Wed, 5 Oct 2022 08:32:42 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 9F46460D57 Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by smtp3.osuosl.org (Postfix) with ESMTPS id 9F46460D57 for ; Wed, 5 Oct 2022 08:32:42 +0000 (UTC) Received: by mail-pj1-x102c.google.com with SMTP id b15so6930899pje.1 for ; Wed, 05 Oct 2022 01:32:42 -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=bJlYpEHuGteSJYoWYcuqwtV+VIvtgUlEz8rUGsVoQjk=; b=yxI4QcQJcsH0CalnjladNJ+179cRjJzYl7kZm5wz/SrrZgLd3nAqH1hnLcUJan+AKK bLHQKKm95HmfTbCJBytpdFCf97meQvDUMXFvNPqHEGQ39XJGmQEEmXqhhwoNgMiBnu9U 4zqqCUVVDc76eyXrOLe9DaKy/TBP5ZAp4c2d5pidA1xqi6gRiWzuzjorax9h9cYyxb+R aPtetSrQCWqeQt+W81LooxBzwYHn+EZ+KgYJZ6oiJ4lSfOI362uw4a2l8dRW+64J56fB 9pVlQV6/kYVlcxRpr5UsdEN6sTMzF6kmyDGY9uPP8rTLA/B5lytWRTxwlJEesrhE/KIp tRew== X-Gm-Message-State: ACrzQf2qaQPC5EF8Yyxo3ULDW6otF0Ppf1mekTSlIBsP1l9SFsup2wdi qelRaxBi1MpMHgJXoGE6i//c2ynC+GFsDhAw+o1YKxcGsZH1TG3XS09e6U+NdkPWfSsg1muZcB6 tQNcwr1nHSKM9+aUTi43tdNvhkgT/TZiYplHcU9Rw0yJCNZWUrfLX6OPu5xoO4H0zZGk77mRCL+ xY3iwO/w== X-Google-Smtp-Source: AMsMyM4e1IgzBSwzbAN1NcOz9z3wDCw8ret5SbCIH1oL8oONRg/y/frZr3ZBmUJdWAEWfiRySb0Obg== X-Received: by 2002:a17:902:6546:b0:17f:7888:58b with SMTP id d6-20020a170902654600b0017f7888058bmr5318982pln.140.1664958761819; Wed, 05 Oct 2022 01:32:41 -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 jj9-20020a170903048900b0017ec1b1bf9fsm5899320plb.217.2022.10.05.01.32.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Oct 2022 01:32:41 -0700 (PDT) From: Joe Damato To: intel-wired-lan@lists.osuosl.org Date: Wed, 5 Oct 2022 01:31:43 -0700 Message-Id: <1664958703-4224-4-git-send-email-jdamato@fastly.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1664958703-4224-1-git-send-email-jdamato@fastly.com> References: <1664958703-4224-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=bJlYpEHuGteSJYoWYcuqwtV+VIvtgUlEz8rUGsVoQjk=; b=wL1DDtBFmuHQUdMOTWtEGr0NdsA1syEXxHDCRSlaru+nrpvnw2185xhFEOryfFV6PE tOSy/dhkvaGgyBx3uq9EijGtk4UmLdlVfGfKGvGvqESqHPlfU3pjKF1KE0D2HS2AuXVu u7xCv/30ioB94QCjdL1B8zHa1TnRVTe8lP/CU= 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=wL1DDtBF Subject: [Intel-wired-lan] [next-queue 3/3] 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: [...snip...] 1029.268 :0/0 i40e:i40e_napi_poll(i40e_napi_poll on dev eth1 q i40e-eth1-TxRx-30 irq 172 irq_mask 00000000,00000000,00000000,00000010,00000000,00000000 curr_cpu 68 budget 64 bpr 64 work_done 0 tx_work_done 2 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 | 50 ++++++++++++++++++++++++++++ drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 ++ 2 files changed, 53 insertions(+) diff --git a/drivers/net/ethernet/intel/i40e/i40e_trace.h b/drivers/net/ethernet/intel/i40e/i40e_trace.h index b5b1229..779d046 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_trace.h +++ b/drivers/net/ethernet/intel/i40e/i40e_trace.h @@ -55,6 +55,56 @@ * 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, int work_done, int tx_work_done, bool clean_complete, + bool tx_clean_complete), + + TP_ARGS(napi, q, budget, budget_per_ring, work_done, tx_work_done, + clean_complete, tx_clean_complete), + + TP_STRUCT__entry( + __field(int, budget) + __field(int, budget_per_ring) + __field(int, work_done) + __field(int, tx_work_done) + __field(int, 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->work_done = work_done; + __entry->tx_work_done = tx_work_done; + __entry->clean_complete = 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 work_done %d tx_work_done %d " + "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->work_done, + __entry->tx_work_done, + __entry->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 ed88309..8b72f1b 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -2743,6 +2743,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, work_done, tx_wd, + clean_complete, tx_clean_complete); + /* If work not completed, return budget and polling will return */ if (!clean_complete || !tx_clean_complete) { int cpu_id = smp_processor_id();