From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 B7E5A2571BD for ; Mon, 17 Nov 2025 13:41:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763386875; cv=none; b=O2nFub2euCiZNBC7b9xnPLPQCzg2FT44D/9xACYFFc3vD0clDkdGb/BWTHUdgbRnEsbYE64P4+X0X65viwJNlhzxFMHpR4kPFLaESg3FrpMUR2qH8YyF80vRkPgP7XaXcwExj3aci9tiqB8Q4keKGwEF3TFjZxZrSsIcas6K1nw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763386875; c=relaxed/simple; bh=j7VPNFFlZq0BUXDuPDvasOjKyVgPrnkIbLr53dQ6JYU=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=MkEiHWHYgJuSSvdxG4DsOuDIaM9dP2i/n/5EnElwUO1qGnHnqknidOe2wDI+fcf02maUYQUjS3+zgccAXlynar/p0kIlouf9VtvWdm7SanZWAh4TN1TDT5nhhebVoBCOu5V51H305OlzPgSI62K6KMfPUCof+ECG16YpT5cN+l0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mvuH4Q0y; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mvuH4Q0y" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-477632d9326so29529605e9.1 for ; Mon, 17 Nov 2025 05:41:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763386872; x=1763991672; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=6lFKQIH/3Mxeg5x+zKX6H3OQkOENi/J/tZcjNSVfL9A=; b=mvuH4Q0ylx3gd78BJd6PspzQ7DkWdcZPfLIktLA01bvmw+kOYf9hKI+k5KYtE9hpTb coVydcv3dY5EcOnEdDJtDtjkVcjc65NGc5ozope+tPcaKRDW+zTnMSyAvCZKdMaoB7QR eJKczQrbqu7WmrSYX5Tfmy0UUPE1HFH8cNb/PV0K5x0oxbT7+0NeR2BTPhPbgbZlsaMG q0toAe+eAGqlA1o4877pc71Weud2xK1U7c9LoHAMa8U8lENi886axCWHQVwKUfLe92YN 5kuO/13X1lY15lbPZXdzQmeijNS0r+0GFl3FgQoKF/Q5PTD7OKFQKHJE2pYkJGNazxI+ uh/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763386872; x=1763991672; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6lFKQIH/3Mxeg5x+zKX6H3OQkOENi/J/tZcjNSVfL9A=; b=jvaj/ZWtGD3g3dU9QS4F5gldcBY77inLFH+hQQiHJ2Iaqt/qIo+X/Avs99NNoUTHHU Byjd3qKhMLdDis61uemzFo0rbkNC59c9mKXB2y4ubDqXsV5fI4XR1pbvE3PbkMHZeIjl j9xHfex48wHUUWAl8JGj+guQ5I7O7HE0/AI4CiBMC14tCCio7RZ5e5Vvr/weAKjMLC+h 9gjSz+NiXq369TwurWabY02lIrDdRpEAZt2C50QymbEUHW2YL7SZFv60c6xD+gE4Baxh Rf5mQ06kqYki7a22yIRDQ9MRf0YB8529Q2R5uD0Cd06pbcE6h0xxQayaXf2rrJSnZ1R2 +vaA== X-Forwarded-Encrypted: i=1; AJvYcCVKFQgEMMzf++zYrNNGLGlb95R5sPnexQfRMCDNlj5GoiT225XjOovR9JCRhH23esXsG/6Ycu0zyWJ1ED4=@vger.kernel.org X-Gm-Message-State: AOJu0YzpbwqJrsYURROVaqs5czEPl+bHvRx6s09r8A0sCxVapn89T/Tt 2scX6sHHLQ8Gz69D0hejvcaRfDTxCGA5OWLPMlDEZHNTa8+usCBl6sQc X-Gm-Gg: ASbGncu4jr/tcGYJWWKdejMt+8mcBIAGjvbnoXf4R8p+pnCEBmq4lirLvMfEHAbw0EQ TTuX85eooOWMLfSFfTqHQIDkmgrxd6jXsy1syuBBfhCC18VL9gTPOr4k2fXiX5PmnvX3GDVMNA6 9/rmNdh1uOjXEqfKfbmPLjA85LmfioPdBM7HxveFqxZNF4NVR7gvd2woQVwAoDSRELYhx+pZcBt 0Xq6y3Wbsic6+SizNgxvPiRCCxPmILb7MZhzPuFlBZEkxMUKBpn6dgEpk0j5m1QnN74WmukeEoh NCIr3qVq1i1wWXx6tXUGAiSuz9ynMHloDY4D0FEQPqfH13h77SxEVEi2hVKBa0w4oyF1OP9MZg6 8L0+n5qnOuw09leGbQq7eu2tqfICCxeRqhjo+7jBVwrRApWRPwHVAX+qGASCIjELc2UEkS3oQ6q t0EWI2S5YqoWrkmU+DX4g6GZ699So= X-Google-Smtp-Source: AGHT+IGHE9acfTrCcDeNM7N4fjnirYz4dNvSnn3lNuor1rshswnUa4aKqX6YbOkPdeLKvX06tMOqdg== X-Received: by 2002:a05:600c:3587:b0:477:5aaa:57a3 with SMTP id 5b1f17b1804b1-4778fe55589mr120648835e9.2.1763386871346; Mon, 17 Nov 2025 05:41:11 -0800 (PST) Received: from [10.80.3.86] ([72.25.96.18]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47787e36ca3sm332453495e9.5.2025.11.17.05.41.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Nov 2025 05:41:11 -0800 (PST) Message-ID: Date: Mon, 17 Nov 2025 15:41:09 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] mlx5: extract GRXRINGS from .get_rxnfc To: Breno Leitao , Tariq Toukan , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Saeed Mahameed , Mark Bloch , Leon Romanovsky Cc: netdev@vger.kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@meta.com References: <20251113-mlx_grxrings-v1-0-0017f2af7dd0@debian.org> <20251113-mlx_grxrings-v1-2-0017f2af7dd0@debian.org> Content-Language: en-US From: Tariq Toukan In-Reply-To: <20251113-mlx_grxrings-v1-2-0017f2af7dd0@debian.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 13/11/2025 18:46, Breno Leitao wrote: > Commit 84eaf4359c36 ("net: ethtool: add get_rx_ring_count callback to > optimize RX ring queries") added specific support for GRXRINGS callback, > simplifying .get_rxnfc. > > Remove the handling of GRXRINGS in .get_rxnfc() by moving it to the new > .get_rx_ring_count() for both the mlx5 ethernet and IPoIB drivers. > > The ETHTOOL_GRXRINGS handling was previously kept in .get_rxnfc() to > support "ethtool -x" when CONFIG_MLX5_EN_RXNFC=n. With the new > dedicated .get_rx_ring_count() callback, this is no longer necessary. > > This simplifies the RX ring count retrieval and aligns mlx5 with the new > ethtool API for querying RX ring parameters. > > Signed-off-by: Breno Leitao > --- > drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 18 ++++++++---------- > .../net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 18 ++++++++---------- > 2 files changed, 16 insertions(+), 20 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c > index 01b8f05a23db..939e274779b3 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c > @@ -2492,21 +2492,18 @@ static int mlx5e_set_rxfh_fields(struct net_device *dev, > return mlx5e_ethtool_set_rxfh_fields(priv, cmd, extack); > } > > +static u32 mlx5e_get_rx_ring_count(struct net_device *dev) > +{ > + struct mlx5e_priv *priv = netdev_priv(dev); > + > + return priv->channels.params.num_channels; > +} > + > static int mlx5e_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info, > u32 *rule_locs) > { > struct mlx5e_priv *priv = netdev_priv(dev); > > - /* ETHTOOL_GRXRINGS is needed by ethtool -x which is not part > - * of rxnfc. We keep this logic out of mlx5e_ethtool_get_rxnfc, > - * to avoid breaking "ethtool -x" when mlx5e_ethtool_get_rxnfc > - * is compiled out via CONFIG_MLX5_EN_RXNFC=n. > - */ > - if (info->cmd == ETHTOOL_GRXRINGS) { > - info->data = priv->channels.params.num_channels; > - return 0; > - } > - > return mlx5e_ethtool_get_rxnfc(priv, info, rule_locs); > } > > @@ -2766,6 +2763,7 @@ const struct ethtool_ops mlx5e_ethtool_ops = { > .remove_rxfh_context = mlx5e_remove_rxfh_context, > .get_rxnfc = mlx5e_get_rxnfc, > .set_rxnfc = mlx5e_set_rxnfc, > + .get_rx_ring_count = mlx5e_get_rx_ring_count, > .get_tunable = mlx5e_get_tunable, > .set_tunable = mlx5e_set_tunable, > .get_pause_stats = mlx5e_get_pause_stats, > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c > index 4b3430ac3905..3b2f54ca30a8 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c > @@ -266,21 +266,18 @@ static int mlx5i_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd) > return mlx5e_ethtool_set_rxnfc(priv, cmd); > } > > +static u32 mlx5i_get_rx_ring_count(struct net_device *dev) > +{ > + struct mlx5e_priv *priv = mlx5i_epriv(dev); > + > + return priv->channels.params.num_channels; > +} > + > static int mlx5i_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info, > u32 *rule_locs) > { > struct mlx5e_priv *priv = mlx5i_epriv(dev); > > - /* ETHTOOL_GRXRINGS is needed by ethtool -x which is not part > - * of rxnfc. We keep this logic out of mlx5e_ethtool_get_rxnfc, > - * to avoid breaking "ethtool -x" when mlx5e_ethtool_get_rxnfc > - * is compiled out via CONFIG_MLX5_EN_RXNFC=n. > - */ > - if (info->cmd == ETHTOOL_GRXRINGS) { > - info->data = priv->channels.params.num_channels; > - return 0; > - } > - > return mlx5e_ethtool_get_rxnfc(priv, info, rule_locs); > } > > @@ -304,6 +301,7 @@ const struct ethtool_ops mlx5i_ethtool_ops = { > .set_rxfh_fields = mlx5i_set_rxfh_fields, > .get_rxnfc = mlx5i_get_rxnfc, > .set_rxnfc = mlx5i_set_rxnfc, > + .get_rx_ring_count = mlx5i_get_rx_ring_count, > .get_link_ksettings = mlx5i_get_link_ksettings, > .get_link = ethtool_op_get_link, > }; > Reviewed-by: Tariq Toukan Thanks.