summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatan Barak <matanb@mellanox.com>2016-01-07 11:19:29 +0200
committerDoug Ledford <dledford@redhat.com>2016-01-19 13:33:47 -0500
commit649367735ee5dedb128d9fac0b86ba7e0fe7ae3b (patch)
tree2f8ea043dc286fd69b796a6c90bd9d2cb6638e1c
parent09dc9cd6528f5b52bcbd3292a6312e762c85260f (diff)
downloadlinux-649367735ee5dedb128d9fac0b86ba7e0fe7ae3b.tar.gz
IB/cma: Fix RDMA port validation for iWarp
cma_validate_port wrongly assumed that Ethernet devices are RoCE
devices and thus their ndev should be matched in the GID table.
This broke the iWarp support. Fixing that matching the ndev only if
we work on a RoCE port.

Cc: <stable@vger.kernel.org> # 4.4.x-
Fixes: abae1b71dd37 ('IB/cma: cma_validate_port should verify the port
		     and netdevice')
Reported-by: Hariprasad Shenai <hariprasad@chelsio.com>
Tested-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: Matan Barak <matanb@mellanox.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r--drivers/infiniband/core/cma.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 559ee3d27b4a..a811594b0b59 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -551,7 +551,7 @@ static inline int cma_validate_port(struct ib_device *device, u8 port,
 	if ((dev_type != ARPHRD_INFINIBAND) && rdma_protocol_ib(device, port))
 		return ret;
 
-	if (dev_type == ARPHRD_ETHER) {
+	if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port)) {
 		ndev = dev_get_by_index(&init_net, bound_if_index);
 		if (ndev && ndev->flags & IFF_LOOPBACK) {
 			pr_info("detected loopback device\n");