On Wed, Jan 20, 2021 at 05:19:13PM +0100, mwilck@xxxxxxxx wrote: > From: Martin Wilck <mwilck@xxxxxxxx> > > This reverts commit b2d2440430c0fdd5e0cad3efd6d1c9e3d3d02e5b. > > It's true that creating rxe on top of 802.1q interfaces doesn't work. > Thus, commit fd49ddaf7e26 ("RDMA/rxe: prevent rxe creation on top of vlan interface") > was absolutely correct. > > But b2d2440430c0 was incorrect assuming that with this change, > RDMA and VLAN don't work togehter at all. It just has to be > set up differently. Rather than creating rxe on top of the VLAN > interface, rxe must be created on top of the physical interface. > RDMA then works just fine through VLAN interfaces on top of that > physical interface, via the "upper device" logic. > > I've tested this mainly with NVMe over RDMA and rping, but I don't > see why it wouldn't work just as well for other protocols. If there > are real issues, I'd like to know. > > b2d2440430c0 broke this setup deliberately and should thus be > reverted. Also, b2d2440430c0 removed rxe_dma_device() (which is > indeed not necessary), but not its declaration in rxe_loc.h. > > Fixes: b2d2440430c0 ("RDMA/rxe: Remove VLAN code leftovers from RXE") > > Cc: Zhu Yanjun <zyjzyj2000@xxxxxxxxx> > Cc: Mohammad Heib <goody698@xxxxxxxxx> > Cc: Nicolas Morey-Chaisemartin <nmoreychaisemartin@xxxxxxxx> > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > drivers/infiniband/sw/rxe/rxe_loc.h | 1 - > drivers/infiniband/sw/rxe/rxe_net.c | 6 ++++++ > drivers/infiniband/sw/rxe/rxe_resp.c | 5 +++++ > 3 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/infiniband/sw/rxe/rxe_loc.h b/drivers/infiniband/sw/rxe/rxe_loc.h > index 0d758760b9ae..8adcef54e4b3 100644 > +++ b/drivers/infiniband/sw/rxe/rxe_loc.h > @@ -116,7 +116,6 @@ struct sk_buff *rxe_init_packet(struct rxe_dev *rxe, struct rxe_av *av, > int paylen, struct rxe_pkt_info *pkt); > int rxe_prepare(struct rxe_pkt_info *pkt, struct sk_buff *skb, u32 *crc); > const char *rxe_parent_name(struct rxe_dev *rxe, unsigned int port_num); > -struct device *rxe_dma_device(struct rxe_dev *rxe); > int rxe_mcast_add(struct rxe_dev *rxe, union ib_gid *mgid); > int rxe_mcast_delete(struct rxe_dev *rxe, union ib_gid *mgid); I can't take this hunk as a -rc patch But I took the rest to for-rc, thanks Jason