Lines Matching refs:iser_conn
421 struct iser_conn *iser_conn = to_iser_conn(ib_conn); in iser_create_ib_conn_res() local
459 iser_conn->max_cmds = in iser_create_ib_conn_res()
464 iser_conn->max_cmds = in iser_create_ib_conn_res()
468 iser_conn->max_cmds = in iser_create_ib_conn_res()
548 static int iser_conn_state_comp_exch(struct iser_conn *iser_conn, in iser_conn_state_comp_exch() argument
554 ret = (iser_conn->state == comp); in iser_conn_state_comp_exch()
556 iser_conn->state = exch; in iser_conn_state_comp_exch()
563 struct iser_conn *iser_conn; in iser_release_work() local
565 iser_conn = container_of(work, struct iser_conn, release_work); in iser_release_work()
568 wait_for_completion(&iser_conn->stop_completion); in iser_release_work()
570 wait_for_completion(&iser_conn->ib_completion); in iser_release_work()
572 mutex_lock(&iser_conn->state_mutex); in iser_release_work()
573 iser_conn->state = ISER_CONN_DOWN; in iser_release_work()
574 mutex_unlock(&iser_conn->state_mutex); in iser_release_work()
576 iser_conn_release(iser_conn); in iser_release_work()
590 static void iser_free_ib_conn_res(struct iser_conn *iser_conn, in iser_free_ib_conn_res() argument
593 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_free_ib_conn_res()
597 iser_conn, ib_conn->cma_id, ib_conn->qp); in iser_free_ib_conn_res()
608 if (iser_conn->rx_descs) in iser_free_ib_conn_res()
609 iser_free_rx_descriptors(iser_conn); in iser_free_ib_conn_res()
621 void iser_conn_release(struct iser_conn *iser_conn) in iser_conn_release() argument
623 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_release()
626 list_del(&iser_conn->conn_list); in iser_conn_release()
629 mutex_lock(&iser_conn->state_mutex); in iser_conn_release()
631 if (iser_conn->state != ISER_CONN_DOWN) { in iser_conn_release()
633 iser_conn, iser_conn->state); in iser_conn_release()
634 iscsi_destroy_endpoint(iser_conn->ep); in iser_conn_release()
635 iser_conn->state = ISER_CONN_DOWN; in iser_conn_release()
641 iser_free_ib_conn_res(iser_conn, true); in iser_conn_release()
642 mutex_unlock(&iser_conn->state_mutex); in iser_conn_release()
649 kfree(iser_conn); in iser_conn_release()
656 int iser_conn_terminate(struct iser_conn *iser_conn) in iser_conn_terminate() argument
658 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_terminate()
662 if (!iser_conn_state_comp_exch(iser_conn, ISER_CONN_UP, in iser_conn_terminate()
666 iser_info("iser_conn %p state %d\n", iser_conn, iser_conn->state); in iser_conn_terminate()
669 if (iser_conn->iscsi_conn) in iser_conn_terminate()
670 iscsi_suspend_queue(iser_conn->iscsi_conn); in iser_conn_terminate()
681 iser_conn, err); in iser_conn_terminate()
695 struct iser_conn *iser_conn; in iser_connect_error() local
697 iser_conn = (struct iser_conn *)cma_id->context; in iser_connect_error()
698 iser_conn->state = ISER_CONN_TERMINATING; in iser_connect_error()
702 iser_calc_scsi_params(struct iser_conn *iser_conn, in iser_calc_scsi_params() argument
705 struct iser_device *device = iser_conn->ib_conn.device; in iser_calc_scsi_params()
731 iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize); in iser_calc_scsi_params()
732 iser_conn->pages_per_mr = in iser_calc_scsi_params()
733 iser_conn->scsi_sg_tablesize + reserved_mr_pages; in iser_calc_scsi_params()
742 struct iser_conn *iser_conn; in iser_addr_handler() local
746 iser_conn = (struct iser_conn *)cma_id->context; in iser_addr_handler()
747 if (iser_conn->state != ISER_CONN_PENDING) in iser_addr_handler()
751 ib_conn = &iser_conn->ib_conn; in iser_addr_handler()
774 iser_calc_scsi_params(iser_conn, iser_max_sectors); in iser_addr_handler()
792 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_route_handler() local
793 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_route_handler()
796 if (iser_conn->state != ISER_CONN_PENDING) in iser_route_handler()
831 struct iser_conn *iser_conn; in iser_connected_handler() local
835 iser_conn = (struct iser_conn *)cma_id->context; in iser_connected_handler()
836 if (iser_conn->state != ISER_CONN_PENDING) in iser_connected_handler()
846 iser_conn->snd_w_inv = !(flags & ISER_SEND_W_INV_NOT_SUP); in iser_connected_handler()
850 iser_conn, iser_conn->snd_w_inv ? "remote" : "local"); in iser_connected_handler()
852 iser_conn->state = ISER_CONN_UP; in iser_connected_handler()
853 complete(&iser_conn->up_completion); in iser_connected_handler()
858 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_disconnected_handler() local
860 if (iser_conn_terminate(iser_conn)) { in iser_disconnected_handler()
861 if (iser_conn->iscsi_conn) in iser_disconnected_handler()
862 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_disconnected_handler()
872 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_cleanup_handler() local
880 iser_free_ib_conn_res(iser_conn, destroy); in iser_cleanup_handler()
881 complete(&iser_conn->ib_completion); in iser_cleanup_handler()
886 struct iser_conn *iser_conn; in iser_cma_handler() local
889 iser_conn = (struct iser_conn *)cma_id->context; in iser_cma_handler()
894 mutex_lock(&iser_conn->state_mutex); in iser_cma_handler()
928 if (iser_conn->state != ISER_CONN_DOWN) { in iser_cma_handler()
929 iser_conn->ib_conn.cma_id = NULL; in iser_cma_handler()
938 mutex_unlock(&iser_conn->state_mutex); in iser_cma_handler()
943 void iser_conn_init(struct iser_conn *iser_conn) in iser_conn_init() argument
945 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_init()
947 iser_conn->state = ISER_CONN_INIT; in iser_conn_init()
948 init_completion(&iser_conn->stop_completion); in iser_conn_init()
949 init_completion(&iser_conn->ib_completion); in iser_conn_init()
950 init_completion(&iser_conn->up_completion); in iser_conn_init()
951 INIT_LIST_HEAD(&iser_conn->conn_list); in iser_conn_init()
952 mutex_init(&iser_conn->state_mutex); in iser_conn_init()
962 int iser_connect(struct iser_conn *iser_conn, in iser_connect() argument
967 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_connect()
970 mutex_lock(&iser_conn->state_mutex); in iser_connect()
972 sprintf(iser_conn->name, "%pISp", dst_addr); in iser_connect()
974 iser_info("connecting to: %s\n", iser_conn->name); in iser_connect()
979 iser_conn->state = ISER_CONN_PENDING; in iser_connect()
982 (void *)iser_conn, in iser_connect()
997 wait_for_completion_interruptible(&iser_conn->up_completion); in iser_connect()
999 if (iser_conn->state != ISER_CONN_UP) { in iser_connect()
1004 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
1007 list_add(&iser_conn->conn_list, &ig.connlist); in iser_connect()
1014 iser_conn->state = ISER_CONN_DOWN; in iser_connect()
1016 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
1017 iser_conn_release(iser_conn); in iser_connect()
1021 int iser_post_recvl(struct iser_conn *iser_conn) in iser_post_recvl() argument
1023 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvl()
1024 struct iser_login_desc *desc = &iser_conn->login_desc; in iser_post_recvl()
1048 int iser_post_recvm(struct iser_conn *iser_conn, int count) in iser_post_recvm() argument
1050 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvm()
1051 unsigned int my_rx_head = iser_conn->rx_desc_head; in iser_post_recvm()
1057 rx_desc = &iser_conn->rx_descs[my_rx_head]; in iser_post_recvm()
1063 my_rx_head = (my_rx_head + 1) & iser_conn->qp_max_recv_dtos_mask; in iser_post_recvm()
1075 iser_conn->rx_desc_head = my_rx_head; in iser_post_recvm()
1162 struct iser_conn *iser_conn = to_iser_conn(wc->qp->qp_context); in iser_err_comp() local
1168 if (iser_conn->iscsi_conn) in iser_err_comp()
1169 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_err_comp()