* [PATCH net] net: stmmac: Don't set or get RSS parameters when not supported
@ 2026-09-26 9:33 Maxime Chevallier
2026-09-26 18:41 ` Nicolai Buchwitz
0 siblings, 1 reply; 3+ messages in thread
From: Maxime Chevallier @ 2026-09-26 9:33 UTC (permalink / raw)
To: Andrew Lunn, Jakub Kicinski, davem, Eric Dumazet, Paolo Abeni,
Simon Horman, Maxime Coquelin, Alexandre Torgue, Russell King,
Jitendra Vegiraju
Cc: Maxime Chevallier, thomas.petazzoni, Alexis Lothoré,
netdev, linux-kernel, linux-arm-kernel, linux-stm32
The RSS kselftests fail on stmmac, and this is partly due to the driver
reporting bogus data for the RSS ops :
- ethtool -x reports an indirection table and a key while the hardware
doesn't have any of that
- ethtool -X fails with -EINVAL.
Let's return early in the rss ops if we know the hardware and platform
don't support RSS.
Note that RSS is currently not supported on any devices upstream, so
code that was already useless is now effectively dead. It has been the
case since 2019 when the code was added, as platforms need to set rss_en
in their plat data, and no glue ever did that.
Russell King ran a poll in february 2026 [1] asking if the code should
be dropped, without any reply going in either direction.
Jitendra Vegiraju from Broadcom sent 9 iterations of a Broadcom PCIe glue
driver [2] that actually sets rss_en = 1, so there's some hope that this
may be used in the future.
[1] : https://lore.kernel.org/netdev/aYd4BkAeNW6d0iIC@shell.armlinux.org.uk/
[2] : https://lore.kernel.org/netdev/20260402213629.1996133-1-jitendra.vegiraju@broadcom.com/
Fixes: 76067459c686 ("net: stmmac: Implement RSS and enable it in XGMAC core")
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
---
Jitendra, do you have plans to continue iterating on the BCM8958x glue ?
Thanks,
Maxime
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index 1be5310ca766..4e917a448271 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -927,6 +927,9 @@ static u32 stmmac_get_rxfh_key_size(struct net_device *dev)
{
struct stmmac_priv *priv = netdev_priv(dev);
+ if (!priv->dma_cap.rssen || !priv->plat->rss_en)
+ return 0;
+
return sizeof(priv->rss.key);
}
@@ -934,6 +937,9 @@ static u32 stmmac_get_rxfh_indir_size(struct net_device *dev)
{
struct stmmac_priv *priv = netdev_priv(dev);
+ if (!priv->dma_cap.rssen || !priv->plat->rss_en)
+ return 0;
+
return ARRAY_SIZE(priv->rss.table);
}
@@ -943,6 +949,9 @@ static int stmmac_get_rxfh(struct net_device *dev,
struct stmmac_priv *priv = netdev_priv(dev);
int i;
+ if (!priv->dma_cap.rssen || !priv->plat->rss_en)
+ return -EOPNOTSUPP;
+
if (rxfh->indir) {
for (i = 0; i < ARRAY_SIZE(priv->rss.table); i++)
rxfh->indir[i] = priv->rss.table[i];
@@ -962,6 +971,9 @@ static int stmmac_set_rxfh(struct net_device *dev,
struct stmmac_priv *priv = netdev_priv(dev);
int i;
+ if (!priv->dma_cap.rssen || !priv->plat->rss_en)
+ return -EOPNOTSUPP;
+
if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE &&
rxfh->hfunc != ETH_RSS_HASH_TOP)
return -EOPNOTSUPP;
--
2.55.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] net: stmmac: Don't set or get RSS parameters when not supported
2026-09-26 9:33 [PATCH net] net: stmmac: Don't set or get RSS parameters when not supported Maxime Chevallier
@ 2026-09-26 18:41 ` Nicolai Buchwitz
2026-09-26 19:37 ` Maxime Chevallier
0 siblings, 1 reply; 3+ messages in thread
From: Nicolai Buchwitz @ 2026-09-26 18:41 UTC (permalink / raw)
To: Maxime Chevallier
Cc: Andrew Lunn, Jakub Kicinski, davem, Eric Dumazet, Paolo Abeni,
Simon Horman, Maxime Coquelin, Alexandre Torgue, Russell King,
Jitendra Vegiraju, thomas.petazzoni, Alexis Lothoré,
netdev, linux-kernel, linux-arm-kernel, linux-stm32
Hi Maxime
On 26.9.2026 11:33, Maxime Chevallier wrote:
> The RSS kselftests fail on stmmac, and this is partly due to the driver
> reporting bogus data for the RSS ops :
>
> - ethtool -x reports an indirection table and a key while the hardware
> doesn't have any of that
> - ethtool -X fails with -EINVAL.
>
> Let's return early in the rss ops if we know the hardware and platform
> don't support RSS.
>
> Note that RSS is currently not supported on any devices upstream, so
> code that was already useless is now effectively dead. It has been the
> case since 2019 when the code was added, as platforms need to set
> rss_en
> in their plat data, and no glue ever did that.
>
> Russell King ran a poll in february 2026 [1] asking if the code should
> be dropped, without any reply going in either direction.
>
> Jitendra Vegiraju from Broadcom sent 9 iterations of a Broadcom PCIe
> glue
> driver [2] that actually sets rss_en = 1, so there's some hope that
> this
> may be used in the future.
>
> [1] :
> https://lore.kernel.org/netdev/aYd4BkAeNW6d0iIC@shell.armlinux.org.uk/
> [2] :
> https://lore.kernel.org/netdev/20260402213629.1996133-1-jitendra.vegiraju@broadcom.com/
>
> Fixes: 76067459c686 ("net: stmmac: Implement RSS and enable it in XGMAC
> core")
> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
> ---
> Jitendra, do you have plans to continue iterating on the BCM8958x glue
> ?
>
> Thanks,
>
> Maxime
>
> drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
> b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
> index 1be5310ca766..4e917a448271 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
> @@ -927,6 +927,9 @@ static u32 stmmac_get_rxfh_key_size(struct
> net_device *dev)
> {
> struct stmmac_priv *priv = netdev_priv(dev);
>
> + if (!priv->dma_cap.rssen || !priv->plat->rss_en)
Should this pattern become a helper? Counting 6 instances so far.
> + return 0;
> +
> return sizeof(priv->rss.key);
> }
>
> @@ -934,6 +937,9 @@ static u32 stmmac_get_rxfh_indir_size(struct
> net_device *dev)
> {
> struct stmmac_priv *priv = netdev_priv(dev);
>
> + if (!priv->dma_cap.rssen || !priv->plat->rss_en)
> + return 0;
> +
> return ARRAY_SIZE(priv->rss.table);
> }
>
> @@ -943,6 +949,9 @@ static int stmmac_get_rxfh(struct net_device *dev,
> struct stmmac_priv *priv = netdev_priv(dev);
> int i;
>
> + if (!priv->dma_cap.rssen || !priv->plat->rss_en)
> + return -EOPNOTSUPP;
Not a blocker, but a full netlink RSS dump (like the one in rss_ctx.py)
now stops at this device. Naybe rss_dump_one_dev() should skip
-EOPNOTSUPP
like ethnl_default_dumpit() does?
> +
> if (rxfh->indir) {
> for (i = 0; i < ARRAY_SIZE(priv->rss.table); i++)
> rxfh->indir[i] = priv->rss.table[i];
> @@ -962,6 +971,9 @@ static int stmmac_set_rxfh(struct net_device *dev,
> struct stmmac_priv *priv = netdev_priv(dev);
> int i;
>
> + if (!priv->dma_cap.rssen || !priv->plat->rss_en)
> + return -EOPNOTSUPP;
> +
> if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE &&
> rxfh->hfunc != ETH_RSS_HASH_TOP)
> return -EOPNOTSUPP;
Thanks,
Nicolai
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] net: stmmac: Don't set or get RSS parameters when not supported
2026-09-26 18:41 ` Nicolai Buchwitz
@ 2026-09-26 19:37 ` Maxime Chevallier
0 siblings, 0 replies; 3+ messages in thread
From: Maxime Chevallier @ 2026-09-26 19:37 UTC (permalink / raw)
To: Nicolai Buchwitz
Cc: Andrew Lunn, Jakub Kicinski, davem, Eric Dumazet, Paolo Abeni,
Simon Horman, Maxime Coquelin, Alexandre Torgue, Russell King,
Jitendra Vegiraju, thomas.petazzoni, Alexis Lothoré,
netdev, linux-kernel, linux-arm-kernel, linux-stm32
Hi Nicolai,
On 9/26/26 20:41, Nicolai Buchwitz wrote:
> Hi Maxime
>
> On 26.9.2026 11:33, Maxime Chevallier wrote:
>> The RSS kselftests fail on stmmac, and this is partly due to the driver
>> reporting bogus data for the RSS ops :
>>
>> - ethtool -x reports an indirection table and a key while the hardware
>> doesn't have any of that
>> - ethtool -X fails with -EINVAL.
>>
>> Let's return early in the rss ops if we know the hardware and platform
>> don't support RSS.
>>
>> Note that RSS is currently not supported on any devices upstream, so
>> code that was already useless is now effectively dead. It has been the
>> case since 2019 when the code was added, as platforms need to set rss_en
>> in their plat data, and no glue ever did that.
>>
>> Russell King ran a poll in february 2026 [1] asking if the code should
>> be dropped, without any reply going in either direction.
>>
>> Jitendra Vegiraju from Broadcom sent 9 iterations of a Broadcom PCIe glue
>> driver [2] that actually sets rss_en = 1, so there's some hope that this
>> may be used in the future.
>>
>> [1] : https://lore.kernel.org/netdev/aYd4BkAeNW6d0iIC@shell.armlinux.org.uk/
>> [2] : https://lore.kernel.org/netdev/20260402213629.1996133-1-jitendra.vegiraju@broadcom.com/
>>
>> Fixes: 76067459c686 ("net: stmmac: Implement RSS and enable it in XGMAC core")
>> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
>> ---
>> Jitendra, do you have plans to continue iterating on the BCM8958x glue ?
>>
>> Thanks,
>>
>> Maxime
>>
>> drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
>> index 1be5310ca766..4e917a448271 100644
>> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
>> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
>> @@ -927,6 +927,9 @@ static u32 stmmac_get_rxfh_key_size(struct net_device *dev)
>> {
>> struct stmmac_priv *priv = netdev_priv(dev);
>>
>> + if (!priv->dma_cap.rssen || !priv->plat->rss_en)
>
> Should this pattern become a helper? Counting 6 instances so far.
yeah why not :)
>
>> + return 0;
>> +
>> return sizeof(priv->rss.key);
>> }
>>
>> @@ -934,6 +937,9 @@ static u32 stmmac_get_rxfh_indir_size(struct net_device *dev)
>> {
>> struct stmmac_priv *priv = netdev_priv(dev);
>>
>> + if (!priv->dma_cap.rssen || !priv->plat->rss_en)
>> + return 0;
>> +
>> return ARRAY_SIZE(priv->rss.table);
>> }
>>
>> @@ -943,6 +949,9 @@ static int stmmac_get_rxfh(struct net_device *dev,
>> struct stmmac_priv *priv = netdev_priv(dev);
>> int i;
>>
>> + if (!priv->dma_cap.rssen || !priv->plat->rss_en)
>> + return -EOPNOTSUPP;
>
> Not a blocker, but a full netlink RSS dump (like the one in rss_ctx.py)
> now stops at this device. Naybe rss_dump_one_dev() should skip -EOPNOTSUPP
> like ethnl_default_dumpit() does?
there are other drivers that report -EOPNOTSUPP, we could have that as
a separate patch yeah
Thanks for looking at this,
Maxime
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-26 19:38 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-26 9:33 [PATCH net] net: stmmac: Don't set or get RSS parameters when not supported Maxime Chevallier
2026-09-26 18:41 ` Nicolai Buchwitz
2026-09-26 19:37 ` Maxime Chevallier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®