Lines Matching refs:iser_conn
238 struct iser_conn *iser_conn = to_iser_conn(ib_conn); in iser_create_ib_conn_res() local
279 iser_conn->max_cmds = ISER_GET_MAX_XMIT_CMDS(max_send_wr - 1); in iser_create_ib_conn_res()
353 static int iser_conn_state_comp_exch(struct iser_conn *iser_conn, in iser_conn_state_comp_exch() argument
359 ret = (iser_conn->state == comp); in iser_conn_state_comp_exch()
361 iser_conn->state = exch; in iser_conn_state_comp_exch()
368 struct iser_conn *iser_conn; in iser_release_work() local
370 iser_conn = container_of(work, struct iser_conn, release_work); in iser_release_work()
373 wait_for_completion(&iser_conn->stop_completion); in iser_release_work()
375 wait_for_completion(&iser_conn->ib_completion); in iser_release_work()
377 mutex_lock(&iser_conn->state_mutex); in iser_release_work()
378 iser_conn->state = ISER_CONN_DOWN; in iser_release_work()
379 mutex_unlock(&iser_conn->state_mutex); in iser_release_work()
381 iser_conn_release(iser_conn); in iser_release_work()
395 static void iser_free_ib_conn_res(struct iser_conn *iser_conn, in iser_free_ib_conn_res() argument
398 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_free_ib_conn_res()
402 iser_conn, ib_conn->cma_id, ib_conn->qp); in iser_free_ib_conn_res()
411 if (iser_conn->rx_descs) in iser_free_ib_conn_res()
412 iser_free_rx_descriptors(iser_conn); in iser_free_ib_conn_res()
425 void iser_conn_release(struct iser_conn *iser_conn) in iser_conn_release() argument
427 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_release()
430 list_del(&iser_conn->conn_list); in iser_conn_release()
433 mutex_lock(&iser_conn->state_mutex); in iser_conn_release()
435 if (iser_conn->state != ISER_CONN_DOWN) { in iser_conn_release()
437 iser_conn, iser_conn->state); in iser_conn_release()
438 iscsi_destroy_endpoint(iser_conn->ep); in iser_conn_release()
439 iser_conn->state = ISER_CONN_DOWN; in iser_conn_release()
445 iser_free_ib_conn_res(iser_conn, true); in iser_conn_release()
446 mutex_unlock(&iser_conn->state_mutex); in iser_conn_release()
453 kfree(iser_conn); in iser_conn_release()
463 int iser_conn_terminate(struct iser_conn *iser_conn) in iser_conn_terminate() argument
465 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_terminate()
469 if (!iser_conn_state_comp_exch(iser_conn, ISER_CONN_UP, in iser_conn_terminate()
473 iser_info("iser_conn %p state %d\n", iser_conn, iser_conn->state); in iser_conn_terminate()
476 if (iser_conn->iscsi_conn) in iser_conn_terminate()
477 iscsi_suspend_queue(iser_conn->iscsi_conn); in iser_conn_terminate()
488 iser_conn, err); in iser_conn_terminate()
502 struct iser_conn *iser_conn; in iser_connect_error() local
504 iser_conn = (struct iser_conn *)cma_id->context; in iser_connect_error()
505 iser_conn->state = ISER_CONN_TERMINATING; in iser_connect_error()
509 iser_calc_scsi_params(struct iser_conn *iser_conn, in iser_calc_scsi_params() argument
512 struct iser_device *device = iser_conn->ib_conn.device; in iser_calc_scsi_params()
529 if (iser_conn->ib_conn.pi_support) in iser_calc_scsi_params()
537 iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize); in iser_calc_scsi_params()
538 iser_conn->pages_per_mr = in iser_calc_scsi_params()
539 iser_conn->scsi_sg_tablesize + reserved_mr_pages; in iser_calc_scsi_params()
548 struct iser_conn *iser_conn; in iser_addr_handler() local
552 iser_conn = (struct iser_conn *)cma_id->context; in iser_addr_handler()
553 if (iser_conn->state != ISER_CONN_PENDING) in iser_addr_handler()
557 ib_conn = &iser_conn->ib_conn; in iser_addr_handler()
580 iser_calc_scsi_params(iser_conn, iser_max_sectors); in iser_addr_handler()
598 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_route_handler() local
599 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_route_handler()
602 if (iser_conn->state != ISER_CONN_PENDING) in iser_route_handler()
637 struct iser_conn *iser_conn; in iser_connected_handler() local
641 iser_conn = (struct iser_conn *)cma_id->context; in iser_connected_handler()
642 if (iser_conn->state != ISER_CONN_PENDING) in iser_connected_handler()
652 iser_conn->snd_w_inv = !(flags & ISER_SEND_W_INV_NOT_SUP); in iser_connected_handler()
656 iser_conn, iser_conn->snd_w_inv ? "remote" : "local"); in iser_connected_handler()
658 iser_conn->state = ISER_CONN_UP; in iser_connected_handler()
659 complete(&iser_conn->up_completion); in iser_connected_handler()
664 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_disconnected_handler() local
666 if (iser_conn_terminate(iser_conn)) { in iser_disconnected_handler()
667 if (iser_conn->iscsi_conn) in iser_disconnected_handler()
668 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_disconnected_handler()
678 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_cleanup_handler() local
686 iser_free_ib_conn_res(iser_conn, destroy); in iser_cleanup_handler()
687 complete(&iser_conn->ib_completion); in iser_cleanup_handler()
692 struct iser_conn *iser_conn; in iser_cma_handler() local
695 iser_conn = (struct iser_conn *)cma_id->context; in iser_cma_handler()
700 mutex_lock(&iser_conn->state_mutex); in iser_cma_handler()
734 if (iser_conn->state != ISER_CONN_DOWN) { in iser_cma_handler()
735 iser_conn->ib_conn.cma_id = NULL; in iser_cma_handler()
744 mutex_unlock(&iser_conn->state_mutex); in iser_cma_handler()
749 void iser_conn_init(struct iser_conn *iser_conn) in iser_conn_init() argument
751 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_init()
753 iser_conn->state = ISER_CONN_INIT; in iser_conn_init()
754 init_completion(&iser_conn->stop_completion); in iser_conn_init()
755 init_completion(&iser_conn->ib_completion); in iser_conn_init()
756 init_completion(&iser_conn->up_completion); in iser_conn_init()
757 INIT_LIST_HEAD(&iser_conn->conn_list); in iser_conn_init()
758 mutex_init(&iser_conn->state_mutex); in iser_conn_init()
768 int iser_connect(struct iser_conn *iser_conn, in iser_connect() argument
773 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_connect()
776 mutex_lock(&iser_conn->state_mutex); in iser_connect()
778 sprintf(iser_conn->name, "%pISp", dst_addr); in iser_connect()
780 iser_info("connecting to: %s\n", iser_conn->name); in iser_connect()
785 iser_conn->state = ISER_CONN_PENDING; in iser_connect()
788 (void *)iser_conn, in iser_connect()
803 wait_for_completion_interruptible(&iser_conn->up_completion); in iser_connect()
805 if (iser_conn->state != ISER_CONN_UP) { in iser_connect()
810 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
813 list_add(&iser_conn->conn_list, &ig.connlist); in iser_connect()
820 iser_conn->state = ISER_CONN_DOWN; in iser_connect()
822 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
823 iser_conn_release(iser_conn); in iser_connect()
827 int iser_post_recvl(struct iser_conn *iser_conn) in iser_post_recvl() argument
829 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvl()
830 struct iser_login_desc *desc = &iser_conn->login_desc; in iser_post_recvl()
854 int iser_post_recvm(struct iser_conn *iser_conn, int count) in iser_post_recvm() argument
856 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvm()
857 unsigned int my_rx_head = iser_conn->rx_desc_head; in iser_post_recvm()
863 rx_desc = &iser_conn->rx_descs[my_rx_head]; in iser_post_recvm()
869 my_rx_head = (my_rx_head + 1) & iser_conn->qp_max_recv_dtos_mask; in iser_post_recvm()
881 iser_conn->rx_desc_head = my_rx_head; in iser_post_recvm()
978 struct iser_conn *iser_conn = to_iser_conn(wc->qp->qp_context); in iser_err_comp() local
984 if (iser_conn->iscsi_conn) in iser_err_comp()
985 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_err_comp()