From: Viacheslav Ovsiienko
> Multiport Mellanox NICs may support the bonding configurations internally.
> Let's suppose there is ConnectX-5 NIC with two physical ports, on the host it
> presents two PCI physical functions:
>
> - PF0, say with PCI address 0000:82:00.0 and net interface ens1f0
> - PF1, say with PCI address 0000:82:00.1 and net interface ens1f1
>
> Also, let's suppose SR-IOV feature is enabled, swithdev mode is engaged,
> and there is some set virtual PCI functions and their representor interfaces.
> The physical interfaces may be combined into single bond interface,
> supported by NIC HW/FW means directly with standard script:
>
> modprobe bonding miimon=100 mode=4 # 100 ms link check interval, mode
> - LACP
> ip link set ens3f0 master bond0
> ip link set ens3f0 master bond1
>
> The dedicated Infiniband devices for single ports is destroyed, the new
> multiport Infiniband device is created for bond interface and all representors
> for both PFs. The unified E-Switch is created either, and all representor
> ports
> belong to the same unified switch domain.
>
> To use the created bond interface with DPDK application both slave PCI
> devices must be specified (in whitelist, if any):
>
> -w 82:00.0,representor=[0-4]
> -w 82:00.1,representor=[0-7]
>
> Representor enumerations follows the VF enumerations in the same way as
> for single device. The two PCI devices will be probed, but eth ports for only
> one master device and for all representors will be created.
> This ports may reference to different rte_pci_dev but share the same switch
> domain ID.
>
> The extra devargs specifying configurations must be compatible (otherwise
> error on probing will be arisen). For example, it is not allowed to specify
> different values of dv_flow_en parameter for different PCI devices.
>
> Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
>
> Viacheslav Ovsiienko (12):
> net/mlx5: move backing PCI device to private context
> net/mlx5: update PCI address retrieving routine
> net/mlx5: allocate device list explicitly
> net/mlx5: add VF LAG mode bonding device recognition
> net/mlx5: generate bonding device name
> net/mlx5: check the kernel support for VF LAG bonding
> net/mlx5: query vport index match mode and parameters
> net/mlx5: elaborate E-Switch port parameters query
> net/mlx5: update source and destination vport translations
> net/mlx5: extend switch domain searching range
> net/mlx5: update switch port ID in bonding configuration
> net/mlx5: check sibling device configurations mismatch
>
> drivers/net/mlx5/Makefile | 5 +
> drivers/net/mlx5/meson.build | 2 +
> drivers/net/mlx5/mlx5.c | 359
> +++++++++++++++++++++++++++++++++++++---
> drivers/net/mlx5/mlx5.h | 23 ++-
> drivers/net/mlx5/mlx5_defs.h | 4 +
> drivers/net/mlx5/mlx5_ethdev.c | 128 +++++++-------
> drivers/net/mlx5/mlx5_flow_dv.c | 98 +++++++----
> drivers/net/mlx5/mlx5_prm.h | 9 +-
> drivers/net/mlx5/mlx5_txq.c | 2 +-
> 9 files changed, 506 insertions(+), 124 deletions(-)
>
> --
> 1.8.3.1
For all the series:
Acked-by: Matan Azrad <ma...@mellanox.com>