From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shahaf Shuler Subject: Re: [PATCH v4 00/14] net/mlx5: add support for multiport IB devices Date: Thu, 28 Mar 2019 09:21:30 +0000 Message-ID: References: <1553614522-12151-1-git-send-email-viacheslavo@mellanox.com> <1553692547-16695-1-git-send-email-viacheslavo@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable To: Slava Ovsiienko , "dev@dpdk.org" Return-path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150059.outbound.protection.outlook.com [40.107.15.59]) by dpdk.org (Postfix) with ESMTP id A9D3C7D52 for ; Thu, 28 Mar 2019 10:21:31 +0100 (CET) In-Reply-To: <1553692547-16695-1-git-send-email-viacheslavo@mellanox.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Wednesday, March 27, 2019 3:16 PM, Viacheslav Ovsiienko: > Subject: [PATCH v4 00/14] net/mlx5: add support for multiport IB devices >=20 > 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 th= e > same E-Switch are created on the basis of the single PCI function and wit= h > 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. >=20 > mlx5_pci_probe() routine is planned to be extended to probe the ports of > found Infiniband devices. All active ports, belonging to the same Infinib= and > 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) >=20 > 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. >=20 > This patchset also superseedes http://patches.dpdk.org/patch/50486/ >=20 > Signed-off-by: Viacheslav Ovsiienko Series applied to next-net-mlx.=20 Good job Slava.=20 >=20 > --- > v4: > - minor typo fixes for debug compilation > - rebased on current top of repo > - removed dependency on DR (Direct Rules) >=20 > v3: > http://patches.dpdk.org/cover/51728/ > - 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 >=20 > 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 >=20 > v1: > http://patches.dpdk.org/cover/51451/ >=20 > 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 >=20 > drivers/net/mlx5/Makefile | 10 + > drivers/net/mlx5/meson.build | 4 + > drivers/net/mlx5/mlx5.c | 638 ++++++++++++++++++++++++++-----= --- > --- > 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 | 44 ++- > 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, 868 insertions(+), 335 deletions(-) >=20 > -- > 1.8.3.1