Lines Matching refs:iser_conn

449 	struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn,  in iser_create_ib_conn_res()  local
488 iser_conn->max_cmds = in iser_create_ib_conn_res()
493 iser_conn->max_cmds = in iser_create_ib_conn_res()
497 iser_conn->max_cmds = in iser_create_ib_conn_res()
577 static int iser_conn_state_comp_exch(struct iser_conn *iser_conn, in iser_conn_state_comp_exch() argument
583 ret = (iser_conn->state == comp); in iser_conn_state_comp_exch()
585 iser_conn->state = exch; in iser_conn_state_comp_exch()
592 struct iser_conn *iser_conn; in iser_release_work() local
594 iser_conn = container_of(work, struct iser_conn, release_work); in iser_release_work()
597 wait_for_completion(&iser_conn->stop_completion); in iser_release_work()
599 wait_for_completion(&iser_conn->ib_completion); in iser_release_work()
601 mutex_lock(&iser_conn->state_mutex); in iser_release_work()
602 iser_conn->state = ISER_CONN_DOWN; in iser_release_work()
603 mutex_unlock(&iser_conn->state_mutex); in iser_release_work()
605 iser_conn_release(iser_conn); in iser_release_work()
619 static void iser_free_ib_conn_res(struct iser_conn *iser_conn, in iser_free_ib_conn_res() argument
622 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_free_ib_conn_res()
626 iser_conn, ib_conn->cma_id, ib_conn->qp); in iser_free_ib_conn_res()
635 if (iser_conn->rx_descs) in iser_free_ib_conn_res()
636 iser_free_rx_descriptors(iser_conn); in iser_free_ib_conn_res()
648 void iser_conn_release(struct iser_conn *iser_conn) in iser_conn_release() argument
650 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_release()
653 list_del(&iser_conn->conn_list); in iser_conn_release()
656 mutex_lock(&iser_conn->state_mutex); in iser_conn_release()
658 if (iser_conn->state != ISER_CONN_DOWN) { in iser_conn_release()
660 iser_conn, iser_conn->state); in iser_conn_release()
661 iscsi_destroy_endpoint(iser_conn->ep); in iser_conn_release()
662 iser_conn->state = ISER_CONN_DOWN; in iser_conn_release()
668 iser_free_ib_conn_res(iser_conn, true); in iser_conn_release()
669 mutex_unlock(&iser_conn->state_mutex); in iser_conn_release()
676 kfree(iser_conn); in iser_conn_release()
683 int iser_conn_terminate(struct iser_conn *iser_conn) in iser_conn_terminate() argument
685 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_terminate()
690 if (!iser_conn_state_comp_exch(iser_conn, ISER_CONN_UP, in iser_conn_terminate()
694 iser_info("iser_conn %p state %d\n", iser_conn, iser_conn->state); in iser_conn_terminate()
697 if (iser_conn->iscsi_conn) in iser_conn_terminate()
698 iscsi_suspend_queue(iser_conn->iscsi_conn); in iser_conn_terminate()
709 iser_conn, err); in iser_conn_terminate()
729 struct iser_conn *iser_conn; in iser_connect_error() local
731 iser_conn = (struct iser_conn *)cma_id->context; in iser_connect_error()
732 iser_conn->state = ISER_CONN_TERMINATING; in iser_connect_error()
741 struct iser_conn *iser_conn; in iser_addr_handler() local
745 iser_conn = (struct iser_conn *)cma_id->context; in iser_addr_handler()
746 if (iser_conn->state != ISER_CONN_PENDING) in iser_addr_handler()
750 ib_conn = &iser_conn->ib_conn; in iser_addr_handler()
789 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_route_handler() local
790 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_route_handler()
793 if (iser_conn->state != ISER_CONN_PENDING) in iser_route_handler()
826 struct iser_conn *iser_conn; in iser_connected_handler() local
830 iser_conn = (struct iser_conn *)cma_id->context; in iser_connected_handler()
831 if (iser_conn->state != ISER_CONN_PENDING) in iser_connected_handler()
838 iser_conn->state = ISER_CONN_UP; in iser_connected_handler()
839 complete(&iser_conn->up_completion); in iser_connected_handler()
844 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_disconnected_handler() local
846 if (iser_conn_terminate(iser_conn)) { in iser_disconnected_handler()
847 if (iser_conn->iscsi_conn) in iser_disconnected_handler()
848 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_disconnected_handler()
858 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_cleanup_handler() local
866 iser_free_ib_conn_res(iser_conn, destroy); in iser_cleanup_handler()
867 complete(&iser_conn->ib_completion); in iser_cleanup_handler()
872 struct iser_conn *iser_conn; in iser_cma_handler() local
875 iser_conn = (struct iser_conn *)cma_id->context; in iser_cma_handler()
879 mutex_lock(&iser_conn->state_mutex); in iser_cma_handler()
910 if (iser_conn->state != ISER_CONN_DOWN) { in iser_cma_handler()
911 iser_conn->ib_conn.cma_id = NULL; in iser_cma_handler()
919 mutex_unlock(&iser_conn->state_mutex); in iser_cma_handler()
924 void iser_conn_init(struct iser_conn *iser_conn) in iser_conn_init() argument
926 iser_conn->state = ISER_CONN_INIT; in iser_conn_init()
927 iser_conn->ib_conn.post_recv_buf_count = 0; in iser_conn_init()
928 init_completion(&iser_conn->ib_conn.flush_comp); in iser_conn_init()
929 init_completion(&iser_conn->stop_completion); in iser_conn_init()
930 init_completion(&iser_conn->ib_completion); in iser_conn_init()
931 init_completion(&iser_conn->up_completion); in iser_conn_init()
932 INIT_LIST_HEAD(&iser_conn->conn_list); in iser_conn_init()
933 spin_lock_init(&iser_conn->ib_conn.lock); in iser_conn_init()
934 mutex_init(&iser_conn->state_mutex); in iser_conn_init()
941 int iser_connect(struct iser_conn *iser_conn, in iser_connect() argument
946 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_connect()
949 mutex_lock(&iser_conn->state_mutex); in iser_connect()
951 sprintf(iser_conn->name, "%pISp", dst_addr); in iser_connect()
953 iser_info("connecting to: %s\n", iser_conn->name); in iser_connect()
958 iser_conn->state = ISER_CONN_PENDING; in iser_connect()
964 (void *)iser_conn, in iser_connect()
979 wait_for_completion_interruptible(&iser_conn->up_completion); in iser_connect()
981 if (iser_conn->state != ISER_CONN_UP) { in iser_connect()
986 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
989 list_add(&iser_conn->conn_list, &ig.connlist); in iser_connect()
996 iser_conn->state = ISER_CONN_DOWN; in iser_connect()
998 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
999 iser_conn_release(iser_conn); in iser_connect()
1003 int iser_post_recvl(struct iser_conn *iser_conn) in iser_post_recvl() argument
1006 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvl()
1010 sge.addr = iser_conn->login_resp_dma; in iser_post_recvl()
1014 rx_wr.wr_id = (uintptr_t)iser_conn->login_resp_buf; in iser_post_recvl()
1028 int iser_post_recvm(struct iser_conn *iser_conn, int count) in iser_post_recvm() argument
1032 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvm()
1033 unsigned int my_rx_head = iser_conn->rx_desc_head; in iser_post_recvm()
1037 rx_desc = &iser_conn->rx_descs[my_rx_head]; in iser_post_recvm()
1042 my_rx_head = (my_rx_head + 1) & iser_conn->qp_max_recv_dtos_mask; in iser_post_recvm()
1054 iser_conn->rx_desc_head = my_rx_head; in iser_post_recvm()
1100 is_iser_tx_desc(struct iser_conn *iser_conn, void *wr_id) in is_iser_tx_desc() argument
1102 void *start = iser_conn->rx_descs; in is_iser_tx_desc()
1103 int len = iser_conn->num_rx_descs * sizeof(*iser_conn->rx_descs); in is_iser_tx_desc()
1126 struct iser_conn *iser_conn = container_of(ib_conn, struct iser_conn, in iser_handle_comp_error() local
1130 if (iser_conn->iscsi_conn) in iser_handle_comp_error()
1131 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_handle_comp_error()
1137 if (is_iser_tx_desc(iser_conn, wr_id)) { in iser_handle_comp_error()