diff options
Diffstat (limited to 'net/rds/ib.c')
| -rw-r--r-- | net/rds/ib.c | 15 | 
1 files changed, 5 insertions, 10 deletions
diff --git a/net/rds/ib.c b/net/rds/ib.c index 4123967d4d6..ba2dffeff60 100644 --- a/net/rds/ib.c +++ b/net/rds/ib.c @@ -38,6 +38,7 @@  #include <linux/if_arp.h>  #include <linux/delay.h>  #include <linux/slab.h> +#include <linux/module.h>  #include "rds.h"  #include "ib.h" @@ -325,7 +326,7 @@ static int rds_ib_laddr_check(__be32 addr)  	/* Create a CMA ID and try to bind it. This catches both  	 * IB and iWARP capable NICs.  	 */ -	cm_id = rdma_create_id(NULL, NULL, RDMA_PS_TCP); +	cm_id = rdma_create_id(NULL, NULL, RDMA_PS_TCP, IB_QPT_RC);  	if (IS_ERR(cm_id))  		return PTR_ERR(cm_id); @@ -337,7 +338,8 @@ static int rds_ib_laddr_check(__be32 addr)  	ret = rdma_bind_addr(cm_id, (struct sockaddr *)&sin);  	/* due to this, we will claim to support iWARP devices unless we  	   check node_type. */ -	if (ret || cm_id->device->node_type != RDMA_NODE_IB_CA) +	if (ret || !cm_id->device || +	    cm_id->device->node_type != RDMA_NODE_IB_CA)  		ret = -EADDRNOTAVAIL;  	rdsdebug("addr %pI4 ret %d node type %d\n", @@ -364,7 +366,6 @@ void rds_ib_exit(void)  	rds_ib_sysctl_exit();  	rds_ib_recv_exit();  	rds_trans_unregister(&rds_ib_transport); -	rds_ib_fmr_exit();  }  struct rds_transport rds_ib_transport = { @@ -400,13 +401,9 @@ int rds_ib_init(void)  	INIT_LIST_HEAD(&rds_ib_devices); -	ret = rds_ib_fmr_init(); -	if (ret) -		goto out; -  	ret = ib_register_client(&rds_ib_client);  	if (ret) -		goto out_fmr_exit; +		goto out;  	ret = rds_ib_sysctl_init();  	if (ret) @@ -430,8 +427,6 @@ out_sysctl:  	rds_ib_sysctl_exit();  out_ibreg:  	rds_ib_unregister_client(); -out_fmr_exit: -	rds_ib_fmr_exit();  out:  	return ret;  }  | 
