Lines Matching refs:rds_iwdev
62 struct rds_iw_device *rds_iwdev; in rds_iw_add_one() local
78 rds_iwdev = kmalloc(sizeof *rds_iwdev, GFP_KERNEL); in rds_iw_add_one()
79 if (!rds_iwdev) in rds_iw_add_one()
82 spin_lock_init(&rds_iwdev->spinlock); in rds_iw_add_one()
84 rds_iwdev->dma_local_lkey = !!(dev_attr->device_cap_flags & IB_DEVICE_LOCAL_DMA_LKEY); in rds_iw_add_one()
85 rds_iwdev->max_wrs = dev_attr->max_qp_wr; in rds_iw_add_one()
86 rds_iwdev->max_sge = min(dev_attr->max_sge, RDS_IW_MAX_SGE); in rds_iw_add_one()
88 rds_iwdev->dev = device; in rds_iw_add_one()
89 rds_iwdev->pd = ib_alloc_pd(device); in rds_iw_add_one()
90 if (IS_ERR(rds_iwdev->pd)) in rds_iw_add_one()
93 if (!rds_iwdev->dma_local_lkey) { in rds_iw_add_one()
94 rds_iwdev->mr = ib_get_dma_mr(rds_iwdev->pd, in rds_iw_add_one()
98 if (IS_ERR(rds_iwdev->mr)) in rds_iw_add_one()
101 rds_iwdev->mr = NULL; in rds_iw_add_one()
103 rds_iwdev->mr_pool = rds_iw_create_mr_pool(rds_iwdev); in rds_iw_add_one()
104 if (IS_ERR(rds_iwdev->mr_pool)) { in rds_iw_add_one()
105 rds_iwdev->mr_pool = NULL; in rds_iw_add_one()
109 INIT_LIST_HEAD(&rds_iwdev->cm_id_list); in rds_iw_add_one()
110 INIT_LIST_HEAD(&rds_iwdev->conn_list); in rds_iw_add_one()
111 list_add_tail(&rds_iwdev->list, &rds_iw_devices); in rds_iw_add_one()
113 ib_set_client_data(device, &rds_iw_client, rds_iwdev); in rds_iw_add_one()
118 if (rds_iwdev->mr) in rds_iw_add_one()
119 ib_dereg_mr(rds_iwdev->mr); in rds_iw_add_one()
121 ib_dealloc_pd(rds_iwdev->pd); in rds_iw_add_one()
123 kfree(rds_iwdev); in rds_iw_add_one()
130 struct rds_iw_device *rds_iwdev; in rds_iw_remove_one() local
133 rds_iwdev = ib_get_client_data(device, &rds_iw_client); in rds_iw_remove_one()
134 if (!rds_iwdev) in rds_iw_remove_one()
137 spin_lock_irq(&rds_iwdev->spinlock); in rds_iw_remove_one()
138 list_for_each_entry_safe(i_cm_id, next, &rds_iwdev->cm_id_list, list) { in rds_iw_remove_one()
142 spin_unlock_irq(&rds_iwdev->spinlock); in rds_iw_remove_one()
144 rds_iw_destroy_conns(rds_iwdev); in rds_iw_remove_one()
146 if (rds_iwdev->mr_pool) in rds_iw_remove_one()
147 rds_iw_destroy_mr_pool(rds_iwdev->mr_pool); in rds_iw_remove_one()
149 if (rds_iwdev->mr) in rds_iw_remove_one()
150 ib_dereg_mr(rds_iwdev->mr); in rds_iw_remove_one()
152 while (ib_dealloc_pd(rds_iwdev->pd)) { in rds_iw_remove_one()
153 rdsdebug("Failed to dealloc pd %p\n", rds_iwdev->pd); in rds_iw_remove_one()
157 list_del(&rds_iwdev->list); in rds_iw_remove_one()
158 kfree(rds_iwdev); in rds_iw_remove_one()
183 struct rds_iw_device *rds_iwdev; in rds_iw_conn_info_visitor() local
192 rds_iwdev = ib_get_client_data(ic->i_cm_id->device, &rds_iw_client); in rds_iw_conn_info_visitor()
195 iinfo->max_send_sge = rds_iwdev->max_sge; in rds_iw_conn_info_visitor()
196 rds_iw_get_mr_info(rds_iwdev, iinfo); in rds_iw_conn_info_visitor()