Lines Matching refs:isert_conn

51 isert_unmap_cmd(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn);
56 isert_unreg_rdma(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn);
63 isert_rdma_post_recvl(struct isert_conn *isert_conn);
65 isert_rdma_accept(struct isert_conn *isert_conn);
71 isert_prot_cmd(struct isert_conn *conn, struct se_cmd *cmd) in isert_prot_cmd()
81 struct isert_conn *isert_conn = context; in isert_qp_event_callback() local
83 isert_err("conn %p event: %d\n", isert_conn, e->event); in isert_qp_event_callback()
86 rdma_notify(isert_conn->cm_id, IB_EVENT_COMM_EST); in isert_qp_event_callback()
113 isert_comp_get(struct isert_conn *isert_conn) in isert_comp_get() argument
115 struct isert_device *device = isert_conn->device; in isert_comp_get()
129 isert_conn, comp, min); in isert_comp_get()
143 isert_create_qp(struct isert_conn *isert_conn, in isert_create_qp() argument
147 struct isert_device *device = isert_conn->device; in isert_create_qp()
153 attr.qp_context = isert_conn; in isert_create_qp()
166 isert_conn->max_sge = attr.cap.max_send_sge; in isert_create_qp()
184 isert_conn_setup_qp(struct isert_conn *isert_conn, struct rdma_cm_id *cma_id) in isert_conn_setup_qp() argument
189 comp = isert_comp_get(isert_conn); in isert_conn_setup_qp()
190 isert_conn->qp = isert_create_qp(isert_conn, comp, cma_id); in isert_conn_setup_qp()
191 if (IS_ERR(isert_conn->qp)) { in isert_conn_setup_qp()
192 ret = PTR_ERR(isert_conn->qp); in isert_conn_setup_qp()
209 isert_alloc_rx_descriptors(struct isert_conn *isert_conn) in isert_alloc_rx_descriptors() argument
211 struct isert_device *device = isert_conn->device; in isert_alloc_rx_descriptors()
218 isert_conn->rx_descs = kzalloc(ISERT_QP_MAX_RECV_DTOS * in isert_alloc_rx_descriptors()
220 if (!isert_conn->rx_descs) in isert_alloc_rx_descriptors()
223 rx_desc = isert_conn->rx_descs; in isert_alloc_rx_descriptors()
239 isert_conn->rx_desc_head = 0; in isert_alloc_rx_descriptors()
244 rx_desc = isert_conn->rx_descs; in isert_alloc_rx_descriptors()
249 kfree(isert_conn->rx_descs); in isert_alloc_rx_descriptors()
250 isert_conn->rx_descs = NULL; in isert_alloc_rx_descriptors()
252 isert_err("conn %p failed to allocate rx descriptors\n", isert_conn); in isert_alloc_rx_descriptors()
258 isert_free_rx_descriptors(struct isert_conn *isert_conn) in isert_free_rx_descriptors() argument
260 struct ib_device *ib_dev = isert_conn->device->ib_device; in isert_free_rx_descriptors()
264 if (!isert_conn->rx_descs) in isert_free_rx_descriptors()
267 rx_desc = isert_conn->rx_descs; in isert_free_rx_descriptors()
273 kfree(isert_conn->rx_descs); in isert_free_rx_descriptors()
274 isert_conn->rx_descs = NULL; in isert_free_rx_descriptors()
471 isert_conn_free_fastreg_pool(struct isert_conn *isert_conn) in isert_conn_free_fastreg_pool() argument
476 if (list_empty(&isert_conn->fr_pool)) in isert_conn_free_fastreg_pool()
479 isert_info("Freeing conn %p fastreg pool", isert_conn); in isert_conn_free_fastreg_pool()
482 &isert_conn->fr_pool, list) { in isert_conn_free_fastreg_pool()
496 if (i < isert_conn->fr_pool_size) in isert_conn_free_fastreg_pool()
498 isert_conn->fr_pool_size - i); in isert_conn_free_fastreg_pool()
595 isert_conn_create_fastreg_pool(struct isert_conn *isert_conn) in isert_conn_create_fastreg_pool() argument
598 struct isert_device *device = isert_conn->device; in isert_conn_create_fastreg_pool()
599 struct se_session *se_sess = isert_conn->conn->sess->se_sess; in isert_conn_create_fastreg_pool()
609 isert_conn->fr_pool_size = 0; in isert_conn_create_fastreg_pool()
627 list_add_tail(&fr_desc->list, &isert_conn->fr_pool); in isert_conn_create_fastreg_pool()
628 isert_conn->fr_pool_size++; in isert_conn_create_fastreg_pool()
632 isert_conn, isert_conn->fr_pool_size); in isert_conn_create_fastreg_pool()
637 isert_conn_free_fastreg_pool(isert_conn); in isert_conn_create_fastreg_pool()
642 isert_init_conn(struct isert_conn *isert_conn) in isert_init_conn() argument
644 isert_conn->state = ISER_CONN_INIT; in isert_init_conn()
645 INIT_LIST_HEAD(&isert_conn->accept_node); in isert_init_conn()
646 init_completion(&isert_conn->login_comp); in isert_init_conn()
647 init_completion(&isert_conn->login_req_comp); in isert_init_conn()
648 init_completion(&isert_conn->wait); in isert_init_conn()
649 kref_init(&isert_conn->kref); in isert_init_conn()
650 mutex_init(&isert_conn->mutex); in isert_init_conn()
651 spin_lock_init(&isert_conn->pool_lock); in isert_init_conn()
652 INIT_LIST_HEAD(&isert_conn->fr_pool); in isert_init_conn()
653 INIT_WORK(&isert_conn->release_work, isert_release_work); in isert_init_conn()
657 isert_free_login_buf(struct isert_conn *isert_conn) in isert_free_login_buf() argument
659 struct ib_device *ib_dev = isert_conn->device->ib_device; in isert_free_login_buf()
661 ib_dma_unmap_single(ib_dev, isert_conn->login_rsp_dma, in isert_free_login_buf()
663 ib_dma_unmap_single(ib_dev, isert_conn->login_req_dma, in isert_free_login_buf()
666 kfree(isert_conn->login_buf); in isert_free_login_buf()
670 isert_alloc_login_buf(struct isert_conn *isert_conn, in isert_alloc_login_buf() argument
675 isert_conn->login_buf = kzalloc(ISCSI_DEF_MAX_RECV_SEG_LEN + in isert_alloc_login_buf()
677 if (!isert_conn->login_buf) { in isert_alloc_login_buf()
682 isert_conn->login_req_buf = isert_conn->login_buf; in isert_alloc_login_buf()
683 isert_conn->login_rsp_buf = isert_conn->login_buf + in isert_alloc_login_buf()
687 isert_conn->login_buf, isert_conn->login_req_buf, in isert_alloc_login_buf()
688 isert_conn->login_rsp_buf); in isert_alloc_login_buf()
690 isert_conn->login_req_dma = ib_dma_map_single(ib_dev, in isert_alloc_login_buf()
691 (void *)isert_conn->login_req_buf, in isert_alloc_login_buf()
694 ret = ib_dma_mapping_error(ib_dev, isert_conn->login_req_dma); in isert_alloc_login_buf()
697 isert_conn->login_req_dma = 0; in isert_alloc_login_buf()
701 isert_conn->login_rsp_dma = ib_dma_map_single(ib_dev, in isert_alloc_login_buf()
702 (void *)isert_conn->login_rsp_buf, in isert_alloc_login_buf()
705 ret = ib_dma_mapping_error(ib_dev, isert_conn->login_rsp_dma); in isert_alloc_login_buf()
708 isert_conn->login_rsp_dma = 0; in isert_alloc_login_buf()
715 ib_dma_unmap_single(ib_dev, isert_conn->login_req_dma, in isert_alloc_login_buf()
718 kfree(isert_conn->login_buf); in isert_alloc_login_buf()
727 struct isert_conn *isert_conn; in isert_connect_request() local
742 isert_conn = kzalloc(sizeof(struct isert_conn), GFP_KERNEL); in isert_connect_request()
743 if (!isert_conn) in isert_connect_request()
746 isert_init_conn(isert_conn); in isert_connect_request()
747 isert_conn->cm_id = cma_id; in isert_connect_request()
749 ret = isert_alloc_login_buf(isert_conn, cma_id->device); in isert_connect_request()
758 isert_conn->device = device; in isert_connect_request()
761 isert_conn->initiator_depth = min_t(u8, in isert_connect_request()
764 isert_dbg("Using initiator_depth: %u\n", isert_conn->initiator_depth); in isert_connect_request()
766 ret = isert_conn_setup_qp(isert_conn, cma_id); in isert_connect_request()
770 ret = isert_rdma_post_recvl(isert_conn); in isert_connect_request()
774 ret = isert_rdma_accept(isert_conn); in isert_connect_request()
779 list_add_tail(&isert_conn->accept_node, &isert_np->np_accept_list); in isert_connect_request()
789 isert_free_login_buf(isert_conn); in isert_connect_request()
791 kfree(isert_conn); in isert_connect_request()
797 isert_connect_release(struct isert_conn *isert_conn) in isert_connect_release() argument
799 struct isert_device *device = isert_conn->device; in isert_connect_release()
801 isert_dbg("conn %p\n", isert_conn); in isert_connect_release()
806 isert_conn_free_fastreg_pool(isert_conn); in isert_connect_release()
808 isert_free_rx_descriptors(isert_conn); in isert_connect_release()
809 if (isert_conn->cm_id) in isert_connect_release()
810 rdma_destroy_id(isert_conn->cm_id); in isert_connect_release()
812 if (isert_conn->qp) { in isert_connect_release()
813 struct isert_comp *comp = isert_conn->qp->recv_cq->cq_context; in isert_connect_release()
816 ib_destroy_qp(isert_conn->qp); in isert_connect_release()
819 if (isert_conn->login_buf) in isert_connect_release()
820 isert_free_login_buf(isert_conn); in isert_connect_release()
824 kfree(isert_conn); in isert_connect_release()
830 struct isert_conn *isert_conn = cma_id->qp->qp_context; in isert_connected_handler() local
832 isert_info("conn %p\n", isert_conn); in isert_connected_handler()
834 if (!kref_get_unless_zero(&isert_conn->kref)) { in isert_connected_handler()
835 isert_warn("conn %p connect_release is running\n", isert_conn); in isert_connected_handler()
839 mutex_lock(&isert_conn->mutex); in isert_connected_handler()
840 if (isert_conn->state != ISER_CONN_FULL_FEATURE) in isert_connected_handler()
841 isert_conn->state = ISER_CONN_UP; in isert_connected_handler()
842 mutex_unlock(&isert_conn->mutex); in isert_connected_handler()
848 struct isert_conn *isert_conn = container_of(kref, in isert_release_kref() local
849 struct isert_conn, kref); in isert_release_kref()
851 isert_info("conn %p final kref %s/%d\n", isert_conn, current->comm, in isert_release_kref()
854 isert_connect_release(isert_conn); in isert_release_kref()
858 isert_put_conn(struct isert_conn *isert_conn) in isert_put_conn() argument
860 kref_put(&isert_conn->kref, isert_release_kref); in isert_put_conn()
876 isert_conn_terminate(struct isert_conn *isert_conn) in isert_conn_terminate() argument
880 switch (isert_conn->state) { in isert_conn_terminate()
887 isert_conn, isert_conn->state); in isert_conn_terminate()
888 isert_conn->state = ISER_CONN_TERMINATING; in isert_conn_terminate()
889 err = rdma_disconnect(isert_conn->cm_id); in isert_conn_terminate()
892 isert_conn); in isert_conn_terminate()
896 isert_conn, isert_conn->state); in isert_conn_terminate()
931 struct isert_conn *isert_conn = cma_id->qp->qp_context; in isert_disconnected_handler() local
934 mutex_lock(&isert_conn->mutex); in isert_disconnected_handler()
935 terminating = (isert_conn->state == ISER_CONN_TERMINATING); in isert_disconnected_handler()
936 isert_conn_terminate(isert_conn); in isert_disconnected_handler()
937 mutex_unlock(&isert_conn->mutex); in isert_disconnected_handler()
939 isert_info("conn %p completing wait\n", isert_conn); in isert_disconnected_handler()
940 complete(&isert_conn->wait); in isert_disconnected_handler()
946 if (!list_empty(&isert_conn->accept_node)) { in isert_disconnected_handler()
947 list_del_init(&isert_conn->accept_node); in isert_disconnected_handler()
948 isert_put_conn(isert_conn); in isert_disconnected_handler()
949 queue_work(isert_release_wq, &isert_conn->release_work); in isert_disconnected_handler()
960 struct isert_conn *isert_conn = cma_id->qp->qp_context; in isert_connect_error() local
962 isert_conn->cm_id = NULL; in isert_connect_error()
963 isert_put_conn(isert_conn); in isert_connect_error()
1009 isert_post_recv(struct isert_conn *isert_conn, u32 count) in isert_post_recv() argument
1013 unsigned int rx_head = isert_conn->rx_desc_head; in isert_post_recv()
1016 for (rx_wr = isert_conn->rx_wr, i = 0; i < count; i++, rx_wr++) { in isert_post_recv()
1017 rx_desc = &isert_conn->rx_descs[rx_head]; in isert_post_recv()
1028 isert_conn->post_recv_buf_count += count; in isert_post_recv()
1029 ret = ib_post_recv(isert_conn->qp, isert_conn->rx_wr, in isert_post_recv()
1033 isert_conn->post_recv_buf_count -= count; in isert_post_recv()
1036 isert_conn->rx_desc_head = rx_head; in isert_post_recv()
1042 isert_post_send(struct isert_conn *isert_conn, struct iser_tx_desc *tx_desc) in isert_post_send() argument
1044 struct ib_device *ib_dev = isert_conn->cm_id->device; in isert_post_send()
1058 ret = ib_post_send(isert_conn->qp, &send_wr, &send_wr_failed); in isert_post_send()
1066 isert_create_send_desc(struct isert_conn *isert_conn, in isert_create_send_desc() argument
1070 struct isert_device *device = isert_conn->device; in isert_create_send_desc()
1089 isert_init_tx_hdrs(struct isert_conn *isert_conn, in isert_init_tx_hdrs() argument
1092 struct isert_device *device = isert_conn->device; in isert_init_tx_hdrs()
1116 isert_init_send_wr(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd, in isert_init_send_wr() argument
1130 isert_rdma_post_recvl(struct isert_conn *isert_conn) in isert_rdma_post_recvl() argument
1137 sge.addr = isert_conn->login_req_dma; in isert_rdma_post_recvl()
1139 sge.lkey = isert_conn->device->mr->lkey; in isert_rdma_post_recvl()
1145 rx_wr.wr_id = (uintptr_t)isert_conn->login_req_buf; in isert_rdma_post_recvl()
1149 isert_conn->post_recv_buf_count++; in isert_rdma_post_recvl()
1150 ret = ib_post_recv(isert_conn->qp, &rx_wr, &rx_wr_fail); in isert_rdma_post_recvl()
1153 isert_conn->post_recv_buf_count--; in isert_rdma_post_recvl()
1163 struct isert_conn *isert_conn = conn->context; in isert_put_login_tx() local
1164 struct isert_device *device = isert_conn->device; in isert_put_login_tx()
1166 struct iser_tx_desc *tx_desc = &isert_conn->login_tx_desc; in isert_put_login_tx()
1169 isert_create_send_desc(isert_conn, NULL, tx_desc); in isert_put_login_tx()
1174 isert_init_tx_hdrs(isert_conn, tx_desc); in isert_put_login_tx()
1179 ib_dma_sync_single_for_cpu(ib_dev, isert_conn->login_rsp_dma, in isert_put_login_tx()
1182 memcpy(isert_conn->login_rsp_buf, login->rsp_buf, length); in isert_put_login_tx()
1184 ib_dma_sync_single_for_device(ib_dev, isert_conn->login_rsp_dma, in isert_put_login_tx()
1187 tx_dsg->addr = isert_conn->login_rsp_dma; in isert_put_login_tx()
1189 tx_dsg->lkey = isert_conn->device->mr->lkey; in isert_put_login_tx()
1195 isert_conn->device->use_fastreg) { in isert_put_login_tx()
1196 ret = isert_conn_create_fastreg_pool(isert_conn); in isert_put_login_tx()
1199 " fastreg pool\n", isert_conn); in isert_put_login_tx()
1204 ret = isert_alloc_rx_descriptors(isert_conn); in isert_put_login_tx()
1208 ret = isert_post_recv(isert_conn, ISERT_MIN_POSTED_RX); in isert_put_login_tx()
1213 mutex_lock(&isert_conn->mutex); in isert_put_login_tx()
1214 isert_conn->state = ISER_CONN_FULL_FEATURE; in isert_put_login_tx()
1215 mutex_unlock(&isert_conn->mutex); in isert_put_login_tx()
1219 ret = isert_rdma_post_recvl(isert_conn); in isert_put_login_tx()
1224 ret = isert_post_send(isert_conn, tx_desc); in isert_put_login_tx()
1232 isert_rx_login_req(struct isert_conn *isert_conn) in isert_rx_login_req() argument
1234 struct iser_rx_desc *rx_desc = (void *)isert_conn->login_req_buf; in isert_rx_login_req()
1235 int rx_buflen = isert_conn->login_req_len; in isert_rx_login_req()
1236 struct iscsi_conn *conn = isert_conn->conn; in isert_rx_login_req()
1240 isert_info("conn %p\n", isert_conn); in isert_rx_login_req()
1274 complete(&isert_conn->login_comp); in isert_rx_login_req()
1283 struct isert_conn *isert_conn = conn->context; in isert_allocate_cmd() local
1293 isert_cmd->conn = isert_conn; in isert_allocate_cmd()
1300 isert_handle_scsi_cmd(struct isert_conn *isert_conn, in isert_handle_scsi_cmd() argument
1304 struct iscsi_conn *conn = isert_conn->conn; in isert_handle_scsi_cmd()
1358 isert_handle_iscsi_dataout(struct isert_conn *isert_conn, in isert_handle_iscsi_dataout() argument
1362 struct iscsi_conn *conn = isert_conn->conn; in isert_handle_iscsi_dataout()
1414 isert_handle_nop_out(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd, in isert_handle_nop_out() argument
1418 struct iscsi_conn *conn = isert_conn->conn; in isert_handle_nop_out()
1433 isert_handle_text_cmd(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd, in isert_handle_text_cmd() argument
1437 struct iscsi_conn *conn = isert_conn->conn; in isert_handle_text_cmd()
1462 isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc, in isert_rx_opcode() argument
1467 struct iscsi_conn *conn = isert_conn->conn; in isert_rx_opcode()
1492 ret = isert_handle_scsi_cmd(isert_conn, isert_cmd, cmd, in isert_rx_opcode()
1501 ret = isert_handle_nop_out(isert_conn, isert_cmd, cmd, in isert_rx_opcode()
1505 ret = isert_handle_iscsi_dataout(isert_conn, rx_desc, in isert_rx_opcode()
1535 ret = isert_handle_text_cmd(isert_conn, isert_cmd, cmd, in isert_rx_opcode()
1548 isert_rx_do_work(struct iser_rx_desc *rx_desc, struct isert_conn *isert_conn) in isert_rx_do_work() argument
1580 rc = isert_rx_opcode(isert_conn, rx_desc, in isert_rx_do_work()
1586 struct isert_conn *isert_conn, in isert_rcv_completion() argument
1589 struct ib_device *ib_dev = isert_conn->cm_id->device; in isert_rcv_completion()
1594 if ((char *)desc == isert_conn->login_req_buf) { in isert_rcv_completion()
1595 rx_dma = isert_conn->login_req_dma; in isert_rcv_completion()
1613 if ((char *)desc == isert_conn->login_req_buf) { in isert_rcv_completion()
1614 isert_conn->login_req_len = xfer_len - ISER_HEADERS_LEN; in isert_rcv_completion()
1615 if (isert_conn->conn) { in isert_rcv_completion()
1616 struct iscsi_login *login = isert_conn->conn->conn_login; in isert_rcv_completion()
1619 isert_rx_login_req(isert_conn); in isert_rcv_completion()
1621 mutex_lock(&isert_conn->mutex); in isert_rcv_completion()
1622 complete(&isert_conn->login_req_comp); in isert_rcv_completion()
1623 mutex_unlock(&isert_conn->mutex); in isert_rcv_completion()
1625 isert_rx_do_work(desc, isert_conn); in isert_rcv_completion()
1631 isert_conn->post_recv_buf_count--; in isert_rcv_completion()
1633 isert_conn->post_recv_buf_count); in isert_rcv_completion()
1635 if ((char *)desc == isert_conn->login_req_buf) in isert_rcv_completion()
1638 outstanding = isert_conn->post_recv_buf_count; in isert_rcv_completion()
1642 err = isert_post_recv(isert_conn, count); in isert_rcv_completion()
1651 isert_map_data_buf(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd, in isert_map_data_buf() argument
1655 struct ib_device *ib_dev = isert_conn->cm_id->device; in isert_map_data_buf()
1684 isert_unmap_data_buf(struct isert_conn *isert_conn, struct isert_data_buf *data) in isert_unmap_data_buf() argument
1686 struct ib_device *ib_dev = isert_conn->cm_id->device; in isert_unmap_data_buf()
1695 isert_unmap_cmd(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn) in isert_unmap_cmd() argument
1703 isert_unmap_data_buf(isert_conn, &wr->data); in isert_unmap_cmd()
1720 isert_unreg_rdma(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn) in isert_unreg_rdma() argument
1729 isert_unmap_data_buf(isert_conn, &wr->prot); in isert_unreg_rdma()
1732 spin_lock_bh(&isert_conn->pool_lock); in isert_unreg_rdma()
1733 list_add_tail(&wr->fr_desc->list, &isert_conn->fr_pool); in isert_unreg_rdma()
1734 spin_unlock_bh(&isert_conn->pool_lock); in isert_unreg_rdma()
1740 isert_unmap_data_buf(isert_conn, &wr->data); in isert_unreg_rdma()
1751 struct isert_conn *isert_conn = isert_cmd->conn; in isert_put_cmd() local
1752 struct iscsi_conn *conn = isert_conn->conn; in isert_put_cmd()
1753 struct isert_device *device = isert_conn->device; in isert_put_cmd()
1781 device->unreg_rdma_mem(isert_cmd, isert_conn); in isert_put_cmd()
1902 struct isert_conn *isert_conn = isert_cmd->conn; in isert_completion_rdma_write() local
1903 struct isert_device *device = isert_conn->device; in isert_completion_rdma_write()
1912 device->unreg_rdma_mem(isert_cmd, isert_conn); in isert_completion_rdma_write()
1918 isert_put_response(isert_conn->conn, cmd); in isert_completion_rdma_write()
1928 struct isert_conn *isert_conn = isert_cmd->conn; in isert_completion_rdma_read() local
1929 struct isert_device *device = isert_conn->device; in isert_completion_rdma_read()
1939 device->unreg_rdma_mem(isert_cmd, isert_conn); in isert_completion_rdma_read()
1963 struct isert_conn *isert_conn = isert_cmd->conn; in isert_do_control_comp() local
1964 struct ib_device *ib_dev = isert_conn->cm_id->device; in isert_do_control_comp()
1991 struct isert_conn *isert_conn, in isert_response_completion() argument
2013 struct isert_conn *isert_conn) in isert_snd_completion() argument
2015 struct ib_device *ib_dev = isert_conn->cm_id->device; in isert_snd_completion()
2030 isert_conn, ib_dev); in isert_snd_completion()
2057 is_isert_tx_desc(struct isert_conn *isert_conn, void *wr_id) in is_isert_tx_desc() argument
2059 void *start = isert_conn->rx_descs; in is_isert_tx_desc()
2060 int len = ISERT_QP_MAX_RECV_DTOS * sizeof(*isert_conn->rx_descs); in is_isert_tx_desc()
2063 (wr_id == isert_conn->login_req_buf)) in is_isert_tx_desc()
2070 isert_cq_comp_err(struct isert_conn *isert_conn, struct ib_wc *wc) in isert_cq_comp_err() argument
2074 isert_conn); in isert_cq_comp_err()
2075 complete(&isert_conn->wait_comp_err); in isert_cq_comp_err()
2076 } else if (is_isert_tx_desc(isert_conn, (void *)(uintptr_t)wc->wr_id)) { in isert_cq_comp_err()
2077 struct ib_device *ib_dev = isert_conn->cm_id->device; in isert_cq_comp_err()
2088 isert_conn->post_recv_buf_count--; in isert_cq_comp_err()
2089 if (!isert_conn->post_recv_buf_count && in isert_cq_comp_err()
2090 isert_conn->state >= ISER_CONN_BOUND) in isert_cq_comp_err()
2091 iscsit_cause_connection_reinstatement(isert_conn->conn, 0); in isert_cq_comp_err()
2098 struct isert_conn *isert_conn; in isert_handle_wc() local
2102 isert_conn = wc->qp->qp_context; in isert_handle_wc()
2106 isert_rcv_completion(rx_desc, isert_conn, wc->byte_len); in isert_handle_wc()
2109 isert_snd_completion(tx_desc, isert_conn); in isert_handle_wc()
2119 isert_cq_comp_err(isert_conn, wc); in isert_handle_wc()
2153 isert_post_response(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd) in isert_post_response() argument
2158 ret = ib_post_send(isert_conn->qp, &isert_cmd->tx_desc.send_wr, in isert_post_response()
2171 struct isert_conn *isert_conn = conn->context; in isert_put_response() local
2176 isert_create_send_desc(isert_conn, isert_cmd, &isert_cmd->tx_desc); in isert_put_response()
2178 isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); in isert_put_response()
2185 struct isert_device *device = isert_conn->device; in isert_put_response()
2209 isert_init_send_wr(isert_conn, isert_cmd, send_wr); in isert_put_response()
2213 return isert_post_response(isert_conn, isert_cmd); in isert_put_response()
2220 struct isert_conn *isert_conn = conn->context; in isert_aborted_task() local
2221 struct isert_device *device = isert_conn->device; in isert_aborted_task()
2231 device->unreg_rdma_mem(isert_cmd, isert_conn); in isert_aborted_task()
2237 struct isert_conn *isert_conn = conn->context; in isert_get_sup_prot_ops() local
2238 struct isert_device *device = isert_conn->device; in isert_get_sup_prot_ops()
2242 isert_info("conn %p PI offload enabled\n", isert_conn); in isert_get_sup_prot_ops()
2243 isert_conn->pi_support = true; in isert_get_sup_prot_ops()
2248 isert_info("conn %p PI offload disabled\n", isert_conn); in isert_get_sup_prot_ops()
2249 isert_conn->pi_support = false; in isert_get_sup_prot_ops()
2259 struct isert_conn *isert_conn = conn->context; in isert_put_nopin() local
2262 isert_create_send_desc(isert_conn, isert_cmd, &isert_cmd->tx_desc); in isert_put_nopin()
2266 isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); in isert_put_nopin()
2267 isert_init_send_wr(isert_conn, isert_cmd, send_wr); in isert_put_nopin()
2269 isert_dbg("conn %p Posting NOPIN Response\n", isert_conn); in isert_put_nopin()
2271 return isert_post_response(isert_conn, isert_cmd); in isert_put_nopin()
2278 struct isert_conn *isert_conn = conn->context; in isert_put_logout_rsp() local
2281 isert_create_send_desc(isert_conn, isert_cmd, &isert_cmd->tx_desc); in isert_put_logout_rsp()
2284 isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); in isert_put_logout_rsp()
2285 isert_init_send_wr(isert_conn, isert_cmd, send_wr); in isert_put_logout_rsp()
2287 isert_dbg("conn %p Posting Logout Response\n", isert_conn); in isert_put_logout_rsp()
2289 return isert_post_response(isert_conn, isert_cmd); in isert_put_logout_rsp()
2296 struct isert_conn *isert_conn = conn->context; in isert_put_tm_rsp() local
2299 isert_create_send_desc(isert_conn, isert_cmd, &isert_cmd->tx_desc); in isert_put_tm_rsp()
2302 isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); in isert_put_tm_rsp()
2303 isert_init_send_wr(isert_conn, isert_cmd, send_wr); in isert_put_tm_rsp()
2305 isert_dbg("conn %p Posting Task Management Response\n", isert_conn); in isert_put_tm_rsp()
2307 return isert_post_response(isert_conn, isert_cmd); in isert_put_tm_rsp()
2314 struct isert_conn *isert_conn = conn->context; in isert_put_reject() local
2316 struct isert_device *device = isert_conn->device; in isert_put_reject()
2322 isert_create_send_desc(isert_conn, isert_cmd, &isert_cmd->tx_desc); in isert_put_reject()
2324 isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); in isert_put_reject()
2336 isert_init_send_wr(isert_conn, isert_cmd, send_wr); in isert_put_reject()
2338 isert_dbg("conn %p Posting Reject\n", isert_conn); in isert_put_reject()
2340 return isert_post_response(isert_conn, isert_cmd); in isert_put_reject()
2347 struct isert_conn *isert_conn = conn->context; in isert_put_text_rsp() local
2354 isert_create_send_desc(isert_conn, isert_cmd, &isert_cmd->tx_desc); in isert_put_text_rsp()
2360 isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); in isert_put_text_rsp()
2363 struct isert_device *device = isert_conn->device; in isert_put_text_rsp()
2377 isert_init_send_wr(isert_conn, isert_cmd, send_wr); in isert_put_text_rsp()
2379 isert_dbg("conn %p Text Response\n", isert_conn); in isert_put_text_rsp()
2381 return isert_post_response(isert_conn, isert_cmd); in isert_put_text_rsp()
2385 isert_build_rdma_wr(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd, in isert_build_rdma_wr() argument
2391 struct isert_device *device = isert_conn->device; in isert_build_rdma_wr()
2398 sg_nents = min(cmd->se_cmd.t_data_nents - sg_off, isert_conn->max_sge); in isert_build_rdma_wr()
2440 struct isert_conn *isert_conn = conn->context; in isert_map_rdma() local
2450 ret = isert_map_data_buf(isert_conn, isert_cmd, se_cmd->t_data_sg, in isert_map_rdma()
2467 wr->send_wr_num = DIV_ROUND_UP(data->nents, isert_conn->max_sge); in isert_map_rdma()
2477 rdma_write_max = isert_conn->max_sge * PAGE_SIZE; in isert_map_rdma()
2502 ib_sge_cnt = isert_build_rdma_wr(isert_conn, isert_cmd, ib_sge, in isert_map_rdma()
2513 isert_unmap_data_buf(isert_conn, data); in isert_map_rdma()
2573 isert_fast_reg_mr(struct isert_conn *isert_conn, in isert_fast_reg_mr() argument
2579 struct isert_device *device = isert_conn->device; in isert_fast_reg_mr()
2637 ret = ib_post_send(isert_conn->qp, wr, &bad_wr); in isert_fast_reg_mr()
2711 isert_reg_sig_mr(struct isert_conn *isert_conn, in isert_reg_sig_mr() argument
2750 ret = ib_post_send(isert_conn->qp, wr, &bad_wr); in isert_reg_sig_mr()
2776 isert_handle_prot_cmd(struct isert_conn *isert_conn, in isert_handle_prot_cmd() argument
2780 struct isert_device *device = isert_conn->device; in isert_handle_prot_cmd()
2790 isert_conn); in isert_handle_prot_cmd()
2796 ret = isert_map_data_buf(isert_conn, isert_cmd, in isert_handle_prot_cmd()
2803 isert_conn); in isert_handle_prot_cmd()
2808 ret = isert_fast_reg_mr(isert_conn, wr->fr_desc, &wr->prot, in isert_handle_prot_cmd()
2812 isert_conn); in isert_handle_prot_cmd()
2817 ret = isert_reg_sig_mr(isert_conn, se_cmd, wr, wr->fr_desc); in isert_handle_prot_cmd()
2820 isert_conn); in isert_handle_prot_cmd()
2829 isert_unmap_data_buf(isert_conn, &wr->prot); in isert_handle_prot_cmd()
2840 struct isert_conn *isert_conn = conn->context; in isert_reg_rdma() local
2851 ret = isert_map_data_buf(isert_conn, isert_cmd, se_cmd->t_data_sg, in isert_reg_rdma()
2857 if (wr->data.dma_nents != 1 || isert_prot_cmd(isert_conn, se_cmd)) { in isert_reg_rdma()
2858 spin_lock_irqsave(&isert_conn->pool_lock, flags); in isert_reg_rdma()
2859 fr_desc = list_first_entry(&isert_conn->fr_pool, in isert_reg_rdma()
2862 spin_unlock_irqrestore(&isert_conn->pool_lock, flags); in isert_reg_rdma()
2866 ret = isert_fast_reg_mr(isert_conn, fr_desc, &wr->data, in isert_reg_rdma()
2871 if (isert_prot_cmd(isert_conn, se_cmd)) { in isert_reg_rdma()
2872 ret = isert_handle_prot_cmd(isert_conn, isert_cmd, wr); in isert_reg_rdma()
2896 send_wr->send_flags = !isert_prot_cmd(isert_conn, se_cmd) ? in isert_reg_rdma()
2909 spin_lock_irqsave(&isert_conn->pool_lock, flags); in isert_reg_rdma()
2910 list_add_tail(&fr_desc->list, &isert_conn->fr_pool); in isert_reg_rdma()
2911 spin_unlock_irqrestore(&isert_conn->pool_lock, flags); in isert_reg_rdma()
2913 isert_unmap_data_buf(isert_conn, &wr->data); in isert_reg_rdma()
2924 struct isert_conn *isert_conn = conn->context; in isert_put_datain() local
2925 struct isert_device *device = isert_conn->device; in isert_put_datain()
2939 if (!isert_prot_cmd(isert_conn, se_cmd)) { in isert_put_datain()
2943 isert_create_send_desc(isert_conn, isert_cmd, in isert_put_datain()
2947 isert_init_tx_hdrs(isert_conn, &isert_cmd->tx_desc); in isert_put_datain()
2948 isert_init_send_wr(isert_conn, isert_cmd, in isert_put_datain()
2954 rc = ib_post_send(isert_conn->qp, wr->send_wr, &wr_failed); in isert_put_datain()
2958 if (!isert_prot_cmd(isert_conn, se_cmd)) in isert_put_datain()
2974 struct isert_conn *isert_conn = conn->context; in isert_get_dataout() local
2975 struct isert_device *device = isert_conn->device; in isert_get_dataout()
2988 rc = ib_post_send(isert_conn->qp, wr->send_wr, &wr_failed); in isert_get_dataout()
3026 struct isert_conn *isert_conn = conn->context; in isert_response_queue() local
3033 isert_conn->logout_posted = true; in isert_response_queue()
3146 isert_rdma_accept(struct isert_conn *isert_conn) in isert_rdma_accept() argument
3148 struct rdma_cm_id *cm_id = isert_conn->cm_id; in isert_rdma_accept()
3153 cp.initiator_depth = isert_conn->initiator_depth; in isert_rdma_accept()
3169 struct isert_conn *isert_conn = conn->context; in isert_get_login_rx() local
3172 isert_info("before login_req comp conn: %p\n", isert_conn); in isert_get_login_rx()
3173 ret = wait_for_completion_interruptible(&isert_conn->login_req_comp); in isert_get_login_rx()
3176 isert_conn); in isert_get_login_rx()
3179 reinit_completion(&isert_conn->login_req_comp); in isert_get_login_rx()
3190 isert_rx_login_req(isert_conn); in isert_get_login_rx()
3193 ret = wait_for_completion_interruptible(&isert_conn->login_comp); in isert_get_login_rx()
3204 struct isert_conn *isert_conn) in isert_set_conn_info() argument
3206 struct rdma_cm_id *cm_id = isert_conn->cm_id; in isert_set_conn_info()
3240 struct isert_conn *isert_conn; in isert_accept_np() local
3266 isert_conn = list_first_entry(&isert_np->np_accept_list, in isert_accept_np()
3267 struct isert_conn, accept_node); in isert_accept_np()
3268 list_del_init(&isert_conn->accept_node); in isert_accept_np()
3271 conn->context = isert_conn; in isert_accept_np()
3272 isert_conn->conn = conn; in isert_accept_np()
3273 isert_conn->state = ISER_CONN_BOUND; in isert_accept_np()
3275 isert_set_conn_info(np, conn, isert_conn); in isert_accept_np()
3277 isert_dbg("Processing isert_conn: %p\n", isert_conn); in isert_accept_np()
3286 struct isert_conn *isert_conn, *n; in isert_free_np() local
3301 list_for_each_entry_safe(isert_conn, n, in isert_free_np()
3305 isert_conn, isert_conn->state); in isert_free_np()
3306 isert_connect_release(isert_conn); in isert_free_np()
3317 struct isert_conn *isert_conn = container_of(work, in isert_release_work() local
3318 struct isert_conn, in isert_release_work()
3321 isert_info("Starting release conn %p\n", isert_conn); in isert_release_work()
3323 wait_for_completion(&isert_conn->wait); in isert_release_work()
3325 mutex_lock(&isert_conn->mutex); in isert_release_work()
3326 isert_conn->state = ISER_CONN_DOWN; in isert_release_work()
3327 mutex_unlock(&isert_conn->mutex); in isert_release_work()
3329 isert_info("Destroying conn %p\n", isert_conn); in isert_release_work()
3330 isert_put_conn(isert_conn); in isert_release_work()
3334 isert_wait4logout(struct isert_conn *isert_conn) in isert_wait4logout() argument
3336 struct iscsi_conn *conn = isert_conn->conn; in isert_wait4logout()
3338 isert_info("conn %p\n", isert_conn); in isert_wait4logout()
3340 if (isert_conn->logout_posted) { in isert_wait4logout()
3341 isert_info("conn %p wait for conn_logout_comp\n", isert_conn); in isert_wait4logout()
3359 isert_wait4flush(struct isert_conn *isert_conn) in isert_wait4flush() argument
3363 isert_info("conn %p\n", isert_conn); in isert_wait4flush()
3365 init_completion(&isert_conn->wait_comp_err); in isert_wait4flush()
3366 isert_conn->beacon.wr_id = ISER_BEACON_WRID; in isert_wait4flush()
3368 if (ib_post_recv(isert_conn->qp, &isert_conn->beacon, &bad_wr)) { in isert_wait4flush()
3369 isert_err("conn %p failed to post beacon", isert_conn); in isert_wait4flush()
3373 wait_for_completion(&isert_conn->wait_comp_err); in isert_wait4flush()
3413 struct isert_conn *isert_conn = conn->context; in isert_wait_conn() local
3415 isert_info("Starting conn %p\n", isert_conn); in isert_wait_conn()
3417 mutex_lock(&isert_conn->mutex); in isert_wait_conn()
3422 if (isert_conn->state == ISER_CONN_INIT) { in isert_wait_conn()
3423 mutex_unlock(&isert_conn->mutex); in isert_wait_conn()
3426 isert_conn_terminate(isert_conn); in isert_wait_conn()
3427 mutex_unlock(&isert_conn->mutex); in isert_wait_conn()
3429 isert_wait4flush(isert_conn); in isert_wait_conn()
3432 isert_wait4logout(isert_conn); in isert_wait_conn()
3434 queue_work(isert_release_wq, &isert_conn->release_work); in isert_wait_conn()
3439 struct isert_conn *isert_conn = conn->context; in isert_free_conn() local
3441 isert_wait4flush(isert_conn); in isert_free_conn()
3442 isert_put_conn(isert_conn); in isert_free_conn()