Commit 61e0962d authored by Selvin Xavier's avatar Selvin Xavier Committed by Doug Ledford

IB: Avoid ib_modify_port() failure for RoCE devices

IB CM calls ib_modify_port() irrespective of link layer. If the
failure is returned, the mad agent gets unregistered for those
devices. Recently, modify_port() hook was removed from some of the
low level drivers as it was always returning success. This breaks
rdma connection establishment over those devices.
For ethernet devices, Qkey violation and port capabilities are not
applicable. So returning success for RoCE when modify_port hook is
is not implemented.

Cc: Leon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarSelvin Xavier <selvin.xavier@broadcom.com>
Reviewed-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent a31a2a3b
...@@ -1005,14 +1005,17 @@ int ib_modify_port(struct ib_device *device, ...@@ -1005,14 +1005,17 @@ int ib_modify_port(struct ib_device *device,
u8 port_num, int port_modify_mask, u8 port_num, int port_modify_mask,
struct ib_port_modify *port_modify) struct ib_port_modify *port_modify)
{ {
if (!device->modify_port) int rc;
return -ENOSYS;
if (!rdma_is_port_valid(device, port_num)) if (!rdma_is_port_valid(device, port_num))
return -EINVAL; return -EINVAL;
return device->modify_port(device, port_num, port_modify_mask, if (device->modify_port)
rc = device->modify_port(device, port_num, port_modify_mask,
port_modify); port_modify);
else
rc = rdma_protocol_roce(device, port_num) ? 0 : -ENOSYS;
return rc;
} }
EXPORT_SYMBOL(ib_modify_port); EXPORT_SYMBOL(ib_modify_port);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment