From nobody Sun Feb 8 09:12:51 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 282F8184546 for ; Mon, 12 Aug 2024 14:57:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474628; cv=none; b=o2w8Tbz8PU/3l/PvCEbWSGmHGpjq3sNxrEQq3h/7QIOogqoYNABqmzOXZD169c779dYkVcBU7cxsHCr9UK5SIbRo7fVN6u6UDSI6icv8kpcF4KxUOIgb/GzaAXk9iArhHEGF7hLgTH4cZwTfKWg5hGvZ3W5cKlapvfUgpKG88b4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474628; c=relaxed/simple; bh=OtbThwHzrLrDJ6N9iYZP2xMzyRCuIQDSqBSKqkos4uU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HprGG4GzNFefku0e/ZQKtpAd5A7TJVGFxubH/93VnZPqCZhwgRPlHNaUvf1fDq/oyRF8+ShW+Xy6eqdH+WV3gXdmgb3eByHep1ahm6jeQN65l2hztl8Bl87ZP3Ykkqa7/5FVSeu6BHH35tg1zhdeEmGtaMOM5UhwjZ5XkEaSKCQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=I5kQnO0q; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="I5kQnO0q" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1fd640a6454so33528185ad.3 for ; Mon, 12 Aug 2024 07:57:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1723474626; x=1724079426; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P2QGcPk3A8tZFSKtHIPQmg9Fxaym0vKQef3yjN2SS5E=; b=I5kQnO0q9t1WdsqNw/jMjMOnGt+ttsRx1yfVW7JzuJo11gtOrC2c3cOIHotcaGff3g b/8oTXvXWdn/lpaJPZlsOTU5x6vR0mUbyrjoxfFCCxgTt6ZZt1bSihBZ+htbwPLdFjzD eX5GZ8m1i8dkaixV+gK998sudjnB58IFdP73w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723474626; x=1724079426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P2QGcPk3A8tZFSKtHIPQmg9Fxaym0vKQef3yjN2SS5E=; b=RbbJLPi1jgF+pZjKO5ukJaOCSZFjogusFxOy26M9rE7ixvdcbtRUMS7lWiLZDMA4+S n8C9Zlc3q2nSPOLURI763bm9zVCI5Vv73ONIsie7tNpbwIDjJMfb2KQxPhstBvwNN0jZ 9aPrUMbZdx5NDbkrFXO2Yt2F1zGnoIBJpxulaAQq05eoss8bblkKcVt0HY1hcomED8Kp u2yXe+Jf36uTmP/9KxMecfqC0SvGQAHsbGFlSHc0Rm6rKpvVg89MODIbDgAteC6nQLiT pqbjM1mWcphFYrjqcyE8oQs5GR3Fps9axqpR+qEv2tF4oAxTW8+jMQdmBFv1/tMqNsrN Bfgw== X-Forwarded-Encrypted: i=1; AJvYcCUxdlURrKCr7U41vJ3yxTuoWBpPf3sRUmSewhzKKKdisEQsv4+KSS/+h8o2P0/69cQBgHZox845fNqtDbfQD+HVQC6ZGfVjQH1OgKDF X-Gm-Message-State: AOJu0YyU7KVCXIdZZfmtAjJuCYoNdLjjSNL1rJRFT7Sox7/dP831kkpK ilZZ/JNNQ6+WN6d1opgzhoK0dk4PFV2wcAsm9d+Nipjq8ujYbQGLOpckXZrg0W0= X-Google-Smtp-Source: AGHT+IH/Va6oFceymPtFVikZ4XT7EW9N4zXQhzcHxdCn7/yQShCgpfo1zip9Na9QsbzCb+pTwYHNwg== X-Received: by 2002:a17:902:ec91:b0:1fd:9c2d:2f1b with SMTP id d9443c01a7336-201ca1cb0d8mr5835315ad.52.1723474626441; Mon, 12 Aug 2024 07:57:06 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-200bb8fd835sm39006955ad.89.2024.08.12.07.57.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Aug 2024 07:57:06 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: Joe Damato , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Jiri Pirko , Sebastian Andrzej Siewior , Lorenzo Bianconi , Daniel Borkmann , linux-kernel@vger.kernel.org (open list) Subject: [RFC net-next 1/6] netdevice: Add napi_affinity_no_change Date: Mon, 12 Aug 2024 14:56:22 +0000 Message-Id: <20240812145633.52911-2-jdamato@fastly.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240812145633.52911-1-jdamato@fastly.com> References: <20240812145633.52911-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Several drivers have their own, very similar, implementations of determining if IRQ affinity has changed. Create napi_affinity_no_change to centralize this logic in the core. This will be used in following commits for various drivers to eliminate duplicated code. Signed-off-by: Joe Damato --- include/linux/netdevice.h | 8 ++++++++ net/core/dev.c | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 0ef3eaa23f4b..dc714a04b90a 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -464,6 +464,14 @@ enum rx_handler_result { typedef enum rx_handler_result rx_handler_result_t; typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb); =20 +/** + * napi_affinity_no_change - determine if CPU affinity changed + * @irq: the IRQ whose affinity may have changed + * + * Return true if the CPU affinity has NOT changed, false otherwise. + */ +bool napi_affinity_no_change(unsigned int irq); + void __napi_schedule(struct napi_struct *n); void __napi_schedule_irqoff(struct napi_struct *n); =20 diff --git a/net/core/dev.c b/net/core/dev.c index 751d9b70e6ad..9c56ad49490c 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -89,6 +89,7 @@ #include #include #include +#include #include #include #include @@ -6210,6 +6211,19 @@ void __napi_schedule_irqoff(struct napi_struct *n) } EXPORT_SYMBOL(__napi_schedule_irqoff); =20 +bool napi_affinity_no_change(unsigned int irq) +{ + int cpu_curr =3D smp_processor_id(); + const struct cpumask *aff_mask; + + aff_mask =3D irq_get_effective_affinity_mask(irq); + if (unlikely(!aff_mask)) + return true; + + return cpumask_test_cpu(cpu_curr, aff_mask); +} +EXPORT_SYMBOL(napi_affinity_no_change); + bool napi_complete_done(struct napi_struct *n, int work_done) { unsigned long flags, val, new, timeout =3D 0; --=20 2.25.1 From nobody Sun Feb 8 09:12:51 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF0E5184557 for ; Mon, 12 Aug 2024 14:57:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474631; cv=none; b=KHYLZijISyxHiMaNm43g+YFjlYEasK+92Fz7r2zpTgcGq4i2vLexBQQ/m+kYdW+W/atKP5TNId+P/Cnn6MAJqHnldSWCnDA8+QMgD4/sUZ/XjSrk6KZDoWl2Z6AsyBnUbIF3ODuwuiVF0EOVzO4qIDSmrXqs8oJi6EKmeL79TWQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474631; c=relaxed/simple; bh=qttIpi4HRsWevPJvdgv7JnCbSSNPmNcCGu3sxRJxwIQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BYUr0gzug0yr+5b1Qv+7pXhLtk4chMr9lvxBd7ShlGkzWxTFAz7ywgV7koIS4a+s7P98HjyExHvW30xGvaSJWBMz93Uou/hOjqe5ijaygMIByHQ3iRv4dZoSBSHMaSa89iEO2fSZhY/AwQL+xb1PhG1XLTodr8EyL7kxvq5hyOc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=jFX0zuWg; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="jFX0zuWg" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-1ff3d5c6e9eso30282985ad.1 for ; Mon, 12 Aug 2024 07:57:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1723474628; x=1724079428; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=krsVPmGJ7mUpHzCKNJF3hcG8Is07gdPgaERGEpodORE=; b=jFX0zuWgifE0wxa+qx0p21VDtTATsMsRg2biF4fCKZWSZcCXaV72F8/iyjB9AWyHyb bx4g3+K1HEunDLIIxjU+wrhXchD6KFpHs4cLG7TjNm7JsU6ctO2gCyL14FQowBc8OH0V U28Lhvuuo018y03Anf55v/9zAUCFGWIcrniZo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723474628; x=1724079428; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=krsVPmGJ7mUpHzCKNJF3hcG8Is07gdPgaERGEpodORE=; b=SyQCm4HfEdjB1/9bk5I2yTo1wseFttqIX/SVSgD7lKelYt4sWtwOZgPKSVvVJgkR28 +QwAwWNl3aF+PsCFxKGhfZK8eURCDW0On6Ij9ruGLWajOALzGIsD0ZqK5LA8OK1ciCWJ nlTcekmYoD6SrZlN/CQ72iD4cwqEt2OIkBGiC+Fc5aMVKuLOtGUdsxS1lLXMv2MD0kAB dmxmxl1J6UrNcxrYuoXi0wDGKm8jfPBzTDFmG1URBS4u4YJdBokNdmnjn2rgHnC4gVeQ 71LTLJA1XtsdrL7lcrMmoA0EM4q82guMJLdpz85bxExz7jT5Q5wZmCXYWJBS3w/DChQZ bk6w== X-Forwarded-Encrypted: i=1; AJvYcCWkkH7HX9rfRFvM5DPXfF0XOfhKoF1y7G2xCzaCMe+gFV/s+hXvjXHp3E4aZYoEKiSQMZXYAZPlIMO8coxY+5hP7NY5FfeEVH/xngme X-Gm-Message-State: AOJu0YyAzfOjQYfEYbAixvNnBtyw6GRHpMdtDlSxmsIfhpDmxUo8a9fj yDl35O4jPLrag32d1QG0YBALUYKmtBVFogL5961QcEVIRcKS6w91WllAWOq8rTM= X-Google-Smtp-Source: AGHT+IGI1VKC/hH97K8mVlaBVtWBUX28eQCqGKnY+VncEcLp2Gvi+LfAg0ooVhF0BwcGRliS31Rfvw== X-Received: by 2002:a17:902:d4cd:b0:1fa:449:1dd6 with SMTP id d9443c01a7336-201ca1c77edmr6127215ad.48.1723474628092; Mon, 12 Aug 2024 07:57:08 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-200bb8fd835sm39006955ad.89.2024.08.12.07.57.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Aug 2024 07:57:07 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: Joe Damato , Saeed Mahameed , Leon Romanovsky , Tariq Toukan , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-rdma@vger.kernel.org (open list:MELLANOX MLX5 core VPI driver), linux-kernel@vger.kernel.org (open list) Subject: [RFC net-next 2/6] mlx5: Use napi_affinity_no_change Date: Mon, 12 Aug 2024 14:56:23 +0000 Message-Id: <20240812145633.52911-3-jdamato@fastly.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240812145633.52911-1-jdamato@fastly.com> References: <20240812145633.52911-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use napi_affinity_no_change instead of mlx5's internal implementation, simplifying and centralizing the logic. Signed-off-by: Joe Damato --- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c | 9 +-------- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/eth= ernet/mellanox/mlx5/core/en.h index 7832f6b6c8a8..c288e3f45a06 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -767,7 +767,7 @@ struct mlx5e_channel { spinlock_t async_icosq_lock; =20 /* data path - accessed per napi poll */ - const struct cpumask *aff_mask; + unsigned int irq; struct mlx5e_ch_stats *stats; =20 /* control */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 6f686fabed44..7b217aafbdfd 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -2684,8 +2684,8 @@ static int mlx5e_open_channel(struct mlx5e_priv *priv= , int ix, c->mkey_be =3D cpu_to_be32(mdev->mlx5e_res.hw_objs.mkey); c->num_tc =3D mlx5e_get_dcb_num_tc(params); c->xdp =3D !!params->xdp_prog; + c->irq =3D irq; c->stats =3D &priv->channel_stats[ix]->ch; - c->aff_mask =3D irq_get_effective_affinity_mask(irq); c->lag_port =3D mlx5e_enumerate_lag_port(mdev, ix); =20 netif_napi_add(netdev, &c->napi, mlx5e_napi_poll); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_txrx.c index 5873fde65c2e..ee453d019c3b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c @@ -39,13 +39,6 @@ #include "en/xsk/tx.h" #include "en_accel/ktls_txrx.h" =20 -static inline bool mlx5e_channel_no_affinity_change(struct mlx5e_channel *= c) -{ - int current_cpu =3D smp_processor_id(); - - return cpumask_test_cpu(current_cpu, c->aff_mask); -} - static void mlx5e_handle_tx_dim(struct mlx5e_txqsq *sq) { struct mlx5e_sq_stats *stats =3D sq->stats; @@ -201,7 +194,7 @@ int mlx5e_napi_poll(struct napi_struct *napi, int budge= t) busy |=3D busy_xsk; =20 if (busy) { - if (likely(mlx5e_channel_no_affinity_change(c))) { + if (likely(napi_affinity_no_change(c->irq))) { work_done =3D budget; goto out; } --=20 2.25.1 From nobody Sun Feb 8 09:12:51 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68AF0186E5B for ; Mon, 12 Aug 2024 14:57:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474633; cv=none; b=RxhjhWATy/LLirznqEduLbdZFUfC4mNa+0bg2GNfpjmgGIXLwVO4pY467Lh/gdVFM1HN559xchUa3QTbLrw0eHzTtkczom4vM8OwHEx5YFzbTEk10sM9ZilsZuqXSJHiDjByxvjYtkIJa5jfq0zre6/IVqEJVsuF5JYlEHSYFKY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474633; c=relaxed/simple; bh=engWj6aKpokwgpyXiw7CBwh7X6sCJ2Bs/kMc9vpl9io=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=u8K16pyocLtsLgoYhCEkBK7hoTBf4jY/nCiArLXj4mNkEBf/QXT1QdEk3mRGJRjrNi/qiOlplXhRForaL3SfAURqnPoH9NUOSgkDdB8DRaCqLG7mPCS15HUU34YPuDeQyIQtD8GdLH+lj5q3jdv932zyJVGXcrIFxCIwyNG1Q/0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=PIv5ZcAE; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="PIv5ZcAE" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-1fd65aaac27so36642385ad.1 for ; Mon, 12 Aug 2024 07:57:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1723474632; x=1724079432; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fNdFpdWlE48RXxg9UImVWM9Gm44fXtqN26asQqpjAN8=; b=PIv5ZcAE+hzMIwUzA76X/OHZY8HzfWCiIq9iBnpFgI/SNroekB8X9Rw/SfA87SzQOK drfw+D2fu6AU7+7SskYbrLFARhsPnPHvhEG2ZOJ/kvacg+u0lrgkEmHSW/mYWRSx7c4Q bcGxYS+FH98OM+ohoQ0sNKlky1sqmDoGH4Inw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723474632; x=1724079432; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fNdFpdWlE48RXxg9UImVWM9Gm44fXtqN26asQqpjAN8=; b=Pj9hZfs7Z/LgQdWJ+8/43lFK6FTb0f6ftfKwGLqk/ZX7VKB+l3eJVqqwhK28CGX0rW p41aw5R6REkhpJ5sGcx+ayURtoMBq3roycPkXwcFF4O8KkSRLsxj/Rtx41VaXyxkDyXE pC3dOLJ1/2mhL5YP6Avh2F9t4jrRuKYGmSSrmjirGVZ1Tf5BUXjdtX4L+pb+FnZ4BBHT sFv0abSyzRvREm046LbtVdO2pGpH3JtynD0ImADgn4WdrUR9o7n6ERuW2KNSwpv/5T7V jQxYRDrSbvSgobypO86wq0VND1MnHaDHvTzzPB7bLxFFJmdG+eY8yisF7GGeE10khyHS 6meQ== X-Forwarded-Encrypted: i=1; AJvYcCUsavrqWdWvNG7cOKy5xbaCz9AIhG8VjRYTNzpOZ3Z3Al/ZTUDabHQrCvl3FzznqHZTvqDgJHveJJnb388XFzLZyrm1qvCAe/Ffll/W X-Gm-Message-State: AOJu0YxHREdo2o48AaHGDKLzV1WVT16emvIe7xQhRINvsFwmp6IMueJr TxVlslOY1I8L0cu0POsxEnTgSoQrydveF2QXKBcnpdzIicttWX7azuvmPeZqYCo= X-Google-Smtp-Source: AGHT+IGFUCfRefG7wAmf5ZDyJMJag39OJ6iIfluMa7A4Bgkrj1RT59JVL+xgUytd9tdtjDfEBNrsIw== X-Received: by 2002:a17:903:41c8:b0:1fd:74ac:e6b8 with SMTP id d9443c01a7336-201ca90ec88mr5485365ad.7.1723474631777; Mon, 12 Aug 2024 07:57:11 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-200bb8fd835sm39006955ad.89.2024.08.12.07.57.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Aug 2024 07:57:11 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: Joe Damato , Jeroen de Borst , Praveen Kaligineedi , Shailend Chand , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Willem de Bruijn , Harshitha Ramamurthy , Ziwei Xiao , linux-kernel@vger.kernel.org (open list) Subject: [RFC net-next 3/6] gve: Use napi_affinity_no_change Date: Mon, 12 Aug 2024 14:56:24 +0000 Message-Id: <20240812145633.52911-4-jdamato@fastly.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240812145633.52911-1-jdamato@fastly.com> References: <20240812145633.52911-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use napi_affinity_no_change instead of gve's internal implementation, simplifying and centralizing the logic. Signed-off-by: Joe Damato --- drivers/net/ethernet/google/gve/gve_main.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ether= net/google/gve/gve_main.c index 661566db68c8..ad5e85b8c6a5 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -298,18 +298,6 @@ static irqreturn_t gve_intr_dqo(int irq, void *arg) return IRQ_HANDLED; } =20 -static int gve_is_napi_on_home_cpu(struct gve_priv *priv, u32 irq) -{ - int cpu_curr =3D smp_processor_id(); - const struct cpumask *aff_mask; - - aff_mask =3D irq_get_effective_affinity_mask(irq); - if (unlikely(!aff_mask)) - return 1; - - return cpumask_test_cpu(cpu_curr, aff_mask); -} - int gve_napi_poll(struct napi_struct *napi, int budget) { struct gve_notify_block *block; @@ -383,7 +371,7 @@ int gve_napi_poll_dqo(struct napi_struct *napi, int bud= get) /* Reschedule by returning budget only if already on the correct * cpu. */ - if (likely(gve_is_napi_on_home_cpu(priv, block->irq))) + if (likely(napi_affinity_no_change(block->irq))) return budget; =20 /* If not on the cpu with which this queue's irq has affinity --=20 2.25.1 From nobody Sun Feb 8 09:12:51 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 09EC9187329 for ; Mon, 12 Aug 2024 14:57:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474635; cv=none; b=Ceg3Pb/QrBTMFpXZlPGUuzj/m+4IGZd1JgPL4SUipVm6MwaDsX9rNkOf8/ginItoWxJROcmjlPFC8NFbfSgO+ACDGIEFfSgQr9Yrq8TWlKmP1MqlGwT+EKPmJMU3duYD25DJ0Bo9n5wlanaLERctyWspMavX8FmUEafFU0aYQjY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474635; c=relaxed/simple; bh=qTGf9RDPSjjOFdWiZLiVw5Crk632AJNyAaTUhFpJaJ0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KiivX3Ul9yWatgyOTITiCzsuwp9h4F97RBu04XuFGFrYJFitufL7OyVc2jAevhT2zIMcfoV5sE2twE7FEI6Zvu+j3IL/ZNbme5LFw+w/la0hilh+R6fAqgBL8Qa0ERmgRSfCQl9N6tFnzoNoMhpA/SIUpzDhBO4sZraQFoVrN+c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=wdtHwJbU; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="wdtHwJbU" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1fc5549788eso40430775ad.1 for ; Mon, 12 Aug 2024 07:57:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1723474633; x=1724079433; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Yv3Kiio+O9ZPFfr1NuylJH0Fc+893bNyrbJKgz9J96Y=; b=wdtHwJbU1ue0IyWc8TzxBlkAXwSPGZ0lXYXgaXV0ekmVh7rOF4aiwHMKYKn4K1EGxR vIno4Vbzu0oJqwWAYEsR7hs7B2vYFii2tQidKi1DUWQkOu6/JNXcEic++6Iy5zDZ548x QTuGY4VAtYtD5idIJUAeFo1lxF8/S/TbimUkQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723474633; x=1724079433; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Yv3Kiio+O9ZPFfr1NuylJH0Fc+893bNyrbJKgz9J96Y=; b=MtBHn0w8Swy6L2ZONeRA1zFxHwd5qqZRZ6lmdaq5IAT7ahz1W1uOqKEQbSbFYL7VHx qh1+Z591ddgCzI5Ic0pk/vd28o8sGFxzaLk7r2Ccg0qiPkdbg949l3Au0Dc+JKvzsPPl U1d8dC8RuvynJRjid73SWTM3fQj8BwZa6axxP3M5TuAGmxxuT6NTwfmFjgz+GJURGXvm xlWMKt3gIjoIOF5ellc1qAq4RG1DXk5meX1i2uzbQJIpnb6JqmHrOPXD1C/oMmB7/rbA c2jnYpFsmtrbwqFI2bcjX14kFSRk7GnaazZObATBrNJZ5JrTFPj5dX0UYp3fBvd+FL+y NOew== X-Forwarded-Encrypted: i=1; AJvYcCXgvp9NZCQBMAEjMQqEHYbing3QSReqku1J88Axnh+ZoQ0whWK1pGRikwNaU9E2YxIlmUj0yTmogvMlonaFLJ61QhErMeqheXDJGx/s X-Gm-Message-State: AOJu0YxfQByvuyMf+AIsLKin8zCvvOVe9OAYV5b1qb8Qs0xP3DlH+X82 zqhEET1rk3qJ4hXynevYE10MgG8SbKLQWPG+zFupOPEjMZ/zOek2Mk3PfBxhaaXw1cWdiSgKqST ISag= X-Google-Smtp-Source: AGHT+IFq7CVQngrprbj/jbujEv0pCxSX/9ljktjnxugPkA8tcIxxNL7KoLqZldHeiN0wb9s0yFwN0w== X-Received: by 2002:a17:902:ea12:b0:1fb:8a0e:7730 with SMTP id d9443c01a7336-201ca1b12d6mr7854895ad.26.1723474633362; Mon, 12 Aug 2024 07:57:13 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-200bb8fd835sm39006955ad.89.2024.08.12.07.57.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Aug 2024 07:57:13 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: Joe Damato , Tony Nguyen , Przemek Kitszel , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , intel-wired-lan@lists.osuosl.org (moderated list:INTEL ETHERNET DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [RFC net-next 4/6] i40e: Use napi_affinity_no_change Date: Mon, 12 Aug 2024 14:56:25 +0000 Message-Id: <20240812145633.52911-5-jdamato@fastly.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240812145633.52911-1-jdamato@fastly.com> References: <20240812145633.52911-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use napi_affinity_no_change instead of i40e's internal implementation, simplifying and centralizing the logic. To facilitate this, fix the type of irq_num to be unsigned int. Signed-off-by: Joe Damato --- drivers/net/ethernet/intel/i40e/i40e.h | 2 +- drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/= intel/i40e/i40e.h index d546567e0286..326bb7ffab26 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h @@ -955,7 +955,7 @@ struct i40e_q_vector { char name[I40E_INT_NAME_STR_LEN]; bool arm_wb_state; bool in_busy_poll; - int irq_num; /* IRQ assigned to this q_vector */ + unsigned int irq_num; /* IRQ assigned to this q_vector */ } ____cacheline_internodealigned_in_smp; =20 /* lan device */ diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethe= rnet/intel/i40e/i40e_main.c index cbcfada7b357..a120fdd87c3e 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -4137,10 +4137,10 @@ static int i40e_vsi_request_irq_msix(struct i40e_vs= i *vsi, char *basename) int q_vectors =3D vsi->num_q_vectors; struct i40e_pf *pf =3D vsi->back; int base =3D vsi->base_vector; + unsigned int irq_num; int rx_int_idx =3D 0; int tx_int_idx =3D 0; int vector, err; - int irq_num; int cpu; =20 for (vector =3D 0; vector < q_vectors; vector++) { diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethe= rnet/intel/i40e/i40e_txrx.c index c006f716a3bd..8fc39cf4c5d3 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -2810,8 +2810,6 @@ int i40e_napi_poll(struct napi_struct *napi, int budg= et) =20 /* If work not completed, return budget and polling will return */ if (!clean_complete) { - int cpu_id =3D smp_processor_id(); - /* It is possible that the interrupt affinity has changed but, * if the cpu is pegged at 100%, polling will never exit while * traffic continues and the interrupt will be stuck on this @@ -2819,7 +2817,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budg= et) * continue to poll, otherwise we must stop polling so the * interrupt can move to the correct cpu. */ - if (!cpumask_test_cpu(cpu_id, &q_vector->affinity_mask)) { + if (!napi_affinity_no_change(q_vector->irq_num)) { /* Tell napi that we are done polling */ napi_complete_done(napi, work_done); =20 --=20 2.25.1 From nobody Sun Feb 8 09:12:51 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B79D187346 for ; Mon, 12 Aug 2024 14:57:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474636; cv=none; b=buyVAC5V0u3G9v0bXSRB9DtULey5x/PvrbL+7sqSRcPmm2FZtV6v+28B4M0omS/ZRwULTdb0Db/lPmsQZpgjudIblL/AYR2BlgT5Q+jgFlJT1oqKvmnq4RxIXdtdFyn9RewpgTGpLJAqie2fh9yVjN8A0xf/TtXyn569TnChgr8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474636; c=relaxed/simple; bh=td4IsMjxeMQ6Pb6ByC9aYsEdMEh9ogovdqECp/o7xSU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=vEYKdvivm02pX3pDPzAehNmmxDeF1OP6O9vce8BLepgKsOfkJIrnxoQfwrCjUjt1PzZebae0sjr+1se/L3RN3uyrr8jBPOiKljW2o+iij8aMSAavm3Y20GqieVfnjWo8ZO75vlegY9O+gKq6dCUvN5R44TsYGYSodqAszh2MHew= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=bkhKUbz8; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="bkhKUbz8" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-1fc56fd4de1so29191805ad.0 for ; Mon, 12 Aug 2024 07:57:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1723474635; x=1724079435; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DrcLy1oab8U1SIQex97TmW2YjriWxSFP0Rv3hsdafno=; b=bkhKUbz8jQPQ4OloRxO/3M0Rhi6XHTHiI6nIEidYLwQLMHrzWQTHeQ7T8JjUfedWwv UgoggQl0f7uu1DWeQU20TWDc0mbo7mssOcKQAkzDvjOjwDTaOLKdnSoO7DF8AHugD7Ml XK0aJMM/Oo2bKPcnGM+DrjZ4vCEgtJS2dSQTc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723474635; x=1724079435; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DrcLy1oab8U1SIQex97TmW2YjriWxSFP0Rv3hsdafno=; b=VZ49P6Xktu/CDi6AbCiooEdT8PYX0PP/tZZEhBsfREdjEQ9PLkF+0X3OYFi+52OcHj fQY8pUF46X7uYf67YPGQu0jq8MIOaA5rEY5OHWl7ao6ZAi+PIoHy7722fkh4mMV+R+We Isu8T0jgTZ+9X2xvB2v75k1w4qljC6xiVFsB0dMw5mTT8dZFR/CMVEv/LCjreBiR2eic 9ZkMl0srRUfwdhA6aebSpuunV/cR3/oNBVprJoP+6YCMDYmnAAgkhjsWCXzQjEOCn7lw iCSPd3mRgdC4AtXK6Oat+Z+Yg23xsRxkGOSdhLibTn/sWvCHoy0ut+YLkFIjyIaWYxGV 7Y8A== X-Forwarded-Encrypted: i=1; AJvYcCVyGHrMaytNJUe/8Xb7JryR8A1TNG9IYujKtY6ak2hkL72gwzpzgcuqs8oEXn8tCn4AJ14ybIwNW4DncI7tex354Jlt1+tv0A0juO27 X-Gm-Message-State: AOJu0YzPR+tvXmw7aTNNEWYOdNc0fKsawWEOzdCXhlMg1Kj3/1UnEu3b vsm0+Q3KUKYMrCa37Pcg/pv40A+EWjTr9pRMchGUaQl7DsPsTQvTqVXg+WbbNfk= X-Google-Smtp-Source: AGHT+IFYynzfBMLo6xho+itYUwLn3K/YaUpQ+DqK2Cu71wzV3u7gXENwfqrtXKcgSmW4HC1IOzt8TQ== X-Received: by 2002:a17:902:d4ce:b0:1fc:4680:820d with SMTP id d9443c01a7336-201ca92cd81mr5391865ad.9.1723474635006; Mon, 12 Aug 2024 07:57:15 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-200bb8fd835sm39006955ad.89.2024.08.12.07.57.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Aug 2024 07:57:14 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: Joe Damato , Tony Nguyen , Przemek Kitszel , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , intel-wired-lan@lists.osuosl.org (moderated list:INTEL ETHERNET DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [RFC net-next 5/6] iavf: Use napi_affinity_no_change Date: Mon, 12 Aug 2024 14:56:26 +0000 Message-Id: <20240812145633.52911-6-jdamato@fastly.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240812145633.52911-1-jdamato@fastly.com> References: <20240812145633.52911-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use napi_affinity_no_change instead of iavf's internal implementation, simplifying and centralizing the logic. To support this, struct iavf_q_vector has been extended to store the IRQ number, and irq_num's type is changed to unsigned int. Signed-off-by: Joe Damato --- drivers/net/ethernet/intel/iavf/iavf.h | 1 + drivers/net/ethernet/intel/iavf/iavf_main.c | 4 +++- drivers/net/ethernet/intel/iavf/iavf_txrx.c | 4 +--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/iavf/iavf.h b/drivers/net/ethernet/= intel/iavf/iavf.h index 23a6557fc3db..b066bac6fa7c 100644 --- a/drivers/net/ethernet/intel/iavf/iavf.h +++ b/drivers/net/ethernet/intel/iavf/iavf.h @@ -113,6 +113,7 @@ struct iavf_q_vector { bool arm_wb_state; cpumask_t affinity_mask; struct irq_affinity_notify affinity_notify; + unsigned int irq_num; }; =20 /* Helper macros to switch between ints/sec and what the register uses. diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethe= rnet/intel/iavf/iavf_main.c index ff11bafb3b4f..6c7733025ce3 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -565,7 +565,8 @@ iavf_request_traffic_irqs(struct iavf_adapter *adapter,= char *basename) { unsigned int vector, q_vectors; unsigned int rx_int_idx =3D 0, tx_int_idx =3D 0; - int irq_num, err; + unsigned int irq_num; + int err; int cpu; =20 iavf_irq_disable(adapter); @@ -601,6 +602,7 @@ iavf_request_traffic_irqs(struct iavf_adapter *adapter,= char *basename) "Request_irq failed, error: %d\n", err); goto free_queue_irqs; } + q_vector->irq_num =3D irq_num; /* register for affinity change notifications */ q_vector->affinity_notify.notify =3D iavf_irq_affinity_notify; q_vector->affinity_notify.release =3D diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c b/drivers/net/ethe= rnet/intel/iavf/iavf_txrx.c index 26b424fd6718..5eb78ac1f39d 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c +++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c @@ -1408,8 +1408,6 @@ int iavf_napi_poll(struct napi_struct *napi, int budg= et) =20 /* If work not completed, return budget and polling will return */ if (!clean_complete) { - int cpu_id =3D smp_processor_id(); - /* It is possible that the interrupt affinity has changed but, * if the cpu is pegged at 100%, polling will never exit while * traffic continues and the interrupt will be stuck on this @@ -1417,7 +1415,7 @@ int iavf_napi_poll(struct napi_struct *napi, int budg= et) * continue to poll, otherwise we must stop polling so the * interrupt can move to the correct cpu. */ - if (!cpumask_test_cpu(cpu_id, &q_vector->affinity_mask)) { + if (!napi_affinity_no_change(q_vector->irq_num)) { /* Tell napi that we are done polling */ napi_complete_done(napi, work_done); =20 --=20 2.25.1 From nobody Sun Feb 8 09:12:51 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8408D187861 for ; Mon, 12 Aug 2024 14:57:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474639; cv=none; b=mD45j6Yy6VtaKt8Coge35eMp/Aeqca/Qlug8+CJ80huG/cTFW9/k54UD85Mcs9afqu6RPCIiahWwNRiscyZAJOSvlVcSOCfoMceQrYFHKM2Vom6eohf5juGHce69w8JH+6TLDTMt+KietXDNKLvBxPTWfEDrST0fmvk92p/JLbo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723474639; c=relaxed/simple; bh=PeMx/Nmrr+6PvU9tabl/ApT3ymGjWp++nP1TeXixLcg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UAf5hHm0V32zg0qE9nZKiNvVX5/BrbR9QTv4ICMczjADKDOZJkH/y3nR3a3ZrX9hjSa4qUE8XMUu2Rwqxhqu51BrTX8qwyohfx19Ox2RKuHNeETN1zmrq4FIVcq8I/wqi74Ri+4ze+aeNCcp3kYwx8St7DnxXX+oW3iqK6NhnHs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=sINuLwcJ; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="sINuLwcJ" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-1ff4fa918afso25451625ad.1 for ; Mon, 12 Aug 2024 07:57:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1723474637; x=1724079437; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ItAoJGLSfkfsRS38y1iOZ6bIC8SZzEF77FLkXtuBPRA=; b=sINuLwcJeSQGnGBwzWl718E6dw9yDkDHrpFVideUBn1utxXetRMMhsP+K0iuRR7Zp9 AKMH2C4BUqnEjpa/9JGheD74KZ/4PYXF9jxu3ENpTXKM+Pafgvf+jveAiKWY/CVcU0/o AaKaH7DVxEDztASzbI/zBNmLxJzs2LUuvH1BU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723474637; x=1724079437; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ItAoJGLSfkfsRS38y1iOZ6bIC8SZzEF77FLkXtuBPRA=; b=DBhnuC/Fbp9ichQAAW3Delo5XX/sF/sEevu1yrgh3v/hOaOMvQv5zpZLPQ3XOp8Tpk zO0G4EEivrJbfQS/T5zNhMW0ReYIO65R6HWo+aG6gwXa4pL/WqFaNSnzvdUdNIm5Uf2T qO7nw5xoUzPIrp28rkt7MVojPSRLutl7lQ9mDLFyl71s1wcc06EGroiTHe0dEpjCSSUZ N5eg7c5L0wtatgIZoYDOQCTNr081inkxbmndFAZjYdIs8hxiVBiyaA/mPz/+L9gvqir0 pItASDBj0L++UDdzq3xClO5pR2H3WOji0t55I74FuQWF1FL8iw5+iPzdEZHxtbU8tB0G 0xxA== X-Forwarded-Encrypted: i=1; AJvYcCVGjQc6JzqfBiXgPKYvEHRKus+ogTRBQJnexM1LXZWV9QpnjkUdFB1zHXE6OhMJju9ySZJ7jNMkI8tEBdlUBAwuf7Y/iTc2LQaW3pun X-Gm-Message-State: AOJu0Yxap3rWM/fmb/wDUUoxtJMmXX/Z5564N1u4/WJyhTYhuqDHH48q Zyv6eFgdsxufLfJwONCTn7qV5KeCvCMxTPXU+5HbXWhdQ7xS3+wIOMqyWKmvkiY= X-Google-Smtp-Source: AGHT+IF6+BtyPaJDNmgeJnbxo3+hA+k0daqI0HbQdgRptG4H/1cOc+4ZuJzFbF2axrgf7+g7HivGWg== X-Received: by 2002:a17:903:1447:b0:1f9:f906:9088 with SMTP id d9443c01a7336-201ca13c3f4mr7492035ad.22.1723474636902; Mon, 12 Aug 2024 07:57:16 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-200bb8fd835sm39006955ad.89.2024.08.12.07.57.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Aug 2024 07:57:16 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: Joe Damato , Tariq Toukan , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Yishai Hadas , linux-rdma@vger.kernel.org (open list:MELLANOX MLX4 core VPI driver), linux-kernel@vger.kernel.org (open list) Subject: [RFC net-next 6/6] mlx4: Use napi_affinity_no_change Date: Mon, 12 Aug 2024 14:56:27 +0000 Message-Id: <20240812145633.52911-7-jdamato@fastly.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240812145633.52911-1-jdamato@fastly.com> References: <20240812145633.52911-1-jdamato@fastly.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use napi_affinity_no_change instead of mlx4's internal implementation, simplifying and centralizing the logic. To support this, some type changes were made, which might have been bugs: - mlx4_eq_get_irq should return unsigned int (since the field it returns is u16) - fix the type of irq (from int to unsigned int) in mlx4_en_activate_cq Signed-off-by: Joe Damato --- drivers/net/ethernet/mellanox/mlx4/en_cq.c | 6 ++++-- drivers/net/ethernet/mellanox/mlx4/en_rx.c | 6 +----- drivers/net/ethernet/mellanox/mlx4/eq.c | 2 +- drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 + include/linux/mlx4/device.h | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_cq.c b/drivers/net/ether= net/mellanox/mlx4/en_cq.c index 461cc2c79c71..9c3e1c810412 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_cq.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_cq.c @@ -90,9 +90,10 @@ int mlx4_en_activate_cq(struct mlx4_en_priv *priv, struc= t mlx4_en_cq *cq, int cq_idx) { struct mlx4_en_dev *mdev =3D priv->mdev; - int irq, err =3D 0; - int timestamp_en =3D 0; bool assigned_eq =3D false; + int timestamp_en =3D 0; + unsigned int irq; + int err =3D 0; =20 cq->dev =3D mdev->pndev[priv->port]; cq->mcq.set_ci_db =3D cq->wqres.db.db; @@ -144,6 +145,7 @@ int mlx4_en_activate_cq(struct mlx4_en_priv *priv, stru= ct mlx4_en_cq *cq, goto free_eq; =20 cq->cq_idx =3D cq_idx; + cq->irq =3D irq; cq->mcq.event =3D mlx4_en_cq_event; =20 switch (cq->type) { diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ether= net/mellanox/mlx4/en_rx.c index 15c57e9517e9..4c296327b75b 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -1022,14 +1022,10 @@ int mlx4_en_poll_rx_cq(struct napi_struct *napi, in= t budget) =20 /* If we used up all the quota - we're probably not done yet... */ if (done =3D=3D budget || !clean_complete) { - int cpu_curr; - /* in case we got here because of !clean_complete */ done =3D budget; =20 - cpu_curr =3D smp_processor_id(); - - if (likely(cpumask_test_cpu(cpu_curr, cq->aff_mask))) + if (likely(napi_affinity_no_change(cq->irq))) return budget; =20 /* Current cpu is not according to smp_irq_affinity - diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet= /mellanox/mlx4/eq.c index 9572a45f6143..feca4ea30750 100644 --- a/drivers/net/ethernet/mellanox/mlx4/eq.c +++ b/drivers/net/ethernet/mellanox/mlx4/eq.c @@ -1539,7 +1539,7 @@ int mlx4_assign_eq(struct mlx4_dev *dev, u8 port, int= *vector) } EXPORT_SYMBOL(mlx4_assign_eq); =20 -int mlx4_eq_get_irq(struct mlx4_dev *dev, int cq_vec) +unsigned int mlx4_eq_get_irq(struct mlx4_dev *dev, int cq_vec) { struct mlx4_priv *priv =3D mlx4_priv(dev); =20 diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/eth= ernet/mellanox/mlx4/mlx4_en.h index 28b70dcc652e..1f9830b23c9c 100644 --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h @@ -381,6 +381,7 @@ struct mlx4_en_cq { =20 const struct cpumask *aff_mask; int cq_idx; + unsigned int irq; }; =20 struct mlx4_en_port_profile { diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 27f42f713c89..1f2e9e954768 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h @@ -1433,7 +1433,7 @@ int mlx4_assign_eq(struct mlx4_dev *dev, u8 port, int= *vector); void mlx4_release_eq(struct mlx4_dev *dev, int vec); =20 int mlx4_is_eq_shared(struct mlx4_dev *dev, int vector); -int mlx4_eq_get_irq(struct mlx4_dev *dev, int vec); +unsigned int mlx4_eq_get_irq(struct mlx4_dev *dev, int vec); =20 int mlx4_get_phys_port_id(struct mlx4_dev *dev); int mlx4_wol_read(struct mlx4_dev *dev, u64 *config, int port); --=20 2.25.1