• Petr Pavlu's avatar
    mlx4: Register mlx4 devices to an auxiliary virtual bus · 8c2d2b87
    Petr Pavlu authored
    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: default avatarPetr Pavlu <petr.pavlu@suse.com>
    Tested-by: default avatarLeon Romanovsky <leonro@nvidia.com>
    Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
    Acked-by: default avatarTariq Toukan <tariqt@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8c2d2b87
device.h 42.2 KB