mbox series

[for-next,0/6] RDMA/rxe: Make multicast actually work

Message ID 20231103204324.9606-1-rpearsonhpe@gmail.com (mailing list archive)
Headers show
Series RDMA/rxe: Make multicast actually work | expand

Message

Bob Pearson Nov. 3, 2023, 8:43 p.m. UTC
After developing a test program which exercises node to node
testing of RoCE multicast it bacame clear that there are a
number of issues with the current rdma_rxe multicast implementation.

The issues seen include:
	- There is no support for IPV4 multicast addresses.
	- Once a multicast MAC is added it is not removed.
	- Multicast packets are sent with the wrong QP number.
	- Multicast packets sent from the local node are not
	  loopbacked to local QPs which have joined the same
	  multicast group and were not the sender.
	- Multicast IP addresses are not created and without
	  them no multicast packets received on the interface
	  are delivered to the rdma_rxe driver.
	- The implementation in rxe_mcast.c is potentially
	  racy if multiple simultaneous attach/detach operations
	  are issued.

This patch set fixes these issues. 

Bob Pearson (6):
  RDMA/rxe: Cleanup rxe_ah/av_chk_attr
  RDMA/rxe: Handle loopback of mcast packets
  RDMA/rxe: Register IP mcast address
  RDMA/rxe: Let rxe_lookup_mcg use rcu_read_lock
  RDMA/rxe: Split multicast lock
  RDMA/rxe: Cleanup mcg lifetime

 drivers/infiniband/sw/rxe/rxe.c        |   2 +-
 drivers/infiniband/sw/rxe/rxe_av.c     |  50 +--
 drivers/infiniband/sw/rxe/rxe_loc.h    |   6 +-
 drivers/infiniband/sw/rxe/rxe_mcast.c  | 511 +++++++++++--------------
 drivers/infiniband/sw/rxe/rxe_net.c    |  27 +-
 drivers/infiniband/sw/rxe/rxe_net.h    |   1 +
 drivers/infiniband/sw/rxe/rxe_opcode.h |   2 +-
 drivers/infiniband/sw/rxe/rxe_qp.c     |   4 +-
 drivers/infiniband/sw/rxe/rxe_recv.c   |  11 +-
 drivers/infiniband/sw/rxe/rxe_req.c    |  11 +-
 drivers/infiniband/sw/rxe/rxe_verbs.c  |   5 +-
 drivers/infiniband/sw/rxe/rxe_verbs.h  |   5 +-
 12 files changed, 285 insertions(+), 350 deletions(-)