]> www.infradead.org Git - users/jedix/linux-maple.git/commit
net: ethtool: fix ethtool_ringparam_get_cfg() returns a hds_thresh value always as 0.
authorTaehee Yoo <ap420073@gmail.com>
Fri, 4 Apr 2025 12:21:25 +0000 (12:21 +0000)
committerJakub Kicinski <kuba@kernel.org>
Mon, 7 Apr 2025 18:00:00 +0000 (11:00 -0700)
commit216a61d33c0728a8cf1650aaed2c523c6ce16354
treefc2344d664879b223d6704030f6e103a58851e86
parent61f96e684edd28ca40555ec49ea1555df31ba619
net: ethtool: fix ethtool_ringparam_get_cfg() returns a hds_thresh value always as 0.

When hds-thresh is configured, ethnl_set_rings() is called, and it calls
ethtool_ringparam_get_cfg() to get ringparameters from .get_ringparam()
callback and dev->cfg.
Both hds_config and hds_thresh values should be set from dev->cfg, not
from .get_ringparam().
But ethtool_ringparam_get_cfg() sets only hds_config from dev->cfg.
So, ethtool_ringparam_get_cfg() returns always a hds_thresh as 0.

If an input value of hds-thresh is 0, a hds_thresh value from
ethtool_ringparam_get_cfg() are same. So ethnl_set_rings() does
nothing and returns immediately.
It causes a bug that setting a hds-thresh value to 0 is not working.

Reproducer:
    modprobe netdevsim
    echo 1 > /sys/bus/netdevsim/new_device
    ethtool -G eth0 hds-thresh 100
    ethtool -G eth0 hds-thresh 0
    ethtool -g eth0
    #hds-thresh value should be 0, but it shows 100.

The tools/testing/selftests/drivers/net/hds.py can test it too with
applying a following patch for hds.py.

Fixes: 928459bbda19 ("net: ethtool: populate the default HDS params in the core")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Link: https://patch.msgid.link/20250404122126.1555648-2-ap420073@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/common.c