OSDN Git Service

RDMA/rxe: prevent rxe creation on top of vlan interface
authorMohammad Heib <goody698@gmail.com>
Tue, 11 Aug 2020 15:04:15 +0000 (18:04 +0300)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 24 Aug 2020 17:12:18 +0000 (14:12 -0300)
commitfd49ddaf7e266b5892d659eb99d9f77841e5b4c0
treee8b0f5ca127af1540155b9ea5fcaeec7ec3b0c65
parent785167a114855c5aa75efca97000e405c2cc85bf
RDMA/rxe: prevent rxe creation on top of vlan interface

Creating rxe device on top of vlan interface will create a non-functional
device that has an empty gids table and can't be used for rdma cm
communication.

This is caused by the logic in
enum_all_gids_of_dev_cb()/is_eth_port_of_netdev(), which only considers
networks connected to "upper devices" of the configured network device,
resulting in an empty set of gids for a vlan interface, and attempts to
connect via this rdma device fail in cm_init_av_for_response because no
gids can be resolved.

Apparently, this behavior was implemented to fit the HW-RoCE devices that
create RoCE device per port, therefore RXE must behave the same like
HW-RoCE devices and create rxe device per real device only.

In order to communicate via a vlan interface, the user must use the gid
index of the vlan address instead of creating rxe over vlan.

Link: https://lore.kernel.org/r/20200811150415.3693-1-goody698@gmail.com
Signed-off-by: Mohammad Heib <goody698@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/rxe/rxe.c
drivers/infiniband/sw/rxe/rxe_sysfs.c