From: Ido Schimmel <ido...@mellanox.com> Danielle says:
Currently, user space has no way of knowing if a port can be split and into how many ports. Among other things, this makes it impossible to write generic tests for port split functionality. Therefore, this set exposes two new devlink port attributes to user space: Number of lanes and whether the port can be split or not. Patch set overview: Patches #1-#4 cleanup 'struct devlink_port_attrs' and reduce the number of parameters passed between drivers and devlink via devlink_port_attrs_set() Patch #5 adds devlink port lanes attributes Patches #6-#7 add devlink port splittable attribute Patch #8 exploits the fact that devlink is now aware of port's number of lanes and whether the port can be split or not and moves some checks from drivers to devlink Patch #9 adds a port split test Changes since v2: * Remove some local variables from patch #3 * Reword function description in patch #5 * Fix a bug in patch #8 * Add a test for the splittable attribute in patch #9 Changes since v1: * Rename 'width' attribute to 'lanes' * Add 'splittable' attribute * Move checks from drivers to devlink Danielle Ratson (9): devlink: Move set attribute of devlink_port_attrs to devlink_port devlink: Move switch_port attribute of devlink_port_attrs to devlink_port devlink: Replace devlink_port_attrs_set parameters with a struct mlxsw: Set number of port lanes attribute in driver devlink: Add a new devlink port lanes attribute and pass to netlink mlxsw: Set port split ability attribute in driver devlink: Add a new devlink port split ability attribute and pass to netlink devlink: Move input checks from driver to devlink selftests: net: Add port split test .../net/ethernet/broadcom/bnxt/bnxt_devlink.c | 9 +- drivers/net/ethernet/intel/ice/ice_devlink.c | 6 +- .../ethernet/mellanox/mlx5/core/en/devlink.c | 19 +- .../net/ethernet/mellanox/mlx5/core/en_rep.c | 16 +- drivers/net/ethernet/mellanox/mlxsw/core.c | 18 +- drivers/net/ethernet/mellanox/mlxsw/core.h | 4 +- drivers/net/ethernet/mellanox/mlxsw/minimal.c | 4 +- .../net/ethernet/mellanox/mlxsw/spectrum.c | 23 +- .../net/ethernet/mellanox/mlxsw/switchib.c | 2 +- .../net/ethernet/mellanox/mlxsw/switchx2.c | 2 +- .../net/ethernet/netronome/nfp/nfp_devlink.c | 17 +- .../ethernet/pensando/ionic/ionic_devlink.c | 5 +- drivers/net/netdevsim/dev.c | 10 +- include/net/devlink.h | 30 +- include/uapi/linux/devlink.h | 3 + net/core/devlink.c | 93 +++--- net/dsa/dsa2.c | 17 +- tools/testing/selftests/net/Makefile | 1 + .../selftests/net/devlink_port_split.py | 277 ++++++++++++++++++ 19 files changed, 424 insertions(+), 132 deletions(-) create mode 100755 tools/testing/selftests/net/devlink_port_split.py -- 2.26.2