When setting "ethtool -L eth0 combined 1", the number of RX/TX queue is changed to be 1. RSS is disabled at this moment, and the indices of FDIR have not be changed in wx_set_rss_queues(). So the combined count still shows the previous value. This issue was introduced when supporting FDIR. Fix it for those devices that support FDIR.
Fixes: 34744a7749b3 ("net: txgbe: add FDIR info to ethtool ops") Cc: stable@vger.kernel.org Signed-off-by: Jiawen Wu jiawenwu@trustnetic.com --- drivers/net/ethernet/wangxun/libwx/wx_ethtool.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c index c12a4cb951f6..d9de600e685a 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c @@ -438,6 +438,10 @@ void wx_get_channels(struct net_device *dev, /* record RSS queues */ ch->combined_count = wx->ring_feature[RING_F_RSS].indices;
+ /* nothing else to report if RSS is disabled */ + if (ch->combined_count == 1) + return; + if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) ch->combined_count = wx->ring_feature[RING_F_FDIR].indices; }
On Fri, Jun 27, 2025 at 04:09:38PM +0800, Jiawen Wu wrote:
When setting "ethtool -L eth0 combined 1", the number of RX/TX queue is changed to be 1. RSS is disabled at this moment, and the indices of FDIR have not be changed in wx_set_rss_queues(). So the combined count still shows the previous value. This issue was introduced when supporting FDIR. Fix it for those devices that support FDIR.
Fixes: 34744a7749b3 ("net: txgbe: add FDIR info to ethtool ops") Cc: stable@vger.kernel.org Signed-off-by: Jiawen Wu jiawenwu@trustnetic.com
I am assuming that this is for net.
Reviewed-by: Simon Horman horms@kernel.org
...
On Fri, 27 Jun 2025 16:09:38 +0800 Jiawen Wu wrote:
When setting "ethtool -L eth0 combined 1", the number of RX/TX queue is changed to be 1. RSS is disabled at this moment, and the indices of FDIR have not be changed in wx_set_rss_queues(). So the combined count still shows the previous value. This issue was introduced when supporting FDIR. Fix it for those devices that support FDIR.
Why are you hacking up the get_channels rather than making _F_FDIR be sane in all situations? I mean why not:
--- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c @@ -1709,6 +1709,7 @@ static void wx_set_rss_queues(struct wx *wx) * distribution of flows across cores, even when an FDIR flow * isn't matched. */ + wx->ring_feature[RING_F_FDIR].indices = 1; if (f->indices > 1) { f = &wx->ring_feature[RING_F_FDIR];
?
On Tue, Jul 1, 2025 9:31 AM, Jakub Kicinski wrote:
On Fri, 27 Jun 2025 16:09:38 +0800 Jiawen Wu wrote:
When setting "ethtool -L eth0 combined 1", the number of RX/TX queue is changed to be 1. RSS is disabled at this moment, and the indices of FDIR have not be changed in wx_set_rss_queues(). So the combined count still shows the previous value. This issue was introduced when supporting FDIR. Fix it for those devices that support FDIR.
Why are you hacking up the get_channels rather than making _F_FDIR be sane in all situations? I mean why not:
--- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c @@ -1709,6 +1709,7 @@ static void wx_set_rss_queues(struct wx *wx) * distribution of flows across cores, even when an FDIR flow * isn't matched. */
wx->ring_feature[RING_F_FDIR].indices = 1; if (f->indices > 1) { f = &wx->ring_feature[RING_F_FDIR];
?
This is quite reasonable, thanks.
linux-stable-mirror@lists.linaro.org