Lines Matching refs:ib_conn

90 iser_handle_comp_error(struct ib_conn *ib_conn,  in iser_handle_comp_error()  argument
94 struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn, in iser_handle_comp_error()
95 ib_conn); in iser_handle_comp_error()
101 ib_conn->post_recv_buf_count--; in iser_handle_comp_error()
117 struct ib_conn *ib_conn; in iser_handle_wc() local
121 ib_conn = wc->qp->qp_context; in iser_handle_wc()
126 ib_conn); in iser_handle_wc()
130 iser_snd_completion(tx_desc, ib_conn); in iser_handle_wc()
135 struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn, in iser_handle_wc()
136 ib_conn); in iser_handle_wc()
148 mtx_lock(&ib_conn->beacon.flush_lock); in iser_handle_wc()
150 cv_signal(&ib_conn->beacon.flush_cv); in iser_handle_wc()
151 mtx_unlock(&ib_conn->beacon.flush_lock); in iser_handle_wc()
153 iser_handle_comp_error(ib_conn, wc); in iser_handle_wc()
361 iser_create_fastreg_pool(struct ib_conn *ib_conn, unsigned cmds_max) in iser_create_fastreg_pool() argument
363 struct iser_device *device = ib_conn->device; in iser_create_fastreg_pool()
367 INIT_LIST_HEAD(&ib_conn->fastreg.pool); in iser_create_fastreg_pool()
368 ib_conn->fastreg.pool_size = 0; in iser_create_fastreg_pool()
376 list_add_tail(&desc->list, &ib_conn->fastreg.pool); in iser_create_fastreg_pool()
377 ib_conn->fastreg.pool_size++; in iser_create_fastreg_pool()
383 iser_free_fastreg_pool(ib_conn); in iser_create_fastreg_pool()
391 iser_free_fastreg_pool(struct ib_conn *ib_conn) in iser_free_fastreg_pool() argument
396 if (list_empty(&ib_conn->fastreg.pool)) in iser_free_fastreg_pool()
399 ISER_DBG("freeing conn %p fr pool", ib_conn); in iser_free_fastreg_pool()
401 list_for_each_entry_safe(desc, tmp, &ib_conn->fastreg.pool, list) { in iser_free_fastreg_pool()
408 if (i < ib_conn->fastreg.pool_size) in iser_free_fastreg_pool()
410 ib_conn->fastreg.pool_size - i); in iser_free_fastreg_pool()
419 iser_create_ib_conn_res(struct ib_conn *ib_conn) in iser_create_ib_conn_res() argument
428 iser_conn = container_of(ib_conn, struct iser_conn, ib_conn); in iser_create_ib_conn_res()
429 device = ib_conn->device; in iser_create_ib_conn_res()
439 ib_conn->comp = &device->comps[min_index]; in iser_create_ib_conn_res()
440 ib_conn->comp->active_qps++; in iser_create_ib_conn_res()
442 ISER_INFO("cq index %d used for ib_conn %p", min_index, ib_conn); in iser_create_ib_conn_res()
446 init_attr.qp_context = (void *)ib_conn; in iser_create_ib_conn_res()
447 init_attr.send_cq = ib_conn->comp->cq; in iser_create_ib_conn_res()
448 init_attr.recv_cq = ib_conn->comp->cq; in iser_create_ib_conn_res()
467 ret = rdma_create_qp(ib_conn->cma_id, device->pd, &init_attr); in iser_create_ib_conn_res()
471 ib_conn->qp = ib_conn->cma_id->qp; in iser_create_ib_conn_res()
473 ib_conn, ib_conn->cma_id, in iser_create_ib_conn_res()
474 ib_conn->cma_id->qp); in iser_create_ib_conn_res()
480 ib_conn->comp->active_qps--; in iser_create_ib_conn_res()
569 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_free_ib_conn_res() local
570 struct iser_device *device = ib_conn->device; in iser_free_ib_conn_res()
573 iser_conn, ib_conn->cma_id, ib_conn->qp); in iser_free_ib_conn_res()
575 if (ib_conn->qp != NULL) { in iser_free_ib_conn_res()
577 ib_conn->comp->active_qps--; in iser_free_ib_conn_res()
579 rdma_destroy_qp(ib_conn->cma_id); in iser_free_ib_conn_res()
580 ib_conn->qp = NULL; in iser_free_ib_conn_res()
592 ib_conn->device = NULL; in iser_free_ib_conn_res()
604 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_terminate() local
616 if (ib_conn->qp == NULL) { in iser_conn_terminate()
636 if (ib_conn->cma_id) { in iser_conn_terminate()
637 err = rdma_disconnect(ib_conn->cma_id); in iser_conn_terminate()
642 mtx_lock(&ib_conn->beacon.flush_lock); in iser_conn_terminate()
643 memset(&ib_conn->beacon.send, 0, sizeof(struct ib_send_wr)); in iser_conn_terminate()
644 ib_conn->beacon.send.wr_id = ISER_BEACON_WRID; in iser_conn_terminate()
645 ib_conn->beacon.send.opcode = IB_WR_SEND; in iser_conn_terminate()
647 err = ib_post_send(ib_conn->qp, &ib_conn->beacon.send, &bad_send_wr); in iser_conn_terminate()
649 ISER_ERR("conn %p failed to post send_beacon", ib_conn); in iser_conn_terminate()
650 mtx_unlock(&ib_conn->beacon.flush_lock); in iser_conn_terminate()
655 cv_wait(&ib_conn->beacon.flush_cv, &ib_conn->beacon.flush_lock); in iser_conn_terminate()
658 memset(&ib_conn->beacon.recv, 0, sizeof(struct ib_recv_wr)); in iser_conn_terminate()
659 ib_conn->beacon.recv.wr_id = ISER_BEACON_WRID; in iser_conn_terminate()
661 err = ib_post_recv(ib_conn->qp, &ib_conn->beacon.recv, &bad_recv_wr); in iser_conn_terminate()
663 ISER_ERR("conn %p failed to post recv_beacon", ib_conn); in iser_conn_terminate()
664 mtx_unlock(&ib_conn->beacon.flush_lock); in iser_conn_terminate()
669 cv_wait(&ib_conn->beacon.flush_cv, &ib_conn->beacon.flush_lock); in iser_conn_terminate()
670 mtx_unlock(&ib_conn->beacon.flush_lock); in iser_conn_terminate()
703 struct ib_conn *ib_conn; in iser_addr_handler() local
708 ib_conn = &iser_conn->ib_conn; in iser_addr_handler()
717 ib_conn->device = device; in iser_addr_handler()
737 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_route_handler() local
738 struct iser_device *device = ib_conn->device; in iser_route_handler()
740 ret = iser_create_ib_conn_res(ib_conn); in iser_route_handler()
853 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvl() local
859 sge.lkey = ib_conn->device->mr->lkey; in iser_post_recvl()
866 ib_conn->post_recv_buf_count++; in iser_post_recvl()
867 ib_ret = ib_post_recv(ib_conn->qp, &rx_wr, &rx_wr_failed); in iser_post_recvl()
870 ib_conn->post_recv_buf_count--; in iser_post_recvl()
882 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvm() local
886 for (rx_wr = ib_conn->rx_wr, i = 0; i < count; i++, rx_wr++) { in iser_post_recvm()
898 ib_conn->post_recv_buf_count += count; in iser_post_recvm()
899 ib_ret = ib_post_recv(ib_conn->qp, ib_conn->rx_wr, &rx_wr_failed); in iser_post_recvm()
902 ib_conn->post_recv_buf_count -= count; in iser_post_recvm()
914 int iser_post_send(struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc, in iser_post_send() argument
921 ib_dma_sync_single_for_device(ib_conn->device->ib_device, in iser_post_send()
932 ib_ret = ib_post_send(ib_conn->qp, &send_wr, &send_wr_failed); in iser_post_send()