From: Maor Gottlieb <maorg@mellanox.com>
To: davem@davemloft.net, jgg@mellanox.com, dledford@redhat.com,
j.vosburgh@gmail.com, vfalico@gmail.com, andy@greyhouse.net,
kuba@kernel.org, jiri@mellanox.com, dsahern@kernel.org
Cc: leonro@mellanox.com, saeedm@mellanox.com,
linux-rdma@vger.kernel.org, netdev@vger.kernel.org,
alexr@mellanox.com, Maor Gottlieb <maorg@mellanox.com>
Subject: [PATCH V4 mlx5-next 00/15] Add support to get xmit slave
Date: Wed, 22 Apr 2020 11:39:36 +0300 [thread overview]
Message-ID: <20200422083951.17424-1-maorg@mellanox.com> (raw)
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_get_xmit_slave. 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/
Change log:
v4: 1. Rename master_get_xmit_slave to netdev_get_xmit_slave and move the implementation to dev.c
2. Remove unnecessary check of NULL pointer.
3. Fix typo.
v3: 1. Move master_get_xmit_slave to netdevice.h and change the flags arg.
to bool.
2. Split helper functions commit to multiple commits for each bond
mode.
3. Extract refcotring changes to seperate commits.
v2: The first patch wasn't sent in v1.
v1: https://lore.kernel.org/netdev/ac373456-b838-29cf-645f-b1ea1a93e3b0@gmail.com/T/#t
Maor Gottlieb (15):
net/core: Introduce netdev_get_xmit_slave
bonding: Export skip slave logic to function
bonding: Rename slave_arr to usable_slaves
bonding/alb: Add helper functions to get the xmit slave
bonding: Add helper function to get the xmit slave based on hash
bonding: Add helper function to get the xmit slave in rr mode
bonding: Add function to get the xmit slave in active-backup mode
bonding: Add array of all slaves
bonding: Implement ndo_get_xmit_slave
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 | 138 +++++++++
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 | 268 +++++++++++++-----
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 | 6 +
include/net/bond_alb.h | 4 +
include/net/bonding.h | 3 +-
include/rdma/ib_verbs.h | 2 +
include/rdma/lag.h | 22 ++
net/core/dev.c | 30 ++
20 files changed, 618 insertions(+), 178 deletions(-)
create mode 100644 drivers/infiniband/core/lag.c
create mode 100644 include/rdma/lag.h
--
2.17.2
next reply other threads:[~2020-04-22 8:40 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-22 8:39 Maor Gottlieb [this message]
2020-04-22 8:39 ` [PATCH V4 mlx5-next 01/15] net/core: Introduce netdev_get_xmit_slave Maor Gottlieb
2020-04-22 12:50 ` Jiri Pirko
2020-04-22 15:09 ` David Ahern
2020-04-22 8:39 ` [PATCH V4 mlx5-next 02/15] bonding: Export skip slave logic to function Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 03/15] bonding: Rename slave_arr to usable_slaves Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 04/15] bonding/alb: Add helper functions to get the xmit slave Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 05/15] bonding: Add helper function to get the xmit slave based on hash Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 06/15] bonding: Add helper function to get the xmit slave in rr mode Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 07/15] bonding: Add function to get the xmit slave in active-backup mode Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next mlx5-next 08/15] bonding: Add array of all slaves Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next mlx5-next 09/15] bonding: Implement ndo_get_xmit_slave Maor Gottlieb
2020-04-22 12:53 ` Jiri Pirko
2020-04-22 8:39 ` [PATCH V4 mlx5-next 10/15] RDMA/core: Add LAG functionality Maor Gottlieb
2020-04-22 12:50 ` Jason Gunthorpe
2020-04-22 13:06 ` Maor Gottlieb
2020-04-22 15:12 ` David Ahern
2020-04-22 8:39 ` [PATCH V4 mlx5-next 11/15] RDMA/core: Get xmit slave for LAG Maor Gottlieb
2020-04-22 13:01 ` Jason Gunthorpe
2020-04-22 8:39 ` [PATCH V4 mlx5-next 12/15] net/mlx5: Change lag mutex lock to spin lock Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 13/15] net/mlx5: Add support to get lag physical port Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 14/15] RDMA/mlx5: Refactor affinity related code Maor Gottlieb
2020-04-22 8:39 ` [PATCH V4 mlx5-next 15/15] RDMA/mlx5: Set lag tx affinity according to slave Maor Gottlieb
2020-04-22 12:46 ` [PATCH V4 mlx5-next 00/15] Add support to get xmit slave Jiri Pirko
2020-04-22 12:56 ` Maor Gottlieb
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200422083951.17424-1-maorg@mellanox.com \
--to=maorg@mellanox.com \
--cc=alexr@mellanox.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=dledford@redhat.com \
--cc=dsahern@kernel.org \
--cc=j.vosburgh@gmail.com \
--cc=jgg@mellanox.com \
--cc=jiri@mellanox.com \
--cc=kuba@kernel.org \
--cc=leonro@mellanox.com \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=saeedm@mellanox.com \
--cc=vfalico@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.