drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
Convert the ixgbe driver to use the new .get_rx_ring_count ethtool
operation for handling ETHTOOL_GRXRINGS command. This simplifies the
code by extracting the ring count logic into a dedicated callback.
The new callback provides the same functionality in a more direct way,
following the ongoing ethtool API modernization.
Signed-off-by: Breno Leitao <leitao@debian.org>
---
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index 2d660e9edb80..2ad81f687a84 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -2805,6 +2805,14 @@ static int ixgbe_rss_indir_tbl_max(struct ixgbe_adapter *adapter)
return 64;
}
+static u32 ixgbe_get_rx_ring_count(struct net_device *dev)
+{
+ struct ixgbe_adapter *adapter = ixgbe_from_netdev(dev);
+
+ return min_t(u32, adapter->num_rx_queues,
+ ixgbe_rss_indir_tbl_max(adapter));
+}
+
static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
u32 *rule_locs)
{
@@ -2812,11 +2820,6 @@ static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
int ret = -EOPNOTSUPP;
switch (cmd->cmd) {
- case ETHTOOL_GRXRINGS:
- cmd->data = min_t(int, adapter->num_rx_queues,
- ixgbe_rss_indir_tbl_max(adapter));
- ret = 0;
- break;
case ETHTOOL_GRXCLSRLCNT:
cmd->rule_cnt = adapter->fdir_filter_count;
ret = 0;
@@ -3743,6 +3746,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops = {
.get_ethtool_stats = ixgbe_get_ethtool_stats,
.get_coalesce = ixgbe_get_coalesce,
.set_coalesce = ixgbe_set_coalesce,
+ .get_rx_ring_count = ixgbe_get_rx_ring_count,
.get_rxnfc = ixgbe_get_rxnfc,
.set_rxnfc = ixgbe_set_rxnfc,
.get_rxfh_indir_size = ixgbe_rss_indir_size,
@@ -3791,6 +3795,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops_e610 = {
.get_ethtool_stats = ixgbe_get_ethtool_stats,
.get_coalesce = ixgbe_get_coalesce,
.set_coalesce = ixgbe_set_coalesce,
+ .get_rx_ring_count = ixgbe_get_rx_ring_count,
.get_rxnfc = ixgbe_get_rxnfc,
.set_rxnfc = ixgbe_set_rxnfc,
.get_rxfh_indir_size = ixgbe_rss_indir_size,
---
base-commit: bde974ef62569a7da12aa71d182a760cd6223c36
change-id: 20251112-ixgbe_gxrings-61c6f71d712b
Best regards,
--
Breno Leitao <leitao@debian.org>
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf
> Of Breno Leitao
> Sent: Wednesday, November 12, 2025 11:23 AM
> To: Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Kitszel,
> Przemyslaw <przemyslaw.kitszel@intel.com>; Andrew Lunn
> <andrew+netdev@lunn.ch>; David S. Miller <davem@davemloft.net>; Eric
> Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; Paolo
> Abeni <pabeni@redhat.com>
> Cc: intel-wired-lan@lists.osuosl.org; netdev@vger.kernel.org; linux-
> kernel@vger.kernel.org; kernel-team@meta.com; Breno Leitao
> <leitao@debian.org>
> Subject: [Intel-wired-lan] [PATCH net-next] net: ixgbe: convert to use
> .get_rx_ring_count
>
> Convert the ixgbe driver to use the new .get_rx_ring_count ethtool
> operation for handling ETHTOOL_GRXRINGS command. This simplifies the
> code by extracting the ring count logic into a dedicated callback.
>
> The new callback provides the same functionality in a more direct way,
> following the ongoing ethtool API modernization.
>
> Signed-off-by: Breno Leitao <leitao@debian.org>
> ---
> drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
> b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
> index 2d660e9edb80..2ad81f687a84 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
> @@ -2805,6 +2805,14 @@ static int ixgbe_rss_indir_tbl_max(struct
> ixgbe_adapter *adapter)
> return 64;
> }
>
> +static u32 ixgbe_get_rx_ring_count(struct net_device *dev) {
> + struct ixgbe_adapter *adapter = ixgbe_from_netdev(dev);
> +
> + return min_t(u32, adapter->num_rx_queues,
> + ixgbe_rss_indir_tbl_max(adapter));
> +}
> +
> static int ixgbe_get_rxnfc(struct net_device *dev, struct
> ethtool_rxnfc *cmd,
> u32 *rule_locs)
> {
> @@ -2812,11 +2820,6 @@ static int ixgbe_get_rxnfc(struct net_device
> *dev, struct ethtool_rxnfc *cmd,
> int ret = -EOPNOTSUPP;
>
> switch (cmd->cmd) {
> - case ETHTOOL_GRXRINGS:
> - cmd->data = min_t(int, adapter->num_rx_queues,
> - ixgbe_rss_indir_tbl_max(adapter));
> - ret = 0;
> - break;
> case ETHTOOL_GRXCLSRLCNT:
> cmd->rule_cnt = adapter->fdir_filter_count;
> ret = 0;
> @@ -3743,6 +3746,7 @@ static const struct ethtool_ops
> ixgbe_ethtool_ops = {
> .get_ethtool_stats = ixgbe_get_ethtool_stats,
> .get_coalesce = ixgbe_get_coalesce,
> .set_coalesce = ixgbe_set_coalesce,
> + .get_rx_ring_count = ixgbe_get_rx_ring_count,
> .get_rxnfc = ixgbe_get_rxnfc,
> .set_rxnfc = ixgbe_set_rxnfc,
> .get_rxfh_indir_size = ixgbe_rss_indir_size,
> @@ -3791,6 +3795,7 @@ static const struct ethtool_ops
> ixgbe_ethtool_ops_e610 = {
> .get_ethtool_stats = ixgbe_get_ethtool_stats,
> .get_coalesce = ixgbe_get_coalesce,
> .set_coalesce = ixgbe_set_coalesce,
> + .get_rx_ring_count = ixgbe_get_rx_ring_count,
> .get_rxnfc = ixgbe_get_rxnfc,
> .set_rxnfc = ixgbe_set_rxnfc,
> .get_rxfh_indir_size = ixgbe_rss_indir_size,
>
> ---
> base-commit: bde974ef62569a7da12aa71d182a760cd6223c36
> change-id: 20251112-ixgbe_gxrings-61c6f71d712b
>
> Best regards,
> --
> Breno Leitao <leitao@debian.org>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Dear Breno,
Thank you for your patch.
Am 12.11.25 um 11:23 schrieb Breno Leitao:
> Convert the ixgbe driver to use the new .get_rx_ring_count ethtool
> operation for handling ETHTOOL_GRXRINGS command. This simplifies the
> code by extracting the ring count logic into a dedicated callback.
>
> The new callback provides the same functionality in a more direct way,
> following the ongoing ethtool API modernization.
Maybe add a paragraph how you tested this.
> Signed-off-by: Breno Leitao <leitao@debian.org>
> ---
> drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
> index 2d660e9edb80..2ad81f687a84 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
> @@ -2805,6 +2805,14 @@ static int ixgbe_rss_indir_tbl_max(struct ixgbe_adapter *adapter)
> return 64;
> }
>
> +static u32 ixgbe_get_rx_ring_count(struct net_device *dev)
> +{
> + struct ixgbe_adapter *adapter = ixgbe_from_netdev(dev);
> +
> + return min_t(u32, adapter->num_rx_queues,
> + ixgbe_rss_indir_tbl_max(adapter));
> +}
> +
> static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
> u32 *rule_locs)
> {
> @@ -2812,11 +2820,6 @@ static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
> int ret = -EOPNOTSUPP;
>
> switch (cmd->cmd) {
> - case ETHTOOL_GRXRINGS:
> - cmd->data = min_t(int, adapter->num_rx_queues,
> - ixgbe_rss_indir_tbl_max(adapter));
> - ret = 0;
> - break;
> case ETHTOOL_GRXCLSRLCNT:
> cmd->rule_cnt = adapter->fdir_filter_count;
> ret = 0;
> @@ -3743,6 +3746,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops = {
> .get_ethtool_stats = ixgbe_get_ethtool_stats,
> .get_coalesce = ixgbe_get_coalesce,
> .set_coalesce = ixgbe_set_coalesce,
> + .get_rx_ring_count = ixgbe_get_rx_ring_count,
> .get_rxnfc = ixgbe_get_rxnfc,
> .set_rxnfc = ixgbe_set_rxnfc,
> .get_rxfh_indir_size = ixgbe_rss_indir_size,
> @@ -3791,6 +3795,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops_e610 = {
> .get_ethtool_stats = ixgbe_get_ethtool_stats,
> .get_coalesce = ixgbe_get_coalesce,
> .set_coalesce = ixgbe_set_coalesce,
> + .get_rx_ring_count = ixgbe_get_rx_ring_count,
> .get_rxnfc = ixgbe_get_rxnfc,
> .set_rxnfc = ixgbe_set_rxnfc,
> .get_rxfh_indir_size = ixgbe_rss_indir_size,
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Kind regards,
Paul
© 2016 - 2026 Red Hat, Inc.