From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 975C11B43C for ; Thu, 21 Mar 2019 09:11:42 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from viacheslavo@mellanox.com) with ESMTPS (AES256-SHA encrypted); 21 Mar 2019 10:11:37 +0200 Received: from pegasus12.mtr.labs.mlnx. (pegasus12.mtr.labs.mlnx [10.210.17.40]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x2L8Bahw003643; Thu, 21 Mar 2019 10:11:36 +0200 From: Viacheslav Ovsiienko To: dev@dpdk.org Cc: shahafs@mellanox.com Date: Thu, 21 Mar 2019 08:11:14 +0000 Message-Id: <1553155888-27498-1-git-send-email-viacheslavo@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1551376985-11096-1-git-send-email-viacheslavo@mellanox.com> References: <1551376985-11096-1-git-send-email-viacheslavo@mellanox.com> Subject: [dpdk-dev] [PATCH 00/14] net/mlx5: add support for multiport IB devices X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Mar 2019 08:11:43 -0000 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 attach 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 Viacheslav Ovsiienko (14): net/mlx5: add representor recognition on kernels 5.x net/mlx5: introduce multiport IB device shared structure 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 | 549 +++++++++++++++++++++++++++---------- drivers/net/mlx5/mlx5.h | 38 ++- drivers/net/mlx5/mlx5_ethdev.c | 241 ++++++++++------ drivers/net/mlx5/mlx5_flow.c | 2 + drivers/net/mlx5/mlx5_flow_dv.c | 47 +++- drivers/net/mlx5/mlx5_flow_verbs.c | 7 +- drivers/net/mlx5/mlx5_mr.c | 4 +- drivers/net/mlx5/mlx5_nl.c | 101 ++++++- 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, 795 insertions(+), 301 deletions(-) -- 1.8.3.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 4B40FA00E6 for ; Thu, 21 Mar 2019 09:12:18 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1A84A1B45B; Thu, 21 Mar 2019 09:11:56 +0100 (CET) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 975C11B43C for ; Thu, 21 Mar 2019 09:11:42 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from viacheslavo@mellanox.com) with ESMTPS (AES256-SHA encrypted); 21 Mar 2019 10:11:37 +0200 Received: from pegasus12.mtr.labs.mlnx. (pegasus12.mtr.labs.mlnx [10.210.17.40]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x2L8Bahw003643; Thu, 21 Mar 2019 10:11:36 +0200 From: Viacheslav Ovsiienko To: dev@dpdk.org Cc: shahafs@mellanox.com Date: Thu, 21 Mar 2019 08:11:14 +0000 Message-Id: <1553155888-27498-1-git-send-email-viacheslavo@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1551376985-11096-1-git-send-email-viacheslavo@mellanox.com> References: <1551376985-11096-1-git-send-email-viacheslavo@mellanox.com> Subject: [dpdk-dev] [PATCH 00/14] net/mlx5: add support for multiport IB devices X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Content-Type: text/plain; charset="UTF-8" Message-ID: <20190321081114.d4TEf0tZXIcWZq5I9jvmXyTCwa7xTZz4W_7tsk_PXIE@z> 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 attach 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 Viacheslav Ovsiienko (14): net/mlx5: add representor recognition on kernels 5.x net/mlx5: introduce multiport IB device shared structure 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 | 549 +++++++++++++++++++++++++++---------- drivers/net/mlx5/mlx5.h | 38 ++- drivers/net/mlx5/mlx5_ethdev.c | 241 ++++++++++------ drivers/net/mlx5/mlx5_flow.c | 2 + drivers/net/mlx5/mlx5_flow_dv.c | 47 +++- drivers/net/mlx5/mlx5_flow_verbs.c | 7 +- drivers/net/mlx5/mlx5_mr.c | 4 +- drivers/net/mlx5/mlx5_nl.c | 101 ++++++- 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, 795 insertions(+), 301 deletions(-) -- 1.8.3.1