Lines Matching refs:device

69 		 event->device->name, event->element.port_num);  in iser_event_handler()
79 static int iser_create_device_ib_res(struct iser_device *device) in iser_create_device_ib_res() argument
81 struct ib_device_attr *dev_attr = &device->dev_attr; in iser_create_device_ib_res()
84 ret = ib_query_device(device->ib_device, dev_attr); in iser_create_device_ib_res()
86 pr_warn("Query device failed for %s\n", device->ib_device->name); in iser_create_device_ib_res()
90 ret = iser_assign_reg_ops(device); in iser_create_device_ib_res()
94 device->comps_used = min_t(int, num_online_cpus(), in iser_create_device_ib_res()
95 device->ib_device->num_comp_vectors); in iser_create_device_ib_res()
97 device->comps = kcalloc(device->comps_used, sizeof(*device->comps), in iser_create_device_ib_res()
99 if (!device->comps) in iser_create_device_ib_res()
105 device->comps_used, device->ib_device->name, in iser_create_device_ib_res()
106 device->ib_device->num_comp_vectors, max_cqe); in iser_create_device_ib_res()
108 device->pd = ib_alloc_pd(device->ib_device); in iser_create_device_ib_res()
109 if (IS_ERR(device->pd)) in iser_create_device_ib_res()
112 for (i = 0; i < device->comps_used; i++) { in iser_create_device_ib_res()
114 struct iser_comp *comp = &device->comps[i]; in iser_create_device_ib_res()
116 comp->device = device; in iser_create_device_ib_res()
119 comp->cq = ib_create_cq(device->ib_device, in iser_create_device_ib_res()
141 device->mr = ib_get_dma_mr(device->pd, access); in iser_create_device_ib_res()
142 if (IS_ERR(device->mr)) in iser_create_device_ib_res()
146 INIT_IB_EVENT_HANDLER(&device->event_handler, device->ib_device, in iser_create_device_ib_res()
148 if (ib_register_event_handler(&device->event_handler)) in iser_create_device_ib_res()
154 if (device->mr) in iser_create_device_ib_res()
155 ib_dereg_mr(device->mr); in iser_create_device_ib_res()
157 for (i = 0; i < device->comps_used; i++) in iser_create_device_ib_res()
158 tasklet_kill(&device->comps[i].tasklet); in iser_create_device_ib_res()
160 for (i = 0; i < device->comps_used; i++) { in iser_create_device_ib_res()
161 struct iser_comp *comp = &device->comps[i]; in iser_create_device_ib_res()
166 ib_dealloc_pd(device->pd); in iser_create_device_ib_res()
168 kfree(device->comps); in iser_create_device_ib_res()
178 static void iser_free_device_ib_res(struct iser_device *device) in iser_free_device_ib_res() argument
182 for (i = 0; i < device->comps_used; i++) { in iser_free_device_ib_res()
183 struct iser_comp *comp = &device->comps[i]; in iser_free_device_ib_res()
190 (void)ib_unregister_event_handler(&device->event_handler); in iser_free_device_ib_res()
191 if (device->mr) in iser_free_device_ib_res()
192 (void)ib_dereg_mr(device->mr); in iser_free_device_ib_res()
193 ib_dealloc_pd(device->pd); in iser_free_device_ib_res()
195 kfree(device->comps); in iser_free_device_ib_res()
196 device->comps = NULL; in iser_free_device_ib_res()
198 device->mr = NULL; in iser_free_device_ib_res()
199 device->pd = NULL; in iser_free_device_ib_res()
211 struct iser_device *device = ib_conn->device; in iser_alloc_fmr_pool() local
247 fmr_pool = ib_create_fmr_pool(device->pd, &params); in iser_alloc_fmr_pool()
402 struct iser_device *device = ib_conn->device; in iser_alloc_fastreg_pool() local
411 desc = iser_create_fastreg_desc(device->ib_device, device->pd, in iser_alloc_fastreg_pool()
466 struct iser_device *device; in iser_create_ib_conn_res() local
472 BUG_ON(ib_conn->device == NULL); in iser_create_ib_conn_res()
474 device = ib_conn->device; in iser_create_ib_conn_res()
475 dev_attr = &device->dev_attr; in iser_create_ib_conn_res()
481 for (index = 0; index < device->comps_used; index++) { in iser_create_ib_conn_res()
482 if (device->comps[index].active_qps < in iser_create_ib_conn_res()
483 device->comps[min_index].active_qps) in iser_create_ib_conn_res()
486 ib_conn->comp = &device->comps[min_index]; in iser_create_ib_conn_res()
515 device->ib_device->name, dev_attr->max_qp_wr); in iser_create_ib_conn_res()
519 ret = rdma_create_qp(ib_conn->cma_id, device->pd, &init_attr); in iser_create_ib_conn_res()
545 struct iser_device *device; in iser_device_find_by_ib_device() local
549 list_for_each_entry(device, &ig.device_list, ig_list) in iser_device_find_by_ib_device()
551 if (device->ib_device->node_guid == cma_id->device->node_guid) in iser_device_find_by_ib_device()
554 device = kzalloc(sizeof *device, GFP_KERNEL); in iser_device_find_by_ib_device()
555 if (device == NULL) in iser_device_find_by_ib_device()
559 device->ib_device = cma_id->device; in iser_device_find_by_ib_device()
561 if (iser_create_device_ib_res(device)) { in iser_device_find_by_ib_device()
562 kfree(device); in iser_device_find_by_ib_device()
563 device = NULL; in iser_device_find_by_ib_device()
566 list_add(&device->ig_list, &ig.device_list); in iser_device_find_by_ib_device()
569 device->refcount++; in iser_device_find_by_ib_device()
572 return device; in iser_device_find_by_ib_device()
576 static void iser_device_try_release(struct iser_device *device) in iser_device_try_release() argument
579 device->refcount--; in iser_device_try_release()
580 iser_info("device %p refcount %d\n", device, device->refcount); in iser_device_try_release()
581 if (!device->refcount) { in iser_device_try_release()
582 iser_free_device_ib_res(device); in iser_device_try_release()
583 list_del(&device->ig_list); in iser_device_try_release()
584 kfree(device); in iser_device_try_release()
638 struct iser_device *device = ib_conn->device; in iser_free_ib_conn_res() local
653 if (device != NULL) { in iser_free_ib_conn_res()
654 iser_device_try_release(device); in iser_free_ib_conn_res()
655 ib_conn->device = NULL; in iser_free_ib_conn_res()
754 struct iser_device *device = iser_conn->ib_conn.device; in iser_calc_scsi_params() local
759 device->dev_attr.max_fast_reg_page_list_len); in iser_calc_scsi_params()
780 struct iser_device *device; in iser_addr_handler() local
791 device = iser_device_find_by_ib_device(cma_id); in iser_addr_handler()
792 if (!device) { in iser_addr_handler()
798 ib_conn->device = device; in iser_addr_handler()
802 if (!(device->dev_attr.device_cap_flags & in iser_addr_handler()
806 ib_conn->device->ib_device->name); in iser_addr_handler()
833 struct iser_device *device = ib_conn->device; in iser_route_handler() local
844 conn_param.responder_resources = device->dev_attr.max_qp_rd_atom; in iser_route_handler()
999 ib_conn->device = NULL; in iser_connect()
1055 sge.lkey = ib_conn->device->pd->local_dma_lkey; in iser_post_recvl()
1113 ib_dma_sync_single_for_device(ib_conn->device->ib_device, in iser_post_send()
1280 unsigned long sector_size = iser_task->sc->device->sector_size; in iser_check_task_pi_status()