Currently, link_mode parameter derives 3 other link parameters, speed, lanes and duplex, and the derived information is sent to user space.
Two bugs were found in that functionality. First, some drivers clear the 'ethtool_link_ksettings' struct in their get_link_ksettings() callback and cause receiving wrong link mode information in user space. And also, some drivers can report random values in the 'link_mode' field and cause general protection fault. Second, the link parameters are only derived in netlink path so in ioctl path, we don't any reasonable values. Patch #1 solves the first problem by introducing a new capability bit for supporting link_mode in driver. Patch #2 solves the second one, by deriving the parameters in ioctl path as well. v2: * Add patch #2. * Introduce 'cap_link_mode_supported' instead of adding a validity field to 'ethtool_link_ksettings' struct in patch #1. Danielle Ratson (2): ethtool: Add link_mode parameter capability bit to ethtool_ops ethtool: Derive parameters from link_mode in ioctl path .../mellanox/mlxsw/spectrum_ethtool.c | 1 + include/linux/ethtool.h | 5 ++- net/ethtool/ioctl.c | 34 ++++++++++++++----- 3 files changed, 31 insertions(+), 9 deletions(-) -- 2.26.2