Some ethernet modules use nonstandard power levels [1]. Extend ethtool module implementation to support new attributes that will allow user to change maximum power. Rename structures and functions to be more generic. Introduce an example of the new API in ice driver.
Ethtool examples: $ ethtool --show-module enp1s0f0np0 Module parameters for enp1s0f0np0: power-min-allowed: 1000 mW power-max-allowed: 3000 mW power-max-set: 1500 mW $ ethtool --set-module enp1s0f0np0 power-max-set 4000 This idea was originally discussed here [2] [1] https://www.fs.com/de-en/products/69111.html [2] https://lore.kernel.org/netdev/mw4pr11mb57768054635e8def841bb2a9fd...@mw4pr11mb5776.namprd11.prod.outlook.com/ Wojciech Drewek (3): ethtool: Make module API more generic ethtool: Introduce max power support ice: Implement ethtool max power configuration drivers/net/ethernet/intel/ice/ice.h | 2 + .../net/ethernet/intel/ice/ice_adminq_cmd.h | 21 + drivers/net/ethernet/intel/ice/ice_common.c | 46 ++ drivers/net/ethernet/intel/ice/ice_common.h | 3 + drivers/net/ethernet/intel/ice/ice_devlink.c | 14 +- drivers/net/ethernet/intel/ice/ice_ethtool.c | 461 ++++++++++++++++++ drivers/net/ethernet/intel/ice/ice_nvm.c | 2 +- drivers/net/ethernet/intel/ice/ice_nvm.h | 3 + drivers/net/ethernet/intel/ice/ice_type.h | 4 + .../net/ethernet/mellanox/mlxsw/core_env.c | 2 +- .../net/ethernet/mellanox/mlxsw/core_env.h | 2 +- drivers/net/ethernet/mellanox/mlxsw/minimal.c | 8 +- .../mellanox/mlxsw/spectrum_ethtool.c | 8 +- include/linux/ethtool.h | 35 +- include/uapi/linux/ethtool_netlink.h | 4 + net/ethtool/module.c | 102 +++- net/ethtool/netlink.h | 2 +- 17 files changed, 669 insertions(+), 50 deletions(-) -- 2.40.1