Lines Matching refs:device

66 		event->device->name, event->element.port_num);  in iser_event_handler()
76 static int iser_create_device_ib_res(struct iser_device *device) in iser_create_device_ib_res() argument
78 struct ib_device_attr *dev_attr = &device->dev_attr; in iser_create_device_ib_res()
81 ret = ib_query_device(device->ib_device, dev_attr); in iser_create_device_ib_res()
83 pr_warn("Query device failed for %s\n", device->ib_device->name); in iser_create_device_ib_res()
88 if (device->ib_device->alloc_fmr && device->ib_device->dealloc_fmr && in iser_create_device_ib_res()
89 device->ib_device->map_phys_fmr && device->ib_device->unmap_fmr) { in iser_create_device_ib_res()
91 device->iser_alloc_rdma_reg_res = iser_create_fmr_pool; in iser_create_device_ib_res()
92 device->iser_free_rdma_reg_res = iser_free_fmr_pool; in iser_create_device_ib_res()
93 device->iser_reg_rdma_mem = iser_reg_rdma_mem_fmr; in iser_create_device_ib_res()
94 device->iser_unreg_rdma_mem = iser_unreg_mem_fmr; in iser_create_device_ib_res()
98 device->iser_alloc_rdma_reg_res = iser_create_fastreg_pool; in iser_create_device_ib_res()
99 device->iser_free_rdma_reg_res = iser_free_fastreg_pool; in iser_create_device_ib_res()
100 device->iser_reg_rdma_mem = iser_reg_rdma_mem_fastreg; in iser_create_device_ib_res()
101 device->iser_unreg_rdma_mem = iser_unreg_mem_fastreg; in iser_create_device_ib_res()
107 device->comps_used = min_t(int, num_online_cpus(), in iser_create_device_ib_res()
108 device->ib_device->num_comp_vectors); in iser_create_device_ib_res()
110 device->comps = kcalloc(device->comps_used, sizeof(*device->comps), in iser_create_device_ib_res()
112 if (!device->comps) in iser_create_device_ib_res()
118 device->comps_used, device->ib_device->name, in iser_create_device_ib_res()
119 device->ib_device->num_comp_vectors, max_cqe); in iser_create_device_ib_res()
121 device->pd = ib_alloc_pd(device->ib_device); in iser_create_device_ib_res()
122 if (IS_ERR(device->pd)) in iser_create_device_ib_res()
125 for (i = 0; i < device->comps_used; i++) { in iser_create_device_ib_res()
126 struct iser_comp *comp = &device->comps[i]; in iser_create_device_ib_res()
128 comp->device = device; in iser_create_device_ib_res()
129 comp->cq = ib_create_cq(device->ib_device, in iser_create_device_ib_res()
146 device->mr = ib_get_dma_mr(device->pd, IB_ACCESS_LOCAL_WRITE | in iser_create_device_ib_res()
149 if (IS_ERR(device->mr)) in iser_create_device_ib_res()
152 INIT_IB_EVENT_HANDLER(&device->event_handler, device->ib_device, in iser_create_device_ib_res()
154 if (ib_register_event_handler(&device->event_handler)) in iser_create_device_ib_res()
160 ib_dereg_mr(device->mr); in iser_create_device_ib_res()
162 for (i = 0; i < device->comps_used; i++) in iser_create_device_ib_res()
163 tasklet_kill(&device->comps[i].tasklet); in iser_create_device_ib_res()
165 for (i = 0; i < device->comps_used; i++) { in iser_create_device_ib_res()
166 struct iser_comp *comp = &device->comps[i]; in iser_create_device_ib_res()
171 ib_dealloc_pd(device->pd); in iser_create_device_ib_res()
173 kfree(device->comps); in iser_create_device_ib_res()
183 static void iser_free_device_ib_res(struct iser_device *device) in iser_free_device_ib_res() argument
186 BUG_ON(device->mr == NULL); in iser_free_device_ib_res()
188 for (i = 0; i < device->comps_used; i++) { in iser_free_device_ib_res()
189 struct iser_comp *comp = &device->comps[i]; in iser_free_device_ib_res()
196 (void)ib_unregister_event_handler(&device->event_handler); in iser_free_device_ib_res()
197 (void)ib_dereg_mr(device->mr); in iser_free_device_ib_res()
198 (void)ib_dealloc_pd(device->pd); in iser_free_device_ib_res()
200 kfree(device->comps); in iser_free_device_ib_res()
201 device->comps = NULL; in iser_free_device_ib_res()
203 device->mr = NULL; in iser_free_device_ib_res()
204 device->pd = NULL; in iser_free_device_ib_res()
214 struct iser_device *device = ib_conn->device; in iser_create_fmr_pool() local
240 ib_conn->fmr.pool = ib_create_fmr_pool(device->pd, &params); in iser_create_fmr_pool()
380 struct iser_device *device = ib_conn->device; in iser_create_fastreg_pool() local
394 ret = iser_create_fastreg_desc(device->ib_device, device->pd, in iser_create_fastreg_pool()
451 struct iser_device *device; in iser_create_ib_conn_res() local
457 BUG_ON(ib_conn->device == NULL); in iser_create_ib_conn_res()
459 device = ib_conn->device; in iser_create_ib_conn_res()
460 dev_attr = &device->dev_attr; in iser_create_ib_conn_res()
466 for (index = 0; index < device->comps_used; index++) { in iser_create_ib_conn_res()
467 if (device->comps[index].active_qps < in iser_create_ib_conn_res()
468 device->comps[min_index].active_qps) in iser_create_ib_conn_res()
471 ib_conn->comp = &device->comps[min_index]; in iser_create_ib_conn_res()
500 device->ib_device->name, dev_attr->max_qp_wr); in iser_create_ib_conn_res()
504 ret = rdma_create_qp(ib_conn->cma_id, device->pd, &init_attr); in iser_create_ib_conn_res()
530 struct iser_device *device; in iser_device_find_by_ib_device() local
534 list_for_each_entry(device, &ig.device_list, ig_list) in iser_device_find_by_ib_device()
536 if (device->ib_device->node_guid == cma_id->device->node_guid) in iser_device_find_by_ib_device()
539 device = kzalloc(sizeof *device, GFP_KERNEL); in iser_device_find_by_ib_device()
540 if (device == NULL) in iser_device_find_by_ib_device()
544 device->ib_device = cma_id->device; in iser_device_find_by_ib_device()
546 if (iser_create_device_ib_res(device)) { in iser_device_find_by_ib_device()
547 kfree(device); in iser_device_find_by_ib_device()
548 device = NULL; in iser_device_find_by_ib_device()
551 list_add(&device->ig_list, &ig.device_list); in iser_device_find_by_ib_device()
554 device->refcount++; in iser_device_find_by_ib_device()
557 return device; in iser_device_find_by_ib_device()
561 static void iser_device_try_release(struct iser_device *device) in iser_device_try_release() argument
564 device->refcount--; in iser_device_try_release()
565 iser_info("device %p refcount %d\n", device, device->refcount); in iser_device_try_release()
566 if (!device->refcount) { in iser_device_try_release()
567 iser_free_device_ib_res(device); in iser_device_try_release()
568 list_del(&device->ig_list); in iser_device_try_release()
569 kfree(device); in iser_device_try_release()
623 struct iser_device *device = ib_conn->device; in iser_free_ib_conn_res() local
638 if (device != NULL) { in iser_free_ib_conn_res()
639 iser_device_try_release(device); in iser_free_ib_conn_res()
640 ib_conn->device = NULL; in iser_free_ib_conn_res()
740 struct iser_device *device; in iser_addr_handler() local
751 device = iser_device_find_by_ib_device(cma_id); in iser_addr_handler()
752 if (!device) { in iser_addr_handler()
758 ib_conn->device = device; in iser_addr_handler()
762 if (!(device->dev_attr.device_cap_flags & in iser_addr_handler()
766 ib_conn->device->ib_device->name); in iser_addr_handler()
791 struct iser_device *device = ib_conn->device; in iser_route_handler() local
802 conn_param.responder_resources = device->dev_attr.max_qp_rd_atom; in iser_route_handler()
956 ib_conn->device = NULL; in iser_connect()
1012 sge.lkey = ib_conn->device->mr->lkey; in iser_post_recvl()
1070 ib_dma_sync_single_for_device(ib_conn->device->ib_device, in iser_post_send()
1233 unsigned long sector_size = iser_task->sc->device->sector_size; in iser_check_task_pi_status()