On Fri, Aug 04, 2023 at 05:05:24PM +0200, Petr Pavlu wrote: > Add an auxiliary virtual bus to model the mlx4 driver structure. The > code is added along the current custom device management logic. > Subsequent patches switch mlx4_en and mlx4_ib to the auxiliary bus and > the old interface is then removed. > > Structure mlx4_priv gains a new adev dynamic array to keep track of its > auxiliary devices. Access to the array is protected by the global > mlx4_intf mutex. > > Functions mlx4_register_device() and mlx4_unregister_device() are > updated to expose auxiliary devices on the bus in order to load mlx4_en > and/or mlx4_ib. Functions mlx4_register_auxiliary_driver() and > mlx4_unregister_auxiliary_driver() are added to substitute > mlx4_register_interface() and mlx4_unregister_interface(), respectively. > Function mlx4_do_bond() is adjusted to walk over the adev array and > re-adds a specific auxiliary device if its driver sets the > MLX4_INTFF_BONDING flag. > > Signed-off-by: Petr Pavlu <petr.pavlu@xxxxxxxx> > Tested-by: Leon Romanovsky <leon@xxxxxxxxxx> > --- > drivers/net/ethernet/mellanox/mlx4/Kconfig | 1 + > drivers/net/ethernet/mellanox/mlx4/intf.c | 230 ++++++++++++++++++++- > drivers/net/ethernet/mellanox/mlx4/main.c | 17 +- > drivers/net/ethernet/mellanox/mlx4/mlx4.h | 6 + > include/linux/mlx4/device.h | 7 + > include/linux/mlx4/driver.h | 11 + > 6 files changed, 268 insertions(+), 4 deletions(-) > Thanks, Reviewed-by: Leon Romanovsky <leonro@xxxxxxxxxx>