[dpdk-dev] [PATCH v3 00/14] net/mlx5: add support for multiport IB devices

Shahaf Shuler shahafs at mellanox.com
Wed Mar 27 07:00:06 CET 2019


Tuesday, March 26, 2019 5:35 PM, Viacheslav Ovsiienko:
> Subject: [PATCH v3 00/14] net/mlx5: add support for multiport IB devices
> 
> The Mellanox NICs support SR-IOV and have E-Switch feature.
> When SR-IOV is set up in switchdev mode and E-Switch is enabled we have
> so called VF representors in the system. All representors belonging to the
> same E-Switch are created on the basis of the single PCI function and with
> current implementation each representor has its own dedicated Infiniband
> device and operates within its own Infiniband context. It is proposed to
> provide representors as ports of the single Infiniband device and operate on
> the shared Infiniband context.
> 
> mlx5_pci_probe() routine is planned to be extended to probe the ports of
> found Infiniband devices. All active ports, belonging to the same Infiniband
> device will use the signle shared Infiniband context of that device:
>   - QP are created within shared context, with assigning to
>     specified port
>   - Verb flows are also created with specifying port index
>   - Protection Domain is shared by all representors
>   - Global Memory Regions Cache is shared by all representors,
>     local ones are not (not in this patchset)
>   - Shared Asynchronous Event Handler distributes events
>     among the device ports (not in this patchset)
>   - UAR mapping to user space is also shared (not in patchset)
> 
> Each representor has its own attached network interface device, interface
> name and index can be retrieved via IB device and port index, so the link
> control is performed via Netlink in the same way as in existing
> implementation.
> 
> This patchset also superseedes http://patches.dpdk.org/patch/50486/
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo at mellanox.com>

Slava, basically I am OK w/ the series, in order for me to apply:
1. need to rebase on top of latest master. There are some merge conflicts.
2. at least patch[1] seems to be taken from another branch (checkout the HAVE_MLX5DV_DR flag). Please handle. 

[1]
https://patches.dpdk.org/patch/51739/


> 
> ---
> v3:
> 	- vport_id field is added, contains associated VF vport
> 	  index on E-Switch. representor_id field is reverted
> 	  to keep the VF index
> 	- some comment spellcheck
> 	- some error logging is added for master/representor
> 	  wrong recognition
> 	- shared IB context alloc/free routines mutex
> 	  protection added
> 
> v2:
> 	http://patches.dpdk.org/patch/51642/
> 	- clarifying comments added
> 	- secondary process does not probe IB device at all and
> 	  does not create shared context
> 	- minor bugs (like ++ in assert) fixed
> 	- representor_id contains corresponding VF vport index,
> 	  no corrections +1 is needed anymore. vport index is
> 	  calculated in the only place in code and if indexing
> 	  schema is changed it would be easy to modify
> 
> v1:
> 	http://patches.dpdk.org/cover/51451/
> 
> Viacheslav Ovsiienko (13):
>   net/mlx5: add representor recognition on kernels 5.x
>   net/mlx5: modify get ifindex routine for multiport IB
>   net/mlx5: add getting IB ports number for multiport IB
>   net/mlx5: add multiport IB device support to probing
>   net/mlx5: add IB shared context alloc/free functions
>   net/mlx5: switch to the names in the shared IB context
>   net/mlx5: switch to the shared Protection Domain
>   net/mlx5: switch to the shared context IB attributes
>   net/mlx5: switch to the shared IB device context
>   net/mlx5: provide IB port for the object being created
>   net/mlx5: update install/uninstall int handler routines
>   net/mlx5: update event handler for multiport IB devices
>   net/mlx5: add source vport match to the ingress rules
> 
>  drivers/net/mlx5/Makefile          |  10 +
>  drivers/net/mlx5/meson.build       |   4 +
>  drivers/net/mlx5/mlx5.c            | 651 ++++++++++++++++++++++++++--------
> ---
>  drivers/net/mlx5/mlx5.h            |  45 ++-
>  drivers/net/mlx5/mlx5_ethdev.c     | 248 +++++++++-----
>  drivers/net/mlx5/mlx5_flow.c       |   2 +
>  drivers/net/mlx5/mlx5_flow_dv.c    |  45 ++-
>  drivers/net/mlx5/mlx5_flow_verbs.c |   7 +-
>  drivers/net/mlx5/mlx5_mr.c         |   4 +-
>  drivers/net/mlx5/mlx5_nl.c         | 108 +++++-
>  drivers/net/mlx5/mlx5_rxq.c        |  41 +--
>  drivers/net/mlx5/mlx5_socket.c     |   4 +-
>  drivers/net/mlx5/mlx5_stats.c      |  22 +-
>  drivers/net/mlx5/mlx5_trigger.c    |   2 +-
>  drivers/net/mlx5/mlx5_txq.c        |  24 +-
>  15 files changed, 879 insertions(+), 338 deletions(-)
> 
> --
> 1.8.3.1



More information about the dev mailing list