From patchwork Sun Apr 19 13:39:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maor Gottlieb X-Patchwork-Id: 11497439 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 85B7081 for ; Sun, 19 Apr 2020 13:40:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 784C721974 for ; Sun, 19 Apr 2020 13:40:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726123AbgDSNkJ (ORCPT ); Sun, 19 Apr 2020 09:40:09 -0400 Received: from mail-il-dmz.mellanox.com ([193.47.165.129]:37189 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726048AbgDSNkJ (ORCPT ); Sun, 19 Apr 2020 09:40:09 -0400 Received: from Internal Mail-Server by MTLPINE1 (envelope-from maorg@mellanox.com) with ESMTPS (AES256-SHA encrypted); 19 Apr 2020 16:40:03 +0300 Received: from dev-l-vrt-201.mtl.labs.mlnx (dev-l-vrt-201.mtl.labs.mlnx [10.134.201.1]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 03JDe3Xl019088; Sun, 19 Apr 2020 16:40:03 +0300 From: Maor Gottlieb To: davem@davemloft.net, jgg@mellanox.com, dledford@redhat.com, j.vosburgh@gmail.com, vfalico@gmail.com, andy@greyhouse.net, kuba@kernel.org Cc: leonro@mellanox.com, saeedm@mellanox.com, jiri@mellanox.com, linux-rdma@vger.kernel.org, netdev@vger.kernel.org, alexr@mellanox.com, Maor Gottlieb Subject: [PATCH mlx5-next 00/10] Add support to get xmit slave Date: Sun, 19 Apr 2020 16:39:24 +0300 Message-Id: <20200419133933.28258-1-maorg@mellanox.com> X-Mailer: git-send-email 2.17.2 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org Hi Dave, This series is a combination of netdev and RDMA, so in order to avoid conflicts, we would like to ask you to route this series through mlx5-next shared branch. It is based on v5.7-rc1 tag. --------------------------------------------------------------------- The following series adds support to get the LAG master xmit slave by introducing new .ndo - ndo_xmit_slave_get. Every LAG module can implement it and it first implemented in the bond driver. This is follow-up to the RFC discussion [1]. The main motivation for doing this is for drivers that offload part of the LAG functionality. For example, Mellanox Connect-X hardware implements RoCE LAG which selects the TX affinity when the resources are created and port is remapped when it goes down. The first part of this patchset introduces the new .ndo and add the support to the bonding module. The second part adds support to get the RoCE LAG xmit slave by building skb of the RoCE packet based on the AH attributes and call to the new .ndo. The third part change the mlx5 driver driver to set the QP's affinity port according to the slave which found by the .ndo. Thanks [1] https://lore.kernel.org/netdev/20200126132126.9981-1-maorg@mellanox.com/ Maor Gottlieb (10): net/core: Introduce master_xmit_slave_get bonding: Rename slave_arr to usable_slaves bonding: Add helpers to get xmit slave bonding: Implement ndo_xmit_slave_get RDMA/core: Add LAG functionality RDMA/core: Get xmit slave for LAG net/mlx5: Change lag mutex lock to spin lock net/mlx5: Add support to get lag physical port RDMA/mlx5: Refactor affinity related code RDMA/mlx5: Set lag tx affinity according to slave drivers/infiniband/core/Makefile | 2 +- drivers/infiniband/core/lag.c | 139 +++++++++ drivers/infiniband/core/verbs.c | 44 ++- drivers/infiniband/hw/mlx5/ah.c | 4 + drivers/infiniband/hw/mlx5/gsi.c | 34 ++- drivers/infiniband/hw/mlx5/main.c | 2 + drivers/infiniband/hw/mlx5/mlx5_ib.h | 1 + drivers/infiniband/hw/mlx5/qp.c | 123 +++++--- drivers/net/bonding/bond_alb.c | 39 ++- drivers/net/bonding/bond_main.c | 272 +++++++++++++----- drivers/net/ethernet/mellanox/mlx5/core/lag.c | 66 +++-- include/linux/mlx5/driver.h | 2 + include/linux/mlx5/mlx5_ifc.h | 4 +- include/linux/mlx5/qp.h | 2 + include/linux/netdevice.h | 3 + include/net/bond_alb.h | 4 + include/net/bonding.h | 3 +- include/net/lag.h | 32 +++ include/rdma/ib_verbs.h | 2 + include/rdma/lag.h | 22 ++ 20 files changed, 621 insertions(+), 179 deletions(-) create mode 100644 drivers/infiniband/core/lag.c create mode 100644 include/rdma/lag.h