diff options
| author | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
| commit | 79828b4fa835f73cdaf4bffa48696abdcbea9d02 (patch) | |
| tree | 5e0fa7156acb75ba603022bc807df8f2fedb97a8 /net/rds/ib.c | |
| parent | 721b51fcf91898299d96f4b72cb9434cda29dce6 (diff) | |
| parent | 8c1a9d6323abf0fb1e5dad96cf3f1c783505ea5a (diff) | |
Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-fix-rt5645
Diffstat (limited to 'net/rds/ib.c')
| -rw-r--r-- | net/rds/ib.c | 24 | 
1 files changed, 11 insertions, 13 deletions
diff --git a/net/rds/ib.c b/net/rds/ib.c index ba2dffeff608..2d3f2ab475df 100644 --- a/net/rds/ib.c +++ b/net/rds/ib.c @@ -99,8 +99,6 @@ static void rds_ib_dev_free(struct work_struct *work)  	if (rds_ibdev->mr_pool)  		rds_ib_destroy_mr_pool(rds_ibdev->mr_pool); -	if (rds_ibdev->mr) -		ib_dereg_mr(rds_ibdev->mr);  	if (rds_ibdev->pd)  		ib_dealloc_pd(rds_ibdev->pd); @@ -164,12 +162,6 @@ static void rds_ib_add_one(struct ib_device *device)  		goto put_dev;  	} -	rds_ibdev->mr = ib_get_dma_mr(rds_ibdev->pd, IB_ACCESS_LOCAL_WRITE); -	if (IS_ERR(rds_ibdev->mr)) { -		rds_ibdev->mr = NULL; -		goto put_dev; -	} -  	rds_ibdev->mr_pool = rds_ib_create_mr_pool(rds_ibdev);  	if (IS_ERR(rds_ibdev->mr_pool)) {  		rds_ibdev->mr_pool = NULL; @@ -230,11 +222,10 @@ struct rds_ib_device *rds_ib_get_client_data(struct ib_device *device)   *   * This can be called at any time and can be racing with any other RDS path.   */ -static void rds_ib_remove_one(struct ib_device *device) +static void rds_ib_remove_one(struct ib_device *device, void *client_data)  { -	struct rds_ib_device *rds_ibdev; +	struct rds_ib_device *rds_ibdev = client_data; -	rds_ibdev = ib_get_client_data(device, &rds_ib_client);  	if (!rds_ibdev)  		return; @@ -317,7 +308,7 @@ static void rds_ib_ic_info(struct socket *sock, unsigned int len,   * allowed to influence which paths have priority.  We could call userspace   * asserting this policy "routing".   */ -static int rds_ib_laddr_check(__be32 addr) +static int rds_ib_laddr_check(struct net *net, __be32 addr)  {  	int ret;  	struct rdma_cm_id *cm_id; @@ -366,6 +357,7 @@ 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 = { @@ -401,10 +393,14 @@ int rds_ib_init(void)  	INIT_LIST_HEAD(&rds_ib_devices); -	ret = ib_register_client(&rds_ib_client); +	ret = rds_ib_fmr_init();  	if (ret)  		goto out; +	ret = ib_register_client(&rds_ib_client); +	if (ret) +		goto out_fmr_exit; +  	ret = rds_ib_sysctl_init();  	if (ret)  		goto out_ibreg; @@ -427,6 +423,8 @@ out_sysctl:  	rds_ib_sysctl_exit();  out_ibreg:  	rds_ib_unregister_client(); +out_fmr_exit: +	rds_ib_fmr_exit();  out:  	return ret;  }  |