Lines Matching refs:iser_conn

365 	struct iser_conn *iser_conn = to_iser_conn(ib_conn);  in iser_create_ib_conn_res()  local
403 iser_conn->max_cmds = in iser_create_ib_conn_res()
408 iser_conn->max_cmds = in iser_create_ib_conn_res()
412 iser_conn->max_cmds = in iser_create_ib_conn_res()
493 static int iser_conn_state_comp_exch(struct iser_conn *iser_conn, in iser_conn_state_comp_exch() argument
499 ret = (iser_conn->state == comp); in iser_conn_state_comp_exch()
501 iser_conn->state = exch; in iser_conn_state_comp_exch()
508 struct iser_conn *iser_conn; in iser_release_work() local
510 iser_conn = container_of(work, struct iser_conn, release_work); in iser_release_work()
513 wait_for_completion(&iser_conn->stop_completion); in iser_release_work()
515 wait_for_completion(&iser_conn->ib_completion); in iser_release_work()
517 mutex_lock(&iser_conn->state_mutex); in iser_release_work()
518 iser_conn->state = ISER_CONN_DOWN; in iser_release_work()
519 mutex_unlock(&iser_conn->state_mutex); in iser_release_work()
521 iser_conn_release(iser_conn); in iser_release_work()
535 static void iser_free_ib_conn_res(struct iser_conn *iser_conn, in iser_free_ib_conn_res() argument
538 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_free_ib_conn_res()
542 iser_conn, ib_conn->cma_id, ib_conn->qp); in iser_free_ib_conn_res()
553 if (iser_conn->rx_descs) in iser_free_ib_conn_res()
554 iser_free_rx_descriptors(iser_conn); in iser_free_ib_conn_res()
566 void iser_conn_release(struct iser_conn *iser_conn) in iser_conn_release() argument
568 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_release()
571 list_del(&iser_conn->conn_list); in iser_conn_release()
574 mutex_lock(&iser_conn->state_mutex); in iser_conn_release()
576 if (iser_conn->state != ISER_CONN_DOWN) { in iser_conn_release()
578 iser_conn, iser_conn->state); in iser_conn_release()
579 iscsi_destroy_endpoint(iser_conn->ep); in iser_conn_release()
580 iser_conn->state = ISER_CONN_DOWN; in iser_conn_release()
586 iser_free_ib_conn_res(iser_conn, true); in iser_conn_release()
587 mutex_unlock(&iser_conn->state_mutex); in iser_conn_release()
594 kfree(iser_conn); in iser_conn_release()
601 int iser_conn_terminate(struct iser_conn *iser_conn) in iser_conn_terminate() argument
603 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_terminate()
607 if (!iser_conn_state_comp_exch(iser_conn, ISER_CONN_UP, in iser_conn_terminate()
611 iser_info("iser_conn %p state %d\n", iser_conn, iser_conn->state); in iser_conn_terminate()
614 if (iser_conn->iscsi_conn) in iser_conn_terminate()
615 iscsi_suspend_queue(iser_conn->iscsi_conn); in iser_conn_terminate()
626 iser_conn, err); in iser_conn_terminate()
640 struct iser_conn *iser_conn; in iser_connect_error() local
642 iser_conn = (struct iser_conn *)cma_id->context; in iser_connect_error()
643 iser_conn->state = ISER_CONN_TERMINATING; in iser_connect_error()
647 iser_calc_scsi_params(struct iser_conn *iser_conn, in iser_calc_scsi_params() argument
650 struct iser_device *device = iser_conn->ib_conn.device; in iser_calc_scsi_params()
668 if (iser_conn->ib_conn.pi_support) in iser_calc_scsi_params()
682 iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize); in iser_calc_scsi_params()
683 iser_conn->pages_per_mr = in iser_calc_scsi_params()
684 iser_conn->scsi_sg_tablesize + reserved_mr_pages; in iser_calc_scsi_params()
693 struct iser_conn *iser_conn; in iser_addr_handler() local
697 iser_conn = (struct iser_conn *)cma_id->context; in iser_addr_handler()
698 if (iser_conn->state != ISER_CONN_PENDING) in iser_addr_handler()
702 ib_conn = &iser_conn->ib_conn; in iser_addr_handler()
725 iser_calc_scsi_params(iser_conn, iser_max_sectors); in iser_addr_handler()
743 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_route_handler() local
744 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_route_handler()
747 if (iser_conn->state != ISER_CONN_PENDING) in iser_route_handler()
782 struct iser_conn *iser_conn; in iser_connected_handler() local
786 iser_conn = (struct iser_conn *)cma_id->context; in iser_connected_handler()
787 if (iser_conn->state != ISER_CONN_PENDING) in iser_connected_handler()
797 iser_conn->snd_w_inv = !(flags & ISER_SEND_W_INV_NOT_SUP); in iser_connected_handler()
801 iser_conn, iser_conn->snd_w_inv ? "remote" : "local"); in iser_connected_handler()
803 iser_conn->state = ISER_CONN_UP; in iser_connected_handler()
804 complete(&iser_conn->up_completion); in iser_connected_handler()
809 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_disconnected_handler() local
811 if (iser_conn_terminate(iser_conn)) { in iser_disconnected_handler()
812 if (iser_conn->iscsi_conn) in iser_disconnected_handler()
813 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_disconnected_handler()
823 struct iser_conn *iser_conn = (struct iser_conn *)cma_id->context; in iser_cleanup_handler() local
831 iser_free_ib_conn_res(iser_conn, destroy); in iser_cleanup_handler()
832 complete(&iser_conn->ib_completion); in iser_cleanup_handler()
837 struct iser_conn *iser_conn; in iser_cma_handler() local
840 iser_conn = (struct iser_conn *)cma_id->context; in iser_cma_handler()
845 mutex_lock(&iser_conn->state_mutex); in iser_cma_handler()
879 if (iser_conn->state != ISER_CONN_DOWN) { in iser_cma_handler()
880 iser_conn->ib_conn.cma_id = NULL; in iser_cma_handler()
889 mutex_unlock(&iser_conn->state_mutex); in iser_cma_handler()
894 void iser_conn_init(struct iser_conn *iser_conn) in iser_conn_init() argument
896 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_init()
898 iser_conn->state = ISER_CONN_INIT; in iser_conn_init()
899 init_completion(&iser_conn->stop_completion); in iser_conn_init()
900 init_completion(&iser_conn->ib_completion); in iser_conn_init()
901 init_completion(&iser_conn->up_completion); in iser_conn_init()
902 INIT_LIST_HEAD(&iser_conn->conn_list); in iser_conn_init()
903 mutex_init(&iser_conn->state_mutex); in iser_conn_init()
913 int iser_connect(struct iser_conn *iser_conn, in iser_connect() argument
918 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_connect()
921 mutex_lock(&iser_conn->state_mutex); in iser_connect()
923 sprintf(iser_conn->name, "%pISp", dst_addr); in iser_connect()
925 iser_info("connecting to: %s\n", iser_conn->name); in iser_connect()
930 iser_conn->state = ISER_CONN_PENDING; in iser_connect()
933 (void *)iser_conn, in iser_connect()
948 wait_for_completion_interruptible(&iser_conn->up_completion); in iser_connect()
950 if (iser_conn->state != ISER_CONN_UP) { in iser_connect()
955 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
958 list_add(&iser_conn->conn_list, &ig.connlist); in iser_connect()
965 iser_conn->state = ISER_CONN_DOWN; in iser_connect()
967 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
968 iser_conn_release(iser_conn); in iser_connect()
972 int iser_post_recvl(struct iser_conn *iser_conn) in iser_post_recvl() argument
974 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvl()
975 struct iser_login_desc *desc = &iser_conn->login_desc; in iser_post_recvl()
999 int iser_post_recvm(struct iser_conn *iser_conn, int count) in iser_post_recvm() argument
1001 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvm()
1002 unsigned int my_rx_head = iser_conn->rx_desc_head; in iser_post_recvm()
1008 rx_desc = &iser_conn->rx_descs[my_rx_head]; in iser_post_recvm()
1014 my_rx_head = (my_rx_head + 1) & iser_conn->qp_max_recv_dtos_mask; in iser_post_recvm()
1026 iser_conn->rx_desc_head = my_rx_head; in iser_post_recvm()
1120 struct iser_conn *iser_conn = to_iser_conn(wc->qp->qp_context); in iser_err_comp() local
1126 if (iser_conn->iscsi_conn) in iser_err_comp()
1127 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_err_comp()