Lines Matching +full:libiscsi +full:- +full:dev

1 // SPDX-License-Identifier: GPL-2.0-only
11 * linux-drivers@broadcom.com
14 #include <scsi/libiscsi.h>
29 * beiscsi_session_create - creates a new iscsi session
53 beiscsi_ep = ep->dd_data; in beiscsi_session_create()
54 phba = beiscsi_ep->phba; in beiscsi_session_create()
58 "BS_%d : HBA in error 0x%lx\n", phba->state); in beiscsi_session_create()
64 if (cmds_max > beiscsi_ep->phba->params.wrbs_per_cxn) { in beiscsi_session_create()
69 beiscsi_ep->phba->params.wrbs_per_cxn, in beiscsi_session_create()
70 beiscsi_ep->phba->params.wrbs_per_cxn); in beiscsi_session_create()
72 cmds_max = beiscsi_ep->phba->params.wrbs_per_cxn; in beiscsi_session_create()
75 shost = phba->shost; in beiscsi_session_create()
83 sess = cls_session->dd_data; in beiscsi_session_create()
84 beiscsi_sess = sess->dd_data; in beiscsi_session_create()
85 beiscsi_sess->bhs_pool = dma_pool_create("beiscsi_bhs_pool", in beiscsi_session_create()
86 &phba->pcidev->dev, in beiscsi_session_create()
89 if (!beiscsi_sess->bhs_pool) in beiscsi_session_create()
99 * beiscsi_session_destroy - destroys iscsi session
107 struct iscsi_session *sess = cls_session->dd_data; in beiscsi_session_destroy()
108 struct beiscsi_session *beiscsi_sess = sess->dd_data; in beiscsi_session_destroy()
111 dma_pool_destroy(beiscsi_sess->bhs_pool); in beiscsi_session_destroy()
121 iscsi_session_failure(cls_session->dd_data, ISCSI_ERR_CONN_FAILED); in beiscsi_session_fail()
126 * beiscsi_conn_create - create an instance of iscsi connection
152 conn = cls_conn->dd_data; in beiscsi_conn_create()
153 beiscsi_conn = conn->dd_data; in beiscsi_conn_create()
154 beiscsi_conn->ep = NULL; in beiscsi_conn_create()
155 beiscsi_conn->phba = phba; in beiscsi_conn_create()
156 beiscsi_conn->conn = conn; in beiscsi_conn_create()
157 sess = cls_session->dd_data; in beiscsi_conn_create()
158 beiscsi_sess = sess->dd_data; in beiscsi_conn_create()
159 beiscsi_conn->beiscsi_sess = beiscsi_sess; in beiscsi_conn_create()
164 * beiscsi_conn_bind - Binds iscsi session/connection with TCP connection
176 struct iscsi_conn *conn = cls_conn->dd_data; in beiscsi_conn_bind()
177 struct beiscsi_conn *beiscsi_conn = conn->dd_data; in beiscsi_conn_bind()
180 struct hwi_controller *phwi_ctrlr = phba->phwi_ctrlr; in beiscsi_conn_bind()
189 return -EINVAL; in beiscsi_conn_bind()
191 beiscsi_ep = ep->dd_data; in beiscsi_conn_bind()
194 rc = -EINVAL; in beiscsi_conn_bind()
198 if (beiscsi_ep->phba != phba) { in beiscsi_conn_bind()
200 "BS_%d : beiscsi_ep->hba=%p not equal to phba=%p\n", in beiscsi_conn_bind()
201 beiscsi_ep->phba, phba); in beiscsi_conn_bind()
202 rc = -EEXIST; in beiscsi_conn_bind()
205 cri_index = BE_GET_CRI_FROM_CID(beiscsi_ep->ep_cid); in beiscsi_conn_bind()
206 if (phba->conn_table[cri_index]) { in beiscsi_conn_bind()
207 if (beiscsi_conn != phba->conn_table[cri_index] || in beiscsi_conn_bind()
208 beiscsi_ep != phba->conn_table[cri_index]->ep) { in beiscsi_conn_bind()
212 beiscsi_ep->ep_cid, in beiscsi_conn_bind()
214 phba->conn_table[cri_index]); in beiscsi_conn_bind()
215 rc = -EINVAL; in beiscsi_conn_bind()
220 beiscsi_conn->beiscsi_conn_cid = beiscsi_ep->ep_cid; in beiscsi_conn_bind()
221 beiscsi_conn->ep = beiscsi_ep; in beiscsi_conn_bind()
222 beiscsi_ep->conn = beiscsi_conn; in beiscsi_conn_bind()
227 pwrb_context = &phwi_ctrlr->wrb_context[cri_index]; in beiscsi_conn_bind()
228 beiscsi_conn->doorbell_offset = pwrb_context->doorbell_offset; in beiscsi_conn_bind()
230 "BS_%d : cid %d phba->conn_table[%u]=%p\n", in beiscsi_conn_bind()
231 beiscsi_ep->ep_cid, cri_index, beiscsi_conn); in beiscsi_conn_bind()
232 phba->conn_table[cri_index] = beiscsi_conn; in beiscsi_conn_bind()
241 if (phba->ipv4_iface) in beiscsi_iface_create_ipv4()
244 phba->ipv4_iface = iscsi_create_iface(phba->shost, in beiscsi_iface_create_ipv4()
248 if (!phba->ipv4_iface) { in beiscsi_iface_create_ipv4()
252 return -ENODEV; in beiscsi_iface_create_ipv4()
260 if (phba->ipv6_iface) in beiscsi_iface_create_ipv6()
263 phba->ipv6_iface = iscsi_create_iface(phba->shost, in beiscsi_iface_create_ipv6()
267 if (!phba->ipv6_iface) { in beiscsi_iface_create_ipv6()
271 return -ENODEV; in beiscsi_iface_create_ipv6()
294 if (phba->ipv6_iface) { in beiscsi_iface_destroy_default()
295 iscsi_destroy_iface(phba->ipv6_iface); in beiscsi_iface_destroy_default()
296 phba->ipv6_iface = NULL; in beiscsi_iface_destroy_default()
298 if (phba->ipv4_iface) { in beiscsi_iface_destroy_default()
299 iscsi_destroy_iface(phba->ipv4_iface); in beiscsi_iface_destroy_default()
300 phba->ipv4_iface = NULL; in beiscsi_iface_destroy_default()
305 * beiscsi_iface_config_vlan()- Set the VLAN TAG
314 * Failure: Non-Zero Value
321 int ret = -EPERM; in beiscsi_iface_config_vlan()
323 switch (iface_param->param) { in beiscsi_iface_config_vlan()
326 if (iface_param->value[0] != ISCSI_VLAN_ENABLE) in beiscsi_iface_config_vlan()
331 *((uint16_t *)iface_param->value)); in beiscsi_iface_config_vlan()
346 int ret = -EPERM; in beiscsi_iface_config_ipv4()
349 switch (info->param) { in beiscsi_iface_config_ipv4()
351 if (info->value[0] == ISCSI_IFACE_ENABLE) in beiscsi_iface_config_ipv4()
354 iscsi_destroy_iface(phba->ipv4_iface); in beiscsi_iface_config_ipv4()
355 phba->ipv4_iface = NULL; in beiscsi_iface_config_ipv4()
359 gw = info->value; in beiscsi_iface_config_ipv4()
363 if (info->value[0] == ISCSI_BOOTPROTO_DHCP) in beiscsi_iface_config_ipv4()
365 else if (info->value[0] == ISCSI_BOOTPROTO_STATIC) in beiscsi_iface_config_ipv4()
372 info->value[0]); in beiscsi_iface_config_ipv4()
375 ip = info->value; in beiscsi_iface_config_ipv4()
379 subnet = info->value; in beiscsi_iface_config_ipv4()
389 subnet = info->value; in beiscsi_iface_config_ipv4()
393 ip = info->value; in beiscsi_iface_config_ipv4()
409 int ret = -EPERM; in beiscsi_iface_config_ipv6()
411 switch (iface_param->param) { in beiscsi_iface_config_ipv6()
413 if (iface_param->value[0] == ISCSI_IFACE_ENABLE) in beiscsi_iface_config_ipv6()
416 iscsi_destroy_iface(phba->ipv6_iface); in beiscsi_iface_config_ipv6()
417 phba->ipv6_iface = NULL; in beiscsi_iface_config_ipv6()
422 iface_param->value, NULL); in beiscsi_iface_config_ipv6()
440 "BS_%d : HBA in error 0x%lx\n", phba->state); in beiscsi_iface_set_param()
441 return -EBUSY; in beiscsi_iface_set_param()
455 return -EINVAL; in beiscsi_iface_set_param()
459 if (iface_param->param_type != ISCSI_NET_PARAM) in beiscsi_iface_set_param()
465 if (iface_param->iface_num) { in beiscsi_iface_set_param()
469 iface_param->iface_num); in beiscsi_iface_set_param()
471 return -EINVAL; in beiscsi_iface_set_param()
476 (iface_param->iface_type == ISCSI_IFACE_TYPE_IPV4) ? in beiscsi_iface_set_param()
477 "ipv4" : "ipv6", iface_param->param); in beiscsi_iface_set_param()
479 ret = -EPERM; in beiscsi_iface_set_param()
480 switch (iface_param->param) { in beiscsi_iface_set_param()
486 switch (iface_param->iface_type) { in beiscsi_iface_set_param()
500 if (ret == -EPERM) { in beiscsi_iface_set_param()
503 (iface_param->iface_type == in beiscsi_iface_set_param()
505 iface_param->param); in beiscsi_iface_set_param()
522 if (iface->iface_type == ISCSI_IFACE_TYPE_IPV6) in __beiscsi_iface_get_param()
531 len = sprintf(buf, "%pI4\n", if_info->ip_addr.addr); in __beiscsi_iface_get_param()
534 len = sprintf(buf, "%pI6\n", if_info->ip_addr.addr); in __beiscsi_iface_get_param()
537 if (!if_info->dhcp_state) in __beiscsi_iface_get_param()
543 len = sprintf(buf, "%pI4\n", if_info->ip_addr.subnet_mask); in __beiscsi_iface_get_param()
547 (if_info->vlan_priority == BEISCSI_VLAN_DISABLE) ? in __beiscsi_iface_get_param()
551 if (if_info->vlan_priority == BEISCSI_VLAN_DISABLE) in __beiscsi_iface_get_param()
552 len = -EINVAL; in __beiscsi_iface_get_param()
555 (if_info->vlan_priority & in __beiscsi_iface_get_param()
559 if (if_info->vlan_priority == BEISCSI_VLAN_DISABLE) in __beiscsi_iface_get_param()
560 len = -EINVAL; in __beiscsi_iface_get_param()
563 ((if_info->vlan_priority >> 13) & in __beiscsi_iface_get_param()
581 int len = -EPERM; in beiscsi_iface_get_param()
587 "BS_%d : HBA in error 0x%lx\n", phba->state); in beiscsi_iface_get_param()
588 return -EBUSY; in beiscsi_iface_get_param()
602 if (iface->iface_type == ISCSI_IFACE_TYPE_IPV4) in beiscsi_iface_get_param()
604 phba->ipv4_iface ? "enable" : "disable"); in beiscsi_iface_get_param()
605 else if (iface->iface_type == ISCSI_IFACE_TYPE_IPV6) in beiscsi_iface_get_param()
607 phba->ipv6_iface ? "enable" : "disable"); in beiscsi_iface_get_param()
621 * beiscsi_ep_get_param - get the iscsi parameter
631 struct beiscsi_endpoint *beiscsi_ep = ep->dd_data; in beiscsi_ep_get_param()
634 beiscsi_log(beiscsi_ep->phba, KERN_INFO, in beiscsi_ep_get_param()
641 len = sprintf(buf, "%hu\n", beiscsi_ep->dst_tcpport); in beiscsi_ep_get_param()
644 if (beiscsi_ep->ip_type == BEISCSI_IP_TYPE_V4) in beiscsi_ep_get_param()
645 len = sprintf(buf, "%pI4\n", &beiscsi_ep->dst_addr); in beiscsi_ep_get_param()
647 len = sprintf(buf, "%pI6\n", &beiscsi_ep->dst6_addr); in beiscsi_ep_get_param()
650 len = -EPERM; in beiscsi_ep_get_param()
658 struct iscsi_conn *conn = cls_conn->dd_data; in beiscsi_set_param()
659 struct iscsi_session *session = conn->session; in beiscsi_set_param()
663 phba = ((struct beiscsi_conn *)conn->dd_data)->phba; in beiscsi_set_param()
677 if (session->first_burst > 8192) in beiscsi_set_param()
678 session->first_burst = 8192; in beiscsi_set_param()
681 if (conn->max_recv_dlength > 65536) in beiscsi_set_param()
682 conn->max_recv_dlength = 65536; in beiscsi_set_param()
685 if (session->max_burst > 262144) in beiscsi_set_param()
686 session->max_burst = 262144; in beiscsi_set_param()
689 if (conn->max_xmit_dlength > 65536) in beiscsi_set_param()
690 conn->max_xmit_dlength = 65536; in beiscsi_set_param()
700 * beiscsi_get_port_state - Get the Port State
707 struct iscsi_cls_host *ihost = shost->shost_data; in beiscsi_get_port_state()
709 ihost->port_state = test_bit(BEISCSI_HBA_LINK_UP, &phba->state) ? in beiscsi_get_port_state()
714 * beiscsi_get_port_speed - Get the Port Speed from Adapter
721 struct iscsi_cls_host *ihost = shost->shost_data; in beiscsi_get_port_speed()
723 switch (phba->port_speed) { in beiscsi_get_port_speed()
725 ihost->port_speed = ISCSI_PORT_SPEED_10MBPS; in beiscsi_get_port_speed()
728 ihost->port_speed = ISCSI_PORT_SPEED_100MBPS; in beiscsi_get_port_speed()
731 ihost->port_speed = ISCSI_PORT_SPEED_1GBPS; in beiscsi_get_port_speed()
734 ihost->port_speed = ISCSI_PORT_SPEED_10GBPS; in beiscsi_get_port_speed()
737 ihost->port_speed = ISCSI_PORT_SPEED_25GBPS; in beiscsi_get_port_speed()
740 ihost->port_speed = ISCSI_PORT_SPEED_40GBPS; in beiscsi_get_port_speed()
743 ihost->port_speed = ISCSI_PORT_SPEED_UNKNOWN; in beiscsi_get_port_speed()
748 * beiscsi_get_host_param - get the iscsi parameter
762 "BS_%d : HBA in error 0x%lx\n", phba->state); in beiscsi_get_host_param()
808 if (phba->mac_addr_set) in beiscsi_get_macaddr()
809 return sysfs_format_mac(buf, phba->mac_address, ETH_ALEN); in beiscsi_get_macaddr()
816 phba->mac_addr_set = true; in beiscsi_get_macaddr()
817 memcpy(phba->mac_address, resp.mac_address, ETH_ALEN); in beiscsi_get_macaddr()
818 return sysfs_format_mac(buf, phba->mac_address, ETH_ALEN); in beiscsi_get_macaddr()
822 * beiscsi_conn_get_stats - get the iscsi stats
831 struct iscsi_conn *conn = cls_conn->dd_data; in beiscsi_conn_get_stats()
834 phba = ((struct beiscsi_conn *)conn->dd_data)->phba; in beiscsi_conn_get_stats()
838 stats->txdata_octets = conn->txdata_octets; in beiscsi_conn_get_stats()
839 stats->rxdata_octets = conn->rxdata_octets; in beiscsi_conn_get_stats()
840 stats->dataout_pdus = conn->dataout_pdus_cnt; in beiscsi_conn_get_stats()
841 stats->scsirsp_pdus = conn->scsirsp_pdus_cnt; in beiscsi_conn_get_stats()
842 stats->scsicmd_pdus = conn->scsicmd_pdus_cnt; in beiscsi_conn_get_stats()
843 stats->datain_pdus = conn->datain_pdus_cnt; in beiscsi_conn_get_stats()
844 stats->tmfrsp_pdus = conn->tmfrsp_pdus_cnt; in beiscsi_conn_get_stats()
845 stats->tmfcmd_pdus = conn->tmfcmd_pdus_cnt; in beiscsi_conn_get_stats()
846 stats->r2t_pdus = conn->r2t_pdus_cnt; in beiscsi_conn_get_stats()
847 stats->digest_err = 0; in beiscsi_conn_get_stats()
848 stats->timeout_err = 0; in beiscsi_conn_get_stats()
849 stats->custom_length = 1; in beiscsi_conn_get_stats()
850 strcpy(stats->custom[0].desc, "eh_abort_cnt"); in beiscsi_conn_get_stats()
851 stats->custom[0].value = conn->eh_abort_cnt; in beiscsi_conn_get_stats()
855 * beiscsi_set_params_for_offld - get the parameters for offload
862 struct iscsi_conn *conn = beiscsi_conn->conn; in beiscsi_set_params_for_offld()
863 struct iscsi_session *session = conn->session; in beiscsi_set_params_for_offld()
866 params, session->max_burst); in beiscsi_set_params_for_offld()
869 conn->max_xmit_dlength); in beiscsi_set_params_for_offld()
871 params, session->first_burst); in beiscsi_set_params_for_offld()
873 session->erl); in beiscsi_set_params_for_offld()
875 conn->datadgst_en); in beiscsi_set_params_for_offld()
877 conn->hdrdgst_en); in beiscsi_set_params_for_offld()
879 session->initial_r2t_en); in beiscsi_set_params_for_offld()
881 session->imm_data_en); in beiscsi_set_params_for_offld()
884 session->dataseq_inorder_en); in beiscsi_set_params_for_offld()
887 session->pdu_inorder_en); in beiscsi_set_params_for_offld()
889 session->max_r2t); in beiscsi_set_params_for_offld()
891 (conn->exp_statsn - 1)); in beiscsi_set_params_for_offld()
894 conn->max_recv_dlength); in beiscsi_set_params_for_offld()
899 * beiscsi_conn_start - offload of session to chip
904 struct iscsi_conn *conn = cls_conn->dd_data; in beiscsi_conn_start()
905 struct beiscsi_conn *beiscsi_conn = conn->dd_data; in beiscsi_conn_start()
910 phba = ((struct beiscsi_conn *)conn->dd_data)->phba; in beiscsi_conn_start()
914 "BS_%d : HBA in error 0x%lx\n", phba->state); in beiscsi_conn_start()
915 return -EBUSY; in beiscsi_conn_start()
917 beiscsi_log(beiscsi_conn->phba, KERN_INFO, BEISCSI_LOG_CONFIG, in beiscsi_conn_start()
921 beiscsi_ep = beiscsi_conn->ep; in beiscsi_conn_start()
923 beiscsi_log(beiscsi_conn->phba, KERN_ERR, in beiscsi_conn_start()
927 beiscsi_conn->login_in_progress = 0; in beiscsi_conn_start()
935 * beiscsi_get_cid - Allocate a cid
945 cid_avlbl_ulp0 = (phba->cid_array_info[BEISCSI_ULP0]) ? in beiscsi_get_cid()
947 cid_avlbl_ulp1 = (phba->cid_array_info[BEISCSI_ULP1]) ? in beiscsi_get_cid()
956 if (!test_bit(cid_from_ulp, (void *)&phba->fw_config.ulp_supported)) in beiscsi_get_cid()
959 cid_info = phba->cid_array_info[cid_from_ulp]; in beiscsi_get_cid()
960 cid = cid_info->cid_array[cid_info->cid_alloc]; in beiscsi_get_cid()
961 if (!cid_info->avlbl_cids || cid == BE_INVALID_CID) { in beiscsi_get_cid()
964 cid_info->avlbl_cids, cid_info->cid_free); in beiscsi_get_cid()
968 cid_info->cid_array[cid_info->cid_alloc++] = BE_INVALID_CID; in beiscsi_get_cid()
969 if (cid_info->cid_alloc == BEISCSI_GET_CID_COUNT(phba, cid_from_ulp)) in beiscsi_get_cid()
970 cid_info->cid_alloc = 0; in beiscsi_get_cid()
971 cid_info->avlbl_cids--; in beiscsi_get_cid()
976 * beiscsi_put_cid - Free the cid
988 phwi_ctrlr = phba->phwi_ctrlr; in beiscsi_put_cid()
989 pwrb_context = &phwi_ctrlr->wrb_context[cri_index]; in beiscsi_put_cid()
990 cid_post_ulp = pwrb_context->ulp_num; in beiscsi_put_cid()
992 cid_info = phba->cid_array_info[cid_post_ulp]; in beiscsi_put_cid()
994 if (cid_info->cid_array[cid_info->cid_free] != BE_INVALID_CID) { in beiscsi_put_cid()
997 cid, cid_info->avlbl_cids, cid_info->cid_free); in beiscsi_put_cid()
1000 cid_info->cid_array[cid_info->cid_free++] = cid; in beiscsi_put_cid()
1001 if (cid_info->cid_free == BEISCSI_GET_CID_COUNT(phba, cid_post_ulp)) in beiscsi_put_cid()
1002 cid_info->cid_free = 0; in beiscsi_put_cid()
1003 cid_info->avlbl_cids++; in beiscsi_put_cid()
1007 * beiscsi_free_ep - free endpoint
1012 struct beiscsi_hba *phba = beiscsi_ep->phba; in beiscsi_free_ep()
1015 beiscsi_put_cid(phba, beiscsi_ep->ep_cid); in beiscsi_free_ep()
1016 beiscsi_ep->phba = NULL; in beiscsi_free_ep()
1018 phba->ep_array[BE_GET_CRI_FROM_CID(beiscsi_ep->ep_cid)] = NULL; in beiscsi_free_ep()
1025 if (!beiscsi_ep->conn) in beiscsi_free_ep()
1028 beiscsi_conn = beiscsi_ep->conn; in beiscsi_free_ep()
1030 * Break ep->conn link here so that completions after in beiscsi_free_ep()
1033 beiscsi_ep->conn = NULL; in beiscsi_free_ep()
1034 if (beiscsi_conn->login_in_progress) { in beiscsi_free_ep()
1036 beiscsi_conn->task); in beiscsi_free_ep()
1037 beiscsi_conn->login_in_progress = 0; in beiscsi_free_ep()
1042 * beiscsi_open_conn - Ask FW to open a TCP connection
1046 * @non_blocking: blocking or non-blocking call
1054 struct beiscsi_endpoint *beiscsi_ep = ep->dd_data; in beiscsi_open_conn()
1055 struct beiscsi_hba *phba = beiscsi_ep->phba; in beiscsi_open_conn()
1059 int ret = -ENOMEM; in beiscsi_open_conn()
1064 beiscsi_ep->ep_cid = beiscsi_get_cid(phba); in beiscsi_open_conn()
1065 if (beiscsi_ep->ep_cid == BE_INVALID_CID) { in beiscsi_open_conn()
1073 beiscsi_ep->ep_cid); in beiscsi_open_conn()
1075 phba->ep_array[BE_GET_CRI_FROM_CID in beiscsi_open_conn()
1076 (beiscsi_ep->ep_cid)] = ep; in beiscsi_open_conn()
1078 beiscsi_ep->cid_vld = 0; in beiscsi_open_conn()
1085 nonemb_cmd.va = dma_alloc_coherent(&phba->ctrl.pdev->dev, in beiscsi_open_conn()
1095 return -ENOMEM; in beiscsi_open_conn()
1103 beiscsi_ep->ep_cid); in beiscsi_open_conn()
1105 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_open_conn()
1108 return -EAGAIN; in beiscsi_open_conn()
1117 if (ret != -EBUSY) in beiscsi_open_conn()
1118 dma_free_coherent(&phba->ctrl.pdev->dev, in beiscsi_open_conn()
1127 beiscsi_ep = ep->dd_data; in beiscsi_open_conn()
1128 beiscsi_ep->fw_handle = ptcpcnct_out->connection_handle; in beiscsi_open_conn()
1129 beiscsi_ep->cid_vld = 1; in beiscsi_open_conn()
1133 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_open_conn()
1139 * beiscsi_ep_connect - Ask chip to create TCP Conn
1142 * @non_blocking: blocking or non-blocking call
1156 ret = -ENXIO; in beiscsi_ep_connect()
1163 ret = -EIO; in beiscsi_ep_connect()
1165 "BS_%d : HBA in error 0x%lx\n", phba->state); in beiscsi_ep_connect()
1168 if (!test_bit(BEISCSI_HBA_LINK_UP, &phba->state)) { in beiscsi_ep_connect()
1169 ret = -EBUSY; in beiscsi_ep_connect()
1177 ret = -ENOMEM; in beiscsi_ep_connect()
1181 beiscsi_ep = ep->dd_data; in beiscsi_ep_connect()
1182 beiscsi_ep->phba = phba; in beiscsi_ep_connect()
1183 beiscsi_ep->openiscsi_ep = ep; in beiscsi_ep_connect()
1199 * beiscsi_ep_poll - Poll to see if connection is established
1207 struct beiscsi_endpoint *beiscsi_ep = ep->dd_data; in beiscsi_ep_poll()
1209 beiscsi_log(beiscsi_ep->phba, KERN_INFO, BEISCSI_LOG_CONFIG, in beiscsi_ep_poll()
1212 if (beiscsi_ep->cid_vld == 1) in beiscsi_ep_poll()
1219 * beiscsi_flush_cq()- Flush the CQ created.
1232 phwi_ctrlr = phba->phwi_ctrlr; in beiscsi_flush_cq()
1233 phwi_context = phwi_ctrlr->phwi_ctxt; in beiscsi_flush_cq()
1235 for (i = 0; i < phba->num_cpus; i++) { in beiscsi_flush_cq()
1236 pbe_eq = &phwi_context->be_eq[i]; in beiscsi_flush_cq()
1237 irq_poll_disable(&pbe_eq->iopoll); in beiscsi_flush_cq()
1239 irq_poll_enable(&pbe_eq->iopoll); in beiscsi_flush_cq()
1244 * beiscsi_conn_close - Invalidate and upload connection
1247 * Returns 0 on success, -1 on failure.
1251 struct beiscsi_hba *phba = beiscsi_ep->phba; in beiscsi_conn_close()
1268 beiscsi_ep->ep_cid); in beiscsi_conn_close()
1278 return -1; in beiscsi_conn_close()
1289 beiscsi_ep->ep_cid); in beiscsi_conn_close()
1293 return -1; in beiscsi_conn_close()
1299 * beiscsi_ep_disconnect - Tears down the TCP connection
1310 beiscsi_ep = ep->dd_data; in beiscsi_ep_disconnect()
1311 phba = beiscsi_ep->phba; in beiscsi_ep_disconnect()
1314 beiscsi_ep->ep_cid); in beiscsi_ep_disconnect()
1316 cri_index = BE_GET_CRI_FROM_CID(beiscsi_ep->ep_cid); in beiscsi_ep_disconnect()
1317 if (!phba->ep_array[cri_index]) { in beiscsi_ep_disconnect()
1321 beiscsi_ep->ep_cid); in beiscsi_ep_disconnect()
1327 "BS_%d : HBA in error 0x%lx\n", phba->state); in beiscsi_ep_disconnect()
1336 beiscsi_ep->ep_cid); in beiscsi_ep_disconnect()
1340 if (!phba->conn_table[cri_index]) in beiscsi_ep_disconnect()
1343 cri_index, beiscsi_ep->ep_cid); in beiscsi_ep_disconnect()
1344 phba->conn_table[cri_index] = NULL; in beiscsi_ep_disconnect()
1345 iscsi_destroy_endpoint(beiscsi_ep->openiscsi_ep); in beiscsi_ep_disconnect()