Linux RDMA and InfiniBand development
 help / color / mirror / Atom feed
* [PATCH RFC 00/12] RDMA: Support link status events dispatching in ib_core
@ 2024-11-22 10:52 Junxian Huang
  2024-11-22 10:52 ` [PATCH RFC 01/12] RDMA/core: Add ib_query_netdev_port() to query netdev port by IB device Junxian Huang
                   ` (13 more replies)
  0 siblings, 14 replies; 20+ messages in thread
From: Junxian Huang @ 2024-11-22 10:52 UTC (permalink / raw)
  To: jgg, leon, selvin.xavier, chengyou, kaishen, mustafa.ismail,
	tatyana.e.nikolova, yishaih, benve, neescoba, bryan-bt.tan,
	vishnu.dasa, zyjzyj2000, bmt
  Cc: linux-rdma, linuxarm, linux-kernel, huangjunxian6, tangchengchang,
	liyuyu6

This series is to integrate a common link status event handler in
ib_core as this functionality is needed by most drivers and
implemented in very similar patterns. This is not a new issue but
a restart of the previous work of our colleagues from several years
ago, please see [1] and [2].

[1]: https://lore.kernel.org/linux-rdma/1570184954-21384-1-git-send-email-liweihang@hisilicon.com/
[2]: https://lore.kernel.org/linux-rdma/20200204082408.18728-1-liweihang@huawei.com/

With this series, ib_core can handle netdev events of link status,
i.e. NETDEV_UP, NETDEV_DOWN and NETDEV_CHANGE, and dispatch ib port
events to ULPs instead of drivers. However some drivers currently
have some private processing in their handler, rather than simply
dispatching events. For these drivers, this series provides a new
ops report_port_event(). If this ops is set, ib_core will call it
and the events will still be handled in the driver.

Events of LAG devices are also not handled in ib_core as currently
there is no way to obtain ibdev from upper netdev in ib_core. This
can be a TODO work after the core have more support for LAG. For
now mlx5 is the only driver that supports RoCE LAG, and the events
handling of mlx5 RoCE LAG will remain in mlx5 driver.

In this series:

Patch #1 adds a new helper to query the port num of a netdev
associated with an ibdev. This is used in the following patch.

Patch #2 adds support for link status events dispatching in ib_core.

Patch #3-#7 removes link status event handler in several drivers.
The port state setting in erdma, rxe and siw are replaced with
ib_get_curr_port_state(), so their handler can be totally removed.

Patch #8-#10 add support for report_port_event() ops in usnic, mlx4
and pvrdma as their current handler cannot be perfectly replaced by
the ib_core handler in patch #2.

Patch #11 adds a check in mlx5 that only events of RoCE LAG will be
handled in mlx5 driver.

Patch #12 adds a fast path for link-down events dispatching in hns by
getting notified from hns3 nic driver directly.

Yuyu Li (12):
  RDMA/core: Add ib_query_netdev_port() to query netdev port by IB
    device.
  RDMA/core: Support link status events dispatching
  RDMA/bnxt_re: Remove deliver net device event
  RDMA/erdma: Remove deliver net device event
  RDMA/irdma: Remove deliver net device event
  RDMA/rxe: Remove deliver net device event
  RDMA/siw: Remove deliver net device event
  RDMA/usnic: Support report_port_event() ops
  RDMA/mlx4: Support report_port_event() ops
  RDMA/pvrdma: Support report_port_event() ops
  RDMA/mlx5: Handle link status event only for LAG device
  RDMA/hns: Support fast path for link-down events dispatching

 drivers/infiniband/core/device.c              | 99 +++++++++++++++++--
 drivers/infiniband/hw/bnxt_re/main.c          | 59 -----------
 drivers/infiniband/hw/erdma/erdma.h           |  2 -
 drivers/infiniband/hw/erdma/erdma_main.c      |  8 --
 drivers/infiniband/hw/erdma/erdma_verbs.c     |  8 +-
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c    | 13 +++
 drivers/infiniband/hw/irdma/utils.c           |  3 -
 drivers/infiniband/hw/mlx4/main.c             | 58 +++++------
 drivers/infiniband/hw/mlx5/main.c             |  3 +
 drivers/infiniband/hw/usnic/usnic_ib_main.c   | 71 +++++++------
 .../infiniband/hw/vmw_pvrdma/pvrdma_main.c    | 42 +++++---
 drivers/infiniband/sw/rxe/rxe_net.c           | 22 +----
 drivers/infiniband/sw/rxe/rxe_verbs.c         |  1 +
 drivers/infiniband/sw/siw/siw.h               |  3 -
 drivers/infiniband/sw/siw/siw_main.c          | 16 ---
 drivers/infiniband/sw/siw/siw_verbs.c         |  6 +-
 include/rdma/ib_verbs.h                       | 19 ++++
 17 files changed, 239 insertions(+), 194 deletions(-)

--
2.33.0


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2024-12-25  8:30 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-22 10:52 [PATCH RFC 00/12] RDMA: Support link status events dispatching in ib_core Junxian Huang
2024-11-22 10:52 ` [PATCH RFC 01/12] RDMA/core: Add ib_query_netdev_port() to query netdev port by IB device Junxian Huang
2024-11-22 10:52 ` [PATCH RFC 02/12] RDMA/core: Support link status events dispatching Junxian Huang
2024-11-22 10:52 ` [PATCH RFC 03/12] RDMA/bnxt_re: Remove deliver net device event Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 04/12] RDMA/erdma: " Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 05/12] RDMA/irdma: " Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 06/12] RDMA/rxe: " Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 07/12] RDMA/siw: " Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 08/12] RDMA/usnic: Support report_port_event() ops Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 09/12] RDMA/mlx4: " Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 10/12] RDMA/pvrdma: " Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 11/12] RDMA/mlx5: Handle link status event only for LAG device Junxian Huang
2024-11-22 10:53 ` [PATCH RFC 12/12] RDMA/hns: Support fast path for link-down events dispatching Junxian Huang
2024-12-24 10:27   ` Leon Romanovsky
2024-12-24 10:26 ` [PATCH RFC 00/12] RDMA: Support link status events dispatching in ib_core Leon Romanovsky
2024-12-24 10:32 ` Leon Romanovsky
2024-12-24 12:05   ` Junxian Huang
2024-12-24 13:38     ` Leon Romanovsky
2024-12-25  6:12       ` Junxian Huang
2024-12-25  8:30         ` Leon Romanovsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox