[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <l66l2ijd45fkwniaesgau5jdzoxrdyt4t7tnsd6dpo4dlefytf@tugyhkn2th36>
Date: Mon, 19 Jan 2026 04:56:49 -0800
From: Breno Leitao <leitao@...ian.org>
To: Jakub Kicinski <kuba@...nel.org>
Cc: Ajit Khaparde <ajit.khaparde@...adcom.com>,
Sriharsha Basavapatna <sriharsha.basavapatna@...adcom.com>, Somnath Kotur <somnath.kotur@...adcom.com>,
Andrew Lunn <andrew+netdev@...n.ch>, "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>, Felix Fietkau <nbd@....name>,
Sean Wang <sean.wang@...iatek.com>, Lorenzo Bianconi <lorenzo@...nel.org>,
Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>, Shay Agroskin <shayagr@...zon.com>,
Arthur Kiyanovski <akiyano@...zon.com>, David Arinzon <darinzon@...zon.com>,
Saeed Bishara <saeedb@...zon.com>, Bryan Whitehead <bryan.whitehead@...rochip.com>,
UNGLinuxDriver@...rochip.com, Shyam Sundar S K <Shyam-sundar.S-k@....com>,
Raju Rangoju <Raju.Rangoju@....com>, Potnuri Bharat Teja <bharat@...lsio.com>,
Nicolas Ferre <nicolas.ferre@...rochip.com>, Claudiu Beznea <claudiu.beznea@...on.dev>,
Jiawen Wu <jiawenwu@...stnetic.com>, Mengyuan Lou <mengyuanlou@...-swift.com>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-mediatek@...ts.infradead.org
Subject: Re: [PATCH net-next 1/9] net: benet: convert to use
.get_rx_ring_count
On Mon, Jan 19, 2026 at 03:07:12AM -0800, Breno Leitao wrote:
> Hello Jakub,
>
> On Sat, Jan 17, 2026 at 06:15:51PM -0800, Jakub Kicinski wrote:
> > On Thu, 15 Jan 2026 06:37:48 -0800 Breno Leitao wrote:
> > > -static int be_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd,
> > > - u32 *rule_locs)
> > > -{
> > > - struct be_adapter *adapter = netdev_priv(netdev);
> > > -
> > > - if (!be_multi_rxq(adapter)) {
> > > - dev_info(&adapter->pdev->dev,
> > > - "ethtool::get_rxnfc: RX flow hashing is disabled\n");
> > > - return -EINVAL;
> > > - }
> >
> > I think we need to add this check to set_rxfh now. The error coming
> > from get_rxnfc/GRXRINGS effectively shielded the driver from set_rxfh
> > calls ever happening when there's only 1 ring. Now they will happen.
>
> You are absolutely correct. The ethtool core calls
> get_rxnfc(ETHTOOL_GRXRINGS) _before_ allowing RSS configuration via
> set_rxfh, and if it fails, ethtool_set_rxfh() will fail as well. And
> with the current change, ethtool_set_rxfh() will not fail if the adapter
> is not multi-queue.
Upon further consideration, should we implement this limitation directly within
the ethtool infrastructure?
Something as:
Author: Breno Leitao <leitao@...ian.org>
Date: Mon Jan 19 03:25:05 2026 -0800
ethtool: reject RSS configuration on single-queue devices
Configuring RSS (Receive Side Scaling) makes no sense when the device
only has a single RX queue - there is nothing to distribute traffic
across. The indirection table would just map everything to queue 0.
Add explicit checks in ethtool_set_rxfh_indir() and ethtool_set_rxfh()
to reject RSS configuration when the device reports fewer than 2 RX rings.
This protects all drivers uniformly at the core level.
Signed-off-by: Breno Leitao <leitao@...ian.org>
diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c
index 9431e305b233..899864e96aab 100644
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
@@ -1380,6 +1380,10 @@ static noinline_for_stack int ethtool_set_rxfh_indir(struct net_device *dev,
ret = num_rx_rings;
goto out;
}
+ if (num_rx_rings < 2) {
+ ret = -EOPNOTSUPP;
+ goto out;
+ }
if (user_size == 0) {
u32 *indir = rxfh_dev.indir;
@@ -1599,6 +1603,10 @@ static noinline_for_stack int ethtool_set_rxfh(struct net_device *dev,
ret = num_rx_rings;
goto out_free;
}
+ if (num_rx_rings < 2) {
+ ret = -EOPNOTSUPP;
+ goto out_free;
+ }
Powered by blists - more mailing lists