From: Sean Hefty <sean.hefty@intel.com>
Date: Wed, 29 May 2013 17:09:24 +0000 (-0700)
Subject: RDMA/cma: Only listen on IB devices when using AF_IB
X-Git-Tag: firefly_0821_release~176^2~5703^2~12
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=94d0c939416480066d4e4d69e0d3c217bc083cea;p=firefly-linux-kernel-4.4.55.git

RDMA/cma: Only listen on IB devices when using AF_IB

If an rdma_cm_id is bound to AF_IB, with a wild card address, only
listen on IB devices.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
---

diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 96d0b9a6e15e..6a0ee9265015 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -1616,6 +1616,10 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 	struct rdma_cm_id *id;
 	int ret;
 
+	if (cma_family(id_priv) == AF_IB &&
+	    rdma_node_get_transport(cma_dev->device->node_type) != RDMA_TRANSPORT_IB)
+		return;
+
 	id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps,
 			    id_priv->id.qp_type);
 	if (IS_ERR(id))