linux/net/ethtool
Saeed Mahameed f45d1d3f27 net: ethtool: Fix RSS setting
[ Upstream commit 503757c809 ]

When user submits a rxfh set command without touching XFRM_SYM_XOR,
rxfh.input_xfrm is set to RXH_XFRM_NO_CHANGE, which is equal to 0xff.

Testing if (rxfh.input_xfrm & RXH_XFRM_SYM_XOR &&
	    !ops->cap_rss_sym_xor_supported)
		return -EOPNOTSUPP;

Will always be true on devices that don't set cap_rss_sym_xor_supported,
since rxfh.input_xfrm & RXH_XFRM_SYM_XOR is always true, if input_xfrm
was not set, i.e RXH_XFRM_NO_CHANGE=0xff, which will result in failure
of any command that doesn't require any change of XFRM, e.g RSS context
or hash function changes.

To avoid this breakage, test if rxfh.input_xfrm != RXH_XFRM_NO_CHANGE
before testing other conditions. Note that the problem will only trigger
with XFRM-aware userspace, old ethtool CLI would continue to work.

Fixes: 0dd415d155 ("net: ethtool: add a NO_CHANGE uAPI for new RXFH's input_xfrm")
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Reviewed-by: Ahmed Zaki <ahmed.zaki@intel.com>
Link: https://patch.msgid.link/20240710225538.43368-1-saeed@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-07-18 13:22:43 +02:00
..
bitset.c Revert "ethtool: Fix mod state of verbose no_mask bitset" 2023-10-19 09:27:12 -07:00
bitset.h ethtool: add ethnl_parse_bitset() helper 2020-03-12 15:32:32 -07:00
cabletest.c Revert "Introduce PHY listing and link_topology tracking" 2024-01-04 16:05:47 -08:00
channels.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
coalesce.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
common.c ethtool: remove ethtool_eee_use_linkmodes 2024-03-06 20:40:20 -08:00
common.h ethtool: remove ethtool_eee_use_linkmodes 2024-03-06 20:40:20 -08:00
debug.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
eee.c net: ethtool: eee: Remove legacy _u32 from keee 2024-02-28 12:18:05 +00:00
eeprom.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
features.c ethtool: netlink: Add missing ethnl_ops_begin/complete 2024-01-18 13:21:06 +01:00
fec.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
ioctl.c net: ethtool: Fix RSS setting 2024-07-18 13:22:43 +02:00
linkinfo.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
linkmodes.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
linkstate.c ethtool: netlink: do not return SQI value if link is down 2024-07-18 13:22:40 +02:00
Makefile Revert "Introduce PHY listing and link_topology tracking" 2024-01-04 16:05:47 -08:00
mm.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
module.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
netlink.c ethtool: do not use rtnl in ethnl_default_dumpit() 2024-02-08 19:08:51 -08:00
netlink.h Revert "Introduce PHY listing and link_topology tracking" 2024-01-04 16:05:47 -08:00
pause.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
phc_vclocks.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
plca.c Revert "Introduce PHY listing and link_topology tracking" 2024-01-04 16:05:47 -08:00
privflags.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
pse-pd.c Revert "Introduce PHY listing and link_topology tracking" 2024-01-04 16:05:47 -08:00
rings.c ethtool: add SET for TCP_DATA_SPLIT ringparam 2023-12-13 18:22:02 -08:00
rss.c net: ethtool: add support for symmetric-xor RSS hash 2023-12-13 22:07:16 -08:00
stats.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
strset.c Revert "Introduce PHY listing and link_topology tracking" 2024-01-04 16:05:47 -08:00
tsinfo.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00
tunnels.c genetlink: use attrs from struct genl_info 2023-08-15 15:00:45 -07:00
wol.c ethtool: netlink: always pass genl_info to .prepare_data 2023-08-15 15:01:03 -07:00