Lines Matching +full:ctrl +full:- +full:len
16 * OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH
22 * linux-drivers@broadcom.com
26 #include <linux/bsg-lib.h>
33 unsigned int mgmt_vendor_specific_fw_cmd(struct be_ctrl_info *ctrl, in mgmt_vendor_specific_fw_cmd() argument
41 struct iscsi_bsg_request *bsg_req = job->request; in mgmt_vendor_specific_fw_cmd()
42 struct be_bsg_vendor_cmd *req = nonemb_cmd->va; in mgmt_vendor_specific_fw_cmd()
45 nonemb_cmd->size = job->request_payload.payload_len; in mgmt_vendor_specific_fw_cmd()
46 memset(nonemb_cmd->va, 0, nonemb_cmd->size); in mgmt_vendor_specific_fw_cmd()
47 region = bsg_req->rqst_data.h_vendor.vendor_cmd[1]; in mgmt_vendor_specific_fw_cmd()
48 sector_size = bsg_req->rqst_data.h_vendor.vendor_cmd[2]; in mgmt_vendor_specific_fw_cmd()
49 sector = bsg_req->rqst_data.h_vendor.vendor_cmd[3]; in mgmt_vendor_specific_fw_cmd()
50 offset = bsg_req->rqst_data.h_vendor.vendor_cmd[4]; in mgmt_vendor_specific_fw_cmd()
51 req->region = region; in mgmt_vendor_specific_fw_cmd()
52 req->sector = sector; in mgmt_vendor_specific_fw_cmd()
53 req->offset = offset; in mgmt_vendor_specific_fw_cmd()
55 if (mutex_lock_interruptible(&ctrl->mbox_lock)) in mgmt_vendor_specific_fw_cmd()
57 switch (bsg_req->rqst_data.h_vendor.vendor_cmd[0]) { in mgmt_vendor_specific_fw_cmd()
60 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in mgmt_vendor_specific_fw_cmd()
62 sg_copy_to_buffer(job->request_payload.sg_list, in mgmt_vendor_specific_fw_cmd()
63 job->request_payload.sg_cnt, in mgmt_vendor_specific_fw_cmd()
64 nonemb_cmd->va + offset, job->request_len); in mgmt_vendor_specific_fw_cmd()
67 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in mgmt_vendor_specific_fw_cmd()
73 bsg_req->rqst_data.h_vendor.vendor_cmd[0]); in mgmt_vendor_specific_fw_cmd()
75 mutex_unlock(&ctrl->mbox_lock); in mgmt_vendor_specific_fw_cmd()
76 return -EPERM; in mgmt_vendor_specific_fw_cmd()
81 mutex_unlock(&ctrl->mbox_lock); in mgmt_vendor_specific_fw_cmd()
86 be_wrb_hdr_prepare(wrb, nonemb_cmd->size, false, in mgmt_vendor_specific_fw_cmd()
87 job->request_payload.sg_cnt); in mgmt_vendor_specific_fw_cmd()
88 mcc_sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); in mgmt_vendor_specific_fw_cmd()
89 mcc_sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF); in mgmt_vendor_specific_fw_cmd()
90 mcc_sge->len = cpu_to_le32(nonemb_cmd->size); in mgmt_vendor_specific_fw_cmd()
94 mutex_unlock(&ctrl->mbox_lock); in mgmt_vendor_specific_fw_cmd()
99 * mgmt_open_connection()- Establish a TCP CXN
117 struct be_ctrl_info *ctrl = &phba->ctrl; in mgmt_open_connection() local
126 unsigned short cid = beiscsi_ep->ep_cid; in mgmt_open_connection()
129 if (dst_addr->sa_family != PF_INET && dst_addr->sa_family != PF_INET6) { in mgmt_open_connection()
132 dst_addr->sa_family); in mgmt_open_connection()
136 phwi_ctrlr = phba->phwi_ctrlr; in mgmt_open_connection()
137 phwi_context = phwi_ctrlr->phwi_ctxt; in mgmt_open_connection()
139 ulp_num = phwi_ctrlr->wrb_context[BE_GET_CRI_FROM_CID(cid)].ulp_num; in mgmt_open_connection()
146 if (mutex_lock_interruptible(&ctrl->mbox_lock)) in mgmt_open_connection()
150 mutex_unlock(&ctrl->mbox_lock); in mgmt_open_connection()
155 req = nonemb_cmd->va; in mgmt_open_connection()
158 be_wrb_hdr_prepare(wrb, nonemb_cmd->size, false, 1); in mgmt_open_connection()
159 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in mgmt_open_connection()
161 nonemb_cmd->size); in mgmt_open_connection()
162 if (dst_addr->sa_family == PF_INET) { in mgmt_open_connection()
163 __be32 s_addr = daddr_in->sin_addr.s_addr; in mgmt_open_connection()
164 req->ip_address.ip_type = BEISCSI_IP_TYPE_V4; in mgmt_open_connection()
165 req->ip_address.addr[0] = s_addr & 0x000000ff; in mgmt_open_connection()
166 req->ip_address.addr[1] = (s_addr & 0x0000ff00) >> 8; in mgmt_open_connection()
167 req->ip_address.addr[2] = (s_addr & 0x00ff0000) >> 16; in mgmt_open_connection()
168 req->ip_address.addr[3] = (s_addr & 0xff000000) >> 24; in mgmt_open_connection()
169 req->tcp_port = ntohs(daddr_in->sin_port); in mgmt_open_connection()
170 beiscsi_ep->dst_addr = daddr_in->sin_addr.s_addr; in mgmt_open_connection()
171 beiscsi_ep->dst_tcpport = ntohs(daddr_in->sin_port); in mgmt_open_connection()
172 beiscsi_ep->ip_type = BEISCSI_IP_TYPE_V4; in mgmt_open_connection()
175 req->ip_address.ip_type = BEISCSI_IP_TYPE_V6; in mgmt_open_connection()
176 memcpy(&req->ip_address.addr, in mgmt_open_connection()
177 &daddr_in6->sin6_addr.in6_u.u6_addr8, 16); in mgmt_open_connection()
178 req->tcp_port = ntohs(daddr_in6->sin6_port); in mgmt_open_connection()
179 beiscsi_ep->dst_tcpport = ntohs(daddr_in6->sin6_port); in mgmt_open_connection()
180 memcpy(&beiscsi_ep->dst6_addr, in mgmt_open_connection()
181 &daddr_in6->sin6_addr.in6_u.u6_addr8, 16); in mgmt_open_connection()
182 beiscsi_ep->ip_type = BEISCSI_IP_TYPE_V6; in mgmt_open_connection()
184 req->cid = cid; in mgmt_open_connection()
185 i = phba->nxt_cqid++; in mgmt_open_connection()
186 if (phba->nxt_cqid == phba->num_cpus) in mgmt_open_connection()
187 phba->nxt_cqid = 0; in mgmt_open_connection()
188 req->cq_id = phwi_context->be_cq[i].id; in mgmt_open_connection()
190 "BG_%d : i=%d cq_id=%d\n", i, req->cq_id); in mgmt_open_connection()
191 req->defq_id = def_hdr_id; in mgmt_open_connection()
192 req->hdr_ring_id = def_hdr_id; in mgmt_open_connection()
193 req->data_ring_id = def_data_id; in mgmt_open_connection()
194 req->do_offload = 1; in mgmt_open_connection()
195 req->dataout_template_pa.lo = ptemplate_address->lo; in mgmt_open_connection()
196 req->dataout_template_pa.hi = ptemplate_address->hi; in mgmt_open_connection()
197 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); in mgmt_open_connection()
198 sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF); in mgmt_open_connection()
199 sge->len = cpu_to_le32(nonemb_cmd->size); in mgmt_open_connection()
202 req->hdr.version = MBX_CMD_VER1; in mgmt_open_connection()
203 req->tcp_window_size = 0x8000; in mgmt_open_connection()
204 req->tcp_window_scale_count = 2; in mgmt_open_connection()
208 mutex_unlock(&ctrl->mbox_lock); in mgmt_open_connection()
213 * beiscsi_exec_nemb_cmd()- execute non-embedded MBX cmd
227 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_exec_nemb_cmd() local
233 mutex_lock(&ctrl->mbox_lock); in beiscsi_exec_nemb_cmd()
236 mutex_unlock(&ctrl->mbox_lock); in beiscsi_exec_nemb_cmd()
237 rc = -ENOMEM; in beiscsi_exec_nemb_cmd()
242 be_wrb_hdr_prepare(wrb, nonemb_cmd->size, false, 1); in beiscsi_exec_nemb_cmd()
243 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); in beiscsi_exec_nemb_cmd()
244 sge->pa_lo = cpu_to_le32(lower_32_bits(nonemb_cmd->dma)); in beiscsi_exec_nemb_cmd()
245 sge->len = cpu_to_le32(nonemb_cmd->size); in beiscsi_exec_nemb_cmd()
250 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_exec_nemb_cmd()
251 ctrl->ptag_state[tag].cbfn = cbfn; in beiscsi_exec_nemb_cmd()
252 tag_mem = &phba->ctrl.ptag_state[tag].tag_mem_state; in beiscsi_exec_nemb_cmd()
255 tag_mem->size = nonemb_cmd->size; in beiscsi_exec_nemb_cmd()
256 tag_mem->va = nonemb_cmd->va; in beiscsi_exec_nemb_cmd()
257 tag_mem->dma = nonemb_cmd->dma; in beiscsi_exec_nemb_cmd()
260 mutex_unlock(&ctrl->mbox_lock); in beiscsi_exec_nemb_cmd()
270 memcpy(resp_buf, nonemb_cmd->va, resp_buf_len); in beiscsi_exec_nemb_cmd()
276 if (rc == -EAGAIN) in beiscsi_exec_nemb_cmd()
283 if (rc == -EBUSY) in beiscsi_exec_nemb_cmd()
287 dma_free_coherent(&ctrl->pdev->dev, nonemb_cmd->size, in beiscsi_exec_nemb_cmd()
288 nonemb_cmd->va, nonemb_cmd->dma); in beiscsi_exec_nemb_cmd()
296 cmd->va = dma_alloc_coherent(&phba->ctrl.pdev->dev, size, &cmd->dma, in beiscsi_prep_nemb_cmd()
298 if (!cmd->va) { in beiscsi_prep_nemb_cmd()
301 return -ENOMEM; in beiscsi_prep_nemb_cmd()
303 cmd->size = size; in beiscsi_prep_nemb_cmd()
304 be_cmd_hdr_prepare(cmd->va, subsystem, opcode, size); in beiscsi_prep_nemb_cmd()
317 tag_mem = &phba->ctrl.ptag_state[tag].tag_mem_state; in __beiscsi_eq_delay_compl()
318 if (tag_mem->size) { in __beiscsi_eq_delay_compl()
319 dma_free_coherent(&phba->pcidev->dev, tag_mem->size, in __beiscsi_eq_delay_compl()
320 tag_mem->va, tag_mem->dma); in __beiscsi_eq_delay_compl()
321 tag_mem->size = 0; in __beiscsi_eq_delay_compl()
338 req->num_eq = cpu_to_le32(num); in beiscsi_modify_eq_delay()
340 req->delay[i].eq_id = cpu_to_le32(set_eqd[i].eq_id); in beiscsi_modify_eq_delay()
341 req->delay[i].phase = 0; in beiscsi_modify_eq_delay()
342 req->delay[i].delay_multiplier = in beiscsi_modify_eq_delay()
351 * beiscsi_get_initiator_name - read initiator name from flash
371 req->hdr.version = 1; in beiscsi_get_initiator_name()
386 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_if_get_handle() local
393 if (mutex_lock_interruptible(&ctrl->mbox_lock)) in beiscsi_if_get_handle()
394 return -EINTR; in beiscsi_if_get_handle()
397 mutex_unlock(&ctrl->mbox_lock); in beiscsi_if_get_handle()
398 return -ENOMEM; in beiscsi_if_get_handle()
403 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in beiscsi_if_get_handle()
407 mutex_unlock(&ctrl->mbox_lock); in beiscsi_if_get_handle()
413 return -EBUSY; in beiscsi_if_get_handle()
418 phba->interface_handle = pbe_allid->if_hndl_list[0]; in beiscsi_if_get_handle()
425 u32 len; in beiscsi_if_zero_ip() local
427 len = (ip_type < BEISCSI_IP_TYPE_V6) ? IP_V4_LEN : IP_V6_LEN; in beiscsi_if_zero_ip()
428 while (len && !ip[len - 1]) in beiscsi_if_zero_ip()
429 len--; in beiscsi_if_zero_ip()
430 return (len == 0); in beiscsi_if_zero_ip()
447 req->action = action; in beiscsi_if_mod_gw()
448 req->ip_addr.ip_type = ip_type; in beiscsi_if_mod_gw()
449 memcpy(req->ip_addr.addr, gw, in beiscsi_if_mod_gw()
499 req->ip_type = ip_type; in beiscsi_if_get_gw()
520 req->ip_params.record_entry_count = 1; in beiscsi_if_clr_ip()
521 req->ip_params.ip_record.action = IP_ACTION_DEL; in beiscsi_if_clr_ip()
522 req->ip_params.ip_record.interface_hndl = in beiscsi_if_clr_ip()
523 phba->interface_handle; in beiscsi_if_clr_ip()
524 req->ip_params.ip_record.ip_addr.size_of_structure = in beiscsi_if_clr_ip()
526 req->ip_params.ip_record.ip_addr.ip_type = if_info->ip_addr.ip_type; in beiscsi_if_clr_ip()
527 memcpy(req->ip_params.ip_record.ip_addr.addr, in beiscsi_if_clr_ip()
528 if_info->ip_addr.addr, in beiscsi_if_clr_ip()
529 sizeof(if_info->ip_addr.addr)); in beiscsi_if_clr_ip()
530 memcpy(req->ip_params.ip_record.ip_addr.subnet_mask, in beiscsi_if_clr_ip()
531 if_info->ip_addr.subnet_mask, in beiscsi_if_clr_ip()
532 sizeof(if_info->ip_addr.subnet_mask)); in beiscsi_if_clr_ip()
534 if (rc < 0 || req->ip_params.ip_record.status) { in beiscsi_if_clr_ip()
537 rc, req->ip_params.ip_record.status); in beiscsi_if_clr_ip()
558 req->ip_params.record_entry_count = 1; in beiscsi_if_set_ip()
559 req->ip_params.ip_record.action = IP_ACTION_ADD; in beiscsi_if_set_ip()
560 req->ip_params.ip_record.interface_hndl = in beiscsi_if_set_ip()
561 phba->interface_handle; in beiscsi_if_set_ip()
562 req->ip_params.ip_record.ip_addr.size_of_structure = in beiscsi_if_set_ip()
564 req->ip_params.ip_record.ip_addr.ip_type = ip_type; in beiscsi_if_set_ip()
566 memcpy(req->ip_params.ip_record.ip_addr.addr, ip, ip_len); in beiscsi_if_set_ip()
568 memcpy(req->ip_params.ip_record.ip_addr.subnet_mask, in beiscsi_if_set_ip()
576 if (rc < 0 || req->ip_params.ip_record.status) { in beiscsi_if_set_ip()
579 rc, req->ip_params.ip_record.status); in beiscsi_if_set_ip()
580 if (req->ip_params.ip_record.status) in beiscsi_if_set_ip()
581 rc = -EINVAL; in beiscsi_if_set_ip()
598 if (if_info->dhcp_state) { in beiscsi_if_en_static()
607 reldhcp->interface_hndl = phba->interface_handle; in beiscsi_if_en_static()
608 reldhcp->ip_type = ip_type; in beiscsi_if_en_static()
619 if (!beiscsi_if_zero_ip(if_info->ip_addr.addr, ip_type)) { in beiscsi_if_en_static()
646 if (if_info->dhcp_state) { in beiscsi_if_en_dhcp()
653 if (!beiscsi_if_zero_ip(if_info->ip_addr.addr, ip_type)) { in beiscsi_if_en_dhcp()
662 rc = beiscsi_if_get_gw(phba, if_info->ip_addr.ip_type, &gw_resp); in beiscsi_if_en_dhcp()
669 if (!beiscsi_if_zero_ip(gw, if_info->ip_addr.ip_type)) { in beiscsi_if_en_dhcp()
671 if_info->ip_addr.ip_type, gw); in beiscsi_if_en_dhcp()
686 dhcpreq->flags = 1; /* 1 - blocking; 0 - non-blocking */ in beiscsi_if_en_dhcp()
687 dhcpreq->retry_count = 1; in beiscsi_if_en_dhcp()
688 dhcpreq->interface_hndl = phba->interface_handle; in beiscsi_if_en_dhcp()
689 dhcpreq->ip_type = ip_type; in beiscsi_if_en_dhcp()
698 * beiscsi_if_set_vlan()- Issue and wait for CMD completion
707 * Failure: Non-Xero Value
719 return -EBUSY; in beiscsi_if_set_vlan()
754 req->interface_hndl = phba->interface_handle; in beiscsi_if_get_info()
755 req->ip_type = ip_type; in beiscsi_if_get_info()
765 dma_free_coherent(&phba->ctrl.pdev->dev, in beiscsi_if_get_info()
769 return -ENOMEM; in beiscsi_if_get_info()
776 if (rc == -EAGAIN) { in beiscsi_if_get_info()
780 nonemb_cmd.va)->actual_resp_len; in beiscsi_if_get_info()
784 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_if_get_info()
822 if (!test_bit(BEISCSI_HBA_BOOT_WORK, &phba->state)) { in beiscsi_boot_process_compl()
825 __func__, phba->state); in beiscsi_boot_process_compl()
829 if (phba->boot_struct.tag != tag) { in beiscsi_boot_process_compl()
832 __func__, tag, phba->boot_struct.tag); in beiscsi_boot_process_compl()
835 bs = &phba->boot_struct; in beiscsi_boot_process_compl()
838 switch (bs->action) { in beiscsi_boot_process_compl()
842 bs->action = BEISCSI_BOOT_GET_SHANDLE; in beiscsi_boot_process_compl()
844 bs->retry--; in beiscsi_boot_process_compl()
850 bs->s_handle = boot_resp->boot_session_handle; in beiscsi_boot_process_compl()
852 if (bs->s_handle == BE_BOOT_INVALID_SHANDLE) { in beiscsi_boot_process_compl()
853 bs->action = BEISCSI_BOOT_REOPEN_SESS; in beiscsi_boot_process_compl()
854 bs->retry--; in beiscsi_boot_process_compl()
856 bs->action = BEISCSI_BOOT_GET_SINFO; in beiscsi_boot_process_compl()
861 &bs->nonemb_cmd); in beiscsi_boot_process_compl()
863 sess_resp = bs->nonemb_cmd.va; in beiscsi_boot_process_compl()
864 memcpy(&bs->boot_sess, &sess_resp->session_info, in beiscsi_boot_process_compl()
866 bs->action = BEISCSI_BOOT_LOGOUT_SESS; in beiscsi_boot_process_compl()
873 dma_free_coherent(&phba->ctrl.pdev->dev, bs->nonemb_cmd.size, in beiscsi_boot_process_compl()
874 bs->nonemb_cmd.va, bs->nonemb_cmd.dma); in beiscsi_boot_process_compl()
875 bs->nonemb_cmd.va = NULL; in beiscsi_boot_process_compl()
881 if (logo_resp->session_status != BE_SESS_STATUS_CLOSE) { in beiscsi_boot_process_compl()
884 logo_resp->session_status); in beiscsi_boot_process_compl()
888 bs->action = BEISCSI_BOOT_CREATE_KSET; in beiscsi_boot_process_compl()
895 bs->tag = 0; in beiscsi_boot_process_compl()
896 if (!bs->retry) { in beiscsi_boot_process_compl()
900 status, bs->action); in beiscsi_boot_process_compl()
904 clear_bit(BEISCSI_HBA_BOOT_WORK, &phba->state); in beiscsi_boot_process_compl()
907 schedule_work(&phba->boot_work); in beiscsi_boot_process_compl()
911 * beiscsi_boot_logout_sess()- Logout from boot FW session
920 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_boot_logout_sess() local
925 mutex_lock(&ctrl->mbox_lock); in beiscsi_boot_logout_sess()
928 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_logout_sess()
934 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_boot_logout_sess()
938 req->session_handle = phba->boot_struct.boot_sess.session_handle; in beiscsi_boot_logout_sess()
940 phba->boot_struct.tag = tag; in beiscsi_boot_logout_sess()
941 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_boot_logout_sess()
942 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in beiscsi_boot_logout_sess()
945 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_logout_sess()
950 * beiscsi_boot_reopen_sess()- Reopen boot session
959 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_boot_reopen_sess() local
964 mutex_lock(&ctrl->mbox_lock); in beiscsi_boot_reopen_sess()
967 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_reopen_sess()
973 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_boot_reopen_sess()
976 req->reopen_type = BE_REOPEN_BOOT_SESSIONS; in beiscsi_boot_reopen_sess()
977 req->session_handle = BE_BOOT_INVALID_SHANDLE; in beiscsi_boot_reopen_sess()
979 phba->boot_struct.tag = tag; in beiscsi_boot_reopen_sess()
980 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_boot_reopen_sess()
981 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in beiscsi_boot_reopen_sess()
984 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_reopen_sess()
990 * beiscsi_boot_get_sinfo()- Get boot session info
1000 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_boot_get_sinfo() local
1007 mutex_lock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1010 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1014 nonemb_cmd = &phba->boot_struct.nonemb_cmd; in beiscsi_boot_get_sinfo()
1015 nonemb_cmd->size = sizeof(struct be_cmd_get_session_resp); in beiscsi_boot_get_sinfo()
1016 nonemb_cmd->va = dma_alloc_coherent(&phba->ctrl.pdev->dev, in beiscsi_boot_get_sinfo()
1017 nonemb_cmd->size, in beiscsi_boot_get_sinfo()
1018 &nonemb_cmd->dma, in beiscsi_boot_get_sinfo()
1020 if (!nonemb_cmd->va) { in beiscsi_boot_get_sinfo()
1021 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1025 req = nonemb_cmd->va; in beiscsi_boot_get_sinfo()
1029 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_boot_get_sinfo()
1032 req->session_handle = phba->boot_struct.s_handle; in beiscsi_boot_get_sinfo()
1033 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); in beiscsi_boot_get_sinfo()
1034 sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF); in beiscsi_boot_get_sinfo()
1035 sge->len = cpu_to_le32(nonemb_cmd->size); in beiscsi_boot_get_sinfo()
1037 phba->boot_struct.tag = tag; in beiscsi_boot_get_sinfo()
1038 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_boot_get_sinfo()
1039 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in beiscsi_boot_get_sinfo()
1042 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1048 struct be_ctrl_info *ctrl = &phba->ctrl; in __beiscsi_boot_get_shandle() local
1053 mutex_lock(&ctrl->mbox_lock); in __beiscsi_boot_get_shandle()
1056 mutex_unlock(&ctrl->mbox_lock); in __beiscsi_boot_get_shandle()
1062 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in __beiscsi_boot_get_shandle()
1067 phba->boot_struct.tag = tag; in __beiscsi_boot_get_shandle()
1068 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in __beiscsi_boot_get_shandle()
1069 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in __beiscsi_boot_get_shandle()
1073 mutex_unlock(&ctrl->mbox_lock); in __beiscsi_boot_get_shandle()
1078 * beiscsi_boot_get_shandle()- Get boot session handle
1101 return -EAGAIN; in beiscsi_boot_get_shandle()
1109 return -EBUSY; in beiscsi_boot_get_shandle()
1114 if (!boot_resp->boot_session_count) { in beiscsi_boot_get_shandle()
1117 return -ENXIO; in beiscsi_boot_get_shandle()
1121 *s_handle = boot_resp->boot_session_handle; in beiscsi_boot_get_shandle()
1126 * beiscsi_drvr_ver_disp()- Display the driver Name and Version
1142 * beiscsi_fw_ver_disp()- Display Firmware Version
1157 return snprintf(buf, PAGE_SIZE, "%s\n", phba->fw_ver_str); in beiscsi_fw_ver_disp()
1161 * beiscsi_active_session_disp()- Display Sessions Active
1175 uint16_t avlbl_cids = 0, ulp_num, len = 0, total_cids = 0; in beiscsi_active_session_disp() local
1178 if (test_bit(ulp_num, (void *)&phba->fw_config.ulp_supported)) { in beiscsi_active_session_disp()
1181 len += snprintf(buf+len, PAGE_SIZE - len, in beiscsi_active_session_disp()
1183 (total_cids - avlbl_cids)); in beiscsi_active_session_disp()
1185 len += snprintf(buf+len, PAGE_SIZE - len, in beiscsi_active_session_disp()
1189 return len; in beiscsi_active_session_disp()
1193 * beiscsi_free_session_disp()- Display Avaliable Session
1207 uint16_t ulp_num, len = 0; in beiscsi_free_session_disp() local
1210 if (test_bit(ulp_num, (void *)&phba->fw_config.ulp_supported)) in beiscsi_free_session_disp()
1211 len += snprintf(buf+len, PAGE_SIZE - len, in beiscsi_free_session_disp()
1215 len += snprintf(buf+len, PAGE_SIZE - len, in beiscsi_free_session_disp()
1219 return len; in beiscsi_free_session_disp()
1223 * beiscsi_adap_family_disp()- Display adapter family.
1239 dev_id = phba->pcidev->device; in beiscsi_adap_family_disp()
1249 return snprintf(buf, PAGE_SIZE, "BE3-R Adapter Family\n"); in beiscsi_adap_family_disp()
1252 return snprintf(buf, PAGE_SIZE, "Skyhawk-R Adapter Family\n"); in beiscsi_adap_family_disp()
1262 * beiscsi_phys_port()- Display Physical Port Identifier
1278 phba->fw_config.phys_port); in beiscsi_phys_port_disp()
1286 struct iscsi_wrb *pwrb = pwrb_handle->pwrb; in beiscsi_offload_cxn_v0()
1290 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1297 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1300 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1303 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1306 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1309 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1312 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1316 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1319 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v0()
1322 max_burst_length, pwrb, params->dw[offsetof in beiscsi_offload_cxn_v0()
1327 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v0()
1328 if (pwrb_context->plast_wrb) in beiscsi_offload_cxn_v0()
1331 pwrb_context->plast_wrb, in beiscsi_offload_cxn_v0()
1332 pwrb_handle->wrb_index); in beiscsi_offload_cxn_v0()
1333 pwrb_context->plast_wrb = pwrb; in beiscsi_offload_cxn_v0()
1347 mem_descr->mem_array[0].bus_address.u.a32.address_hi); in beiscsi_offload_cxn_v0()
1350 mem_descr->mem_array[0].bus_address.u.a32.address_lo); in beiscsi_offload_cxn_v0()
1357 struct iscsi_wrb *pwrb = pwrb_handle->pwrb; in beiscsi_offload_cxn_v2()
1360 max_burst_length, pwrb, params->dw[offsetof in beiscsi_offload_cxn_v2()
1368 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v2()
1369 if (pwrb_context->plast_wrb) in beiscsi_offload_cxn_v2()
1372 pwrb_context->plast_wrb, in beiscsi_offload_cxn_v2()
1373 pwrb_handle->wrb_index); in beiscsi_offload_cxn_v2()
1374 pwrb_context->plast_wrb = pwrb; in beiscsi_offload_cxn_v2()
1377 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v2()
1380 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1384 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1388 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1393 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1396 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1399 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1403 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1406 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1411 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1417 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1422 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1427 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1435 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_invalidate_cxn() local
1439 mutex_lock(&ctrl->mbox_lock); in beiscsi_invalidate_cxn()
1442 mutex_unlock(&ctrl->mbox_lock); in beiscsi_invalidate_cxn()
1449 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_invalidate_cxn()
1452 req->session_handle = beiscsi_ep->fw_handle; in beiscsi_invalidate_cxn()
1453 req->cid = beiscsi_ep->ep_cid; in beiscsi_invalidate_cxn()
1454 if (beiscsi_ep->conn) in beiscsi_invalidate_cxn()
1455 req->cleanup_type = BE_CLEANUP_TYPE_INVALIDATE; in beiscsi_invalidate_cxn()
1457 req->cleanup_type = BE_CLEANUP_TYPE_ISSUE_TCP_RST; in beiscsi_invalidate_cxn()
1459 * 0 - non-persistent targets in beiscsi_invalidate_cxn()
1460 * 1 - save session info on flash in beiscsi_invalidate_cxn()
1462 req->save_cfg = 0; in beiscsi_invalidate_cxn()
1464 mutex_unlock(&ctrl->mbox_lock); in beiscsi_invalidate_cxn()
1471 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_upload_cxn() local
1476 mutex_lock(&ctrl->mbox_lock); in beiscsi_upload_cxn()
1479 mutex_unlock(&ctrl->mbox_lock); in beiscsi_upload_cxn()
1485 be_cmd_hdr_prepare(&req->hdr, CMD_COMMON_TCP_UPLOAD, in beiscsi_upload_cxn()
1487 req->id = beiscsi_ep->ep_cid; in beiscsi_upload_cxn()
1488 if (beiscsi_ep->conn) in beiscsi_upload_cxn()
1489 req->upload_type = BE_UPLOAD_TYPE_GRACEFUL; in beiscsi_upload_cxn()
1491 req->upload_type = BE_UPLOAD_TYPE_ABORT; in beiscsi_upload_cxn()
1493 mutex_unlock(&ctrl->mbox_lock); in beiscsi_upload_cxn()
1501 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_mgmt_invalidate_icds() local
1510 return -EINVAL; in beiscsi_mgmt_invalidate_icds()
1513 nonemb_cmd.va = dma_alloc_coherent(&phba->ctrl.pdev->dev, in beiscsi_mgmt_invalidate_icds()
1519 return -ENOMEM; in beiscsi_mgmt_invalidate_icds()
1522 mutex_lock(&ctrl->mbox_lock); in beiscsi_mgmt_invalidate_icds()
1525 mutex_unlock(&ctrl->mbox_lock); in beiscsi_mgmt_invalidate_icds()
1526 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_mgmt_invalidate_icds()
1528 return -ENOMEM; in beiscsi_mgmt_invalidate_icds()
1533 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in beiscsi_mgmt_invalidate_icds()
1536 req->ref_handle = 0; in beiscsi_mgmt_invalidate_icds()
1537 req->cleanup_type = CMD_ISCSI_COMMAND_INVALIDATE; in beiscsi_mgmt_invalidate_icds()
1539 req->table[i].icd = inv_tbl[i].icd; in beiscsi_mgmt_invalidate_icds()
1540 req->table[i].cid = inv_tbl[i].cid; in beiscsi_mgmt_invalidate_icds()
1541 req->icd_count++; in beiscsi_mgmt_invalidate_icds()
1544 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd.dma)); in beiscsi_mgmt_invalidate_icds()
1545 sge->pa_lo = cpu_to_le32(lower_32_bits(nonemb_cmd.dma)); in beiscsi_mgmt_invalidate_icds()
1546 sge->len = cpu_to_le32(nonemb_cmd.size); in beiscsi_mgmt_invalidate_icds()
1549 mutex_unlock(&ctrl->mbox_lock); in beiscsi_mgmt_invalidate_icds()
1552 if (rc != -EBUSY) in beiscsi_mgmt_invalidate_icds()
1553 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_mgmt_invalidate_icds()