Lines Matching refs:iser_conn

237 	struct iser_conn *iser_conn = to_iser_conn(ib_conn);  in iser_create_ib_conn_res()  local
280 iser_conn->max_cmds = ISER_GET_MAX_XMIT_CMDS(max_send_wr - 1); in iser_create_ib_conn_res()
352 struct iser_conn *iser_conn; in iser_release_work() local
354 iser_conn = container_of(work, struct iser_conn, release_work); in iser_release_work()
357 wait_for_completion(&iser_conn->stop_completion); in iser_release_work()
359 wait_for_completion(&iser_conn->ib_completion); in iser_release_work()
361 mutex_lock(&iser_conn->state_mutex); in iser_release_work()
362 iser_conn->state = ISER_CONN_DOWN; in iser_release_work()
363 mutex_unlock(&iser_conn->state_mutex); in iser_release_work()
365 iser_conn_release(iser_conn); in iser_release_work()
379 static void iser_free_ib_conn_res(struct iser_conn *iser_conn, bool destroy) in iser_free_ib_conn_res() argument
381 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_free_ib_conn_res()
385 iser_conn, ib_conn->cma_id, ib_conn->qp); in iser_free_ib_conn_res()
394 if (iser_conn->rx_descs) in iser_free_ib_conn_res()
395 iser_free_rx_descriptors(iser_conn); in iser_free_ib_conn_res()
408 void iser_conn_release(struct iser_conn *iser_conn) in iser_conn_release() argument
410 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_release()
413 list_del(&iser_conn->conn_list); in iser_conn_release()
416 mutex_lock(&iser_conn->state_mutex); in iser_conn_release()
418 if (iser_conn->state != ISER_CONN_DOWN) { in iser_conn_release()
420 iser_conn, iser_conn->state); in iser_conn_release()
421 iscsi_destroy_endpoint(iser_conn->ep); in iser_conn_release()
422 iser_conn->state = ISER_CONN_DOWN; in iser_conn_release()
428 iser_free_ib_conn_res(iser_conn, true); in iser_conn_release()
429 mutex_unlock(&iser_conn->state_mutex); in iser_conn_release()
436 kfree(iser_conn); in iser_conn_release()
446 int iser_conn_terminate(struct iser_conn *iser_conn) in iser_conn_terminate() argument
448 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_terminate()
451 lockdep_assert_held(&iser_conn->state_mutex); in iser_conn_terminate()
454 if (iser_conn->state != ISER_CONN_UP) in iser_conn_terminate()
457 iser_conn->state = ISER_CONN_TERMINATING; in iser_conn_terminate()
458 iser_info("iser_conn %p state %d\n", iser_conn, iser_conn->state); in iser_conn_terminate()
461 if (iser_conn->iscsi_conn) in iser_conn_terminate()
462 iscsi_suspend_queue(iser_conn->iscsi_conn); in iser_conn_terminate()
473 iser_conn, err); in iser_conn_terminate()
487 struct iser_conn *iser_conn = cma_id->context; in iser_connect_error() local
489 lockdep_assert_held(&iser_conn->state_mutex); in iser_connect_error()
491 iser_conn->state = ISER_CONN_TERMINATING; in iser_connect_error()
494 static void iser_calc_scsi_params(struct iser_conn *iser_conn, in iser_calc_scsi_params() argument
497 struct iser_device *device = iser_conn->ib_conn.device; in iser_calc_scsi_params()
514 if (iser_conn->ib_conn.pi_support) in iser_calc_scsi_params()
522 iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize); in iser_calc_scsi_params()
523 iser_conn->pages_per_mr = in iser_calc_scsi_params()
524 iser_conn->scsi_sg_tablesize + reserved_mr_pages; in iser_calc_scsi_params()
532 struct iser_conn *iser_conn = cma_id->context; in iser_addr_handler() local
537 lockdep_assert_held(&iser_conn->state_mutex); in iser_addr_handler()
539 if (iser_conn->state != ISER_CONN_PENDING) in iser_addr_handler()
543 ib_conn = &iser_conn->ib_conn; in iser_addr_handler()
566 iser_calc_scsi_params(iser_conn, iser_max_sectors); in iser_addr_handler()
584 struct iser_conn *iser_conn = cma_id->context; in iser_route_handler() local
585 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_route_handler()
588 lockdep_assert_held(&iser_conn->state_mutex); in iser_route_handler()
590 if (iser_conn->state != ISER_CONN_PENDING) in iser_route_handler()
628 struct iser_conn *iser_conn = cma_id->context; in iser_connected_handler() local
632 lockdep_assert_held(&iser_conn->state_mutex); in iser_connected_handler()
634 if (iser_conn->state != ISER_CONN_PENDING) in iser_connected_handler()
644 iser_conn->snd_w_inv = !(flags & ISER_SEND_W_INV_NOT_SUP); in iser_connected_handler()
648 iser_conn, iser_conn->snd_w_inv ? "remote" : "local"); in iser_connected_handler()
650 iser_conn->state = ISER_CONN_UP; in iser_connected_handler()
651 complete(&iser_conn->up_completion); in iser_connected_handler()
660 struct iser_conn *iser_conn = cma_id->context; in iser_cleanup_handler() local
662 lockdep_assert_held(&iser_conn->state_mutex); in iser_cleanup_handler()
668 if (iser_conn_terminate(iser_conn)) { in iser_cleanup_handler()
669 if (iser_conn->iscsi_conn) in iser_cleanup_handler()
670 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_cleanup_handler()
675 iser_free_ib_conn_res(iser_conn, destroy); in iser_cleanup_handler()
676 complete(&iser_conn->ib_completion); in iser_cleanup_handler()
682 struct iser_conn *iser_conn; in iser_cma_handler() local
685 iser_conn = cma_id->context; in iser_cma_handler()
690 mutex_lock(&iser_conn->state_mutex); in iser_cma_handler()
724 if (iser_conn->state != ISER_CONN_DOWN) { in iser_cma_handler()
725 iser_conn->ib_conn.cma_id = NULL; in iser_cma_handler()
734 mutex_unlock(&iser_conn->state_mutex); in iser_cma_handler()
739 void iser_conn_init(struct iser_conn *iser_conn) in iser_conn_init() argument
741 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_init()
743 iser_conn->state = ISER_CONN_INIT; in iser_conn_init()
744 init_completion(&iser_conn->stop_completion); in iser_conn_init()
745 init_completion(&iser_conn->ib_completion); in iser_conn_init()
746 init_completion(&iser_conn->up_completion); in iser_conn_init()
747 INIT_LIST_HEAD(&iser_conn->conn_list); in iser_conn_init()
748 mutex_init(&iser_conn->state_mutex); in iser_conn_init()
757 int iser_connect(struct iser_conn *iser_conn, struct sockaddr *src_addr, in iser_connect() argument
760 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_connect()
763 mutex_lock(&iser_conn->state_mutex); in iser_connect()
765 sprintf(iser_conn->name, "%pISp", dst_addr); in iser_connect()
767 iser_info("connecting to: %s\n", iser_conn->name); in iser_connect()
772 iser_conn->state = ISER_CONN_PENDING; in iser_connect()
775 iser_conn, RDMA_PS_TCP, IB_QPT_RC); in iser_connect()
789 wait_for_completion_interruptible(&iser_conn->up_completion); in iser_connect()
791 if (iser_conn->state != ISER_CONN_UP) { in iser_connect()
796 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
799 list_add(&iser_conn->conn_list, &ig.connlist); in iser_connect()
806 iser_conn->state = ISER_CONN_DOWN; in iser_connect()
808 mutex_unlock(&iser_conn->state_mutex); in iser_connect()
809 iser_conn_release(iser_conn); in iser_connect()
813 int iser_post_recvl(struct iser_conn *iser_conn) in iser_post_recvl() argument
815 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvl()
816 struct iser_login_desc *desc = &iser_conn->login_desc; in iser_post_recvl()
837 int iser_post_recvm(struct iser_conn *iser_conn, struct iser_rx_desc *rx_desc) in iser_post_recvm() argument
839 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_post_recvm()
946 struct iser_conn *iser_conn = to_iser_conn(wc->qp->qp_context); in iser_err_comp() local
952 if (iser_conn->iscsi_conn) in iser_err_comp()
953 iscsi_conn_failure(iser_conn->iscsi_conn, in iser_err_comp()