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
118 struct be_ctrl_info *ctrl = &phba->ctrl; in mgmt_open_connection() local
127 unsigned short cid = beiscsi_ep->ep_cid; in mgmt_open_connection()
130 if (dst_addr->sa_family != PF_INET && dst_addr->sa_family != PF_INET6) { in mgmt_open_connection()
133 dst_addr->sa_family); in mgmt_open_connection()
137 phwi_ctrlr = phba->phwi_ctrlr; in mgmt_open_connection()
138 phwi_context = phwi_ctrlr->phwi_ctxt; in mgmt_open_connection()
140 ulp_num = phwi_ctrlr->wrb_context[BE_GET_CRI_FROM_CID(cid)].ulp_num; in mgmt_open_connection()
147 if (mutex_lock_interruptible(&ctrl->mbox_lock)) in mgmt_open_connection()
151 mutex_unlock(&ctrl->mbox_lock); in mgmt_open_connection()
156 req = nonemb_cmd->va; in mgmt_open_connection()
159 be_wrb_hdr_prepare(wrb, nonemb_cmd->size, false, 1); in mgmt_open_connection()
160 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in mgmt_open_connection()
162 nonemb_cmd->size); in mgmt_open_connection()
163 if (dst_addr->sa_family == PF_INET) { in mgmt_open_connection()
164 __be32 s_addr = daddr_in->sin_addr.s_addr; in mgmt_open_connection()
165 req->ip_address.ip_type = BEISCSI_IP_TYPE_V4; in mgmt_open_connection()
166 req->ip_address.addr[0] = s_addr & 0x000000ff; in mgmt_open_connection()
167 req->ip_address.addr[1] = (s_addr & 0x0000ff00) >> 8; in mgmt_open_connection()
168 req->ip_address.addr[2] = (s_addr & 0x00ff0000) >> 16; in mgmt_open_connection()
169 req->ip_address.addr[3] = (s_addr & 0xff000000) >> 24; in mgmt_open_connection()
170 req->tcp_port = ntohs(daddr_in->sin_port); in mgmt_open_connection()
171 beiscsi_ep->dst_addr = daddr_in->sin_addr.s_addr; in mgmt_open_connection()
172 beiscsi_ep->dst_tcpport = ntohs(daddr_in->sin_port); in mgmt_open_connection()
173 beiscsi_ep->ip_type = BEISCSI_IP_TYPE_V4; in mgmt_open_connection()
176 req->ip_address.ip_type = BEISCSI_IP_TYPE_V6; in mgmt_open_connection()
177 memcpy(&req->ip_address.addr, in mgmt_open_connection()
178 &daddr_in6->sin6_addr.in6_u.u6_addr8, 16); in mgmt_open_connection()
179 req->tcp_port = ntohs(daddr_in6->sin6_port); in mgmt_open_connection()
180 beiscsi_ep->dst_tcpport = ntohs(daddr_in6->sin6_port); in mgmt_open_connection()
181 memcpy(&beiscsi_ep->dst6_addr, in mgmt_open_connection()
182 &daddr_in6->sin6_addr.in6_u.u6_addr8, 16); in mgmt_open_connection()
183 beiscsi_ep->ip_type = BEISCSI_IP_TYPE_V6; in mgmt_open_connection()
185 req->cid = cid; in mgmt_open_connection()
186 i = phba->nxt_cqid++; in mgmt_open_connection()
187 if (phba->nxt_cqid == phba->num_cpus) in mgmt_open_connection()
188 phba->nxt_cqid = 0; in mgmt_open_connection()
189 req->cq_id = phwi_context->be_cq[i].id; in mgmt_open_connection()
191 "BG_%d : i=%d cq_id=%d\n", i, req->cq_id); in mgmt_open_connection()
192 req->defq_id = def_hdr_id; in mgmt_open_connection()
193 req->hdr_ring_id = def_hdr_id; in mgmt_open_connection()
194 req->data_ring_id = def_data_id; in mgmt_open_connection()
195 req->do_offload = 1; in mgmt_open_connection()
196 req->dataout_template_pa.lo = ptemplate_address->lo; in mgmt_open_connection()
197 req->dataout_template_pa.hi = ptemplate_address->hi; in mgmt_open_connection()
198 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); in mgmt_open_connection()
199 sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF); in mgmt_open_connection()
200 sge->len = cpu_to_le32(nonemb_cmd->size); in mgmt_open_connection()
203 req->hdr.version = MBX_CMD_VER1; in mgmt_open_connection()
204 req->tcp_window_size = 0x8000; in mgmt_open_connection()
205 req->tcp_window_scale_count = 2; in mgmt_open_connection()
209 mutex_unlock(&ctrl->mbox_lock); in mgmt_open_connection()
214 * beiscsi_exec_nemb_cmd()- execute non-embedded MBX cmd
228 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_exec_nemb_cmd() local
234 mutex_lock(&ctrl->mbox_lock); in beiscsi_exec_nemb_cmd()
237 mutex_unlock(&ctrl->mbox_lock); in beiscsi_exec_nemb_cmd()
238 rc = -ENOMEM; in beiscsi_exec_nemb_cmd()
243 be_wrb_hdr_prepare(wrb, nonemb_cmd->size, false, 1); in beiscsi_exec_nemb_cmd()
244 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); in beiscsi_exec_nemb_cmd()
245 sge->pa_lo = cpu_to_le32(lower_32_bits(nonemb_cmd->dma)); in beiscsi_exec_nemb_cmd()
246 sge->len = cpu_to_le32(nonemb_cmd->size); in beiscsi_exec_nemb_cmd()
251 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_exec_nemb_cmd()
252 ctrl->ptag_state[tag].cbfn = cbfn; in beiscsi_exec_nemb_cmd()
253 tag_mem = &phba->ctrl.ptag_state[tag].tag_mem_state; in beiscsi_exec_nemb_cmd()
256 tag_mem->size = nonemb_cmd->size; in beiscsi_exec_nemb_cmd()
257 tag_mem->va = nonemb_cmd->va; in beiscsi_exec_nemb_cmd()
258 tag_mem->dma = nonemb_cmd->dma; in beiscsi_exec_nemb_cmd()
261 mutex_unlock(&ctrl->mbox_lock); in beiscsi_exec_nemb_cmd()
271 memcpy(resp_buf, nonemb_cmd->va, resp_buf_len); in beiscsi_exec_nemb_cmd()
277 if (rc == -EAGAIN) in beiscsi_exec_nemb_cmd()
284 if (rc == -EBUSY) in beiscsi_exec_nemb_cmd()
288 dma_free_coherent(&ctrl->pdev->dev, nonemb_cmd->size, in beiscsi_exec_nemb_cmd()
289 nonemb_cmd->va, nonemb_cmd->dma); in beiscsi_exec_nemb_cmd()
297 cmd->va = dma_alloc_coherent(&phba->ctrl.pdev->dev, size, &cmd->dma, in beiscsi_prep_nemb_cmd()
299 if (!cmd->va) { in beiscsi_prep_nemb_cmd()
302 return -ENOMEM; in beiscsi_prep_nemb_cmd()
304 cmd->size = size; in beiscsi_prep_nemb_cmd()
305 be_cmd_hdr_prepare(cmd->va, subsystem, opcode, size); in beiscsi_prep_nemb_cmd()
318 tag_mem = &phba->ctrl.ptag_state[tag].tag_mem_state; in __beiscsi_eq_delay_compl()
319 if (tag_mem->size) { in __beiscsi_eq_delay_compl()
320 dma_free_coherent(&phba->pcidev->dev, tag_mem->size, in __beiscsi_eq_delay_compl()
321 tag_mem->va, tag_mem->dma); in __beiscsi_eq_delay_compl()
322 tag_mem->size = 0; in __beiscsi_eq_delay_compl()
339 req->num_eq = cpu_to_le32(num); in beiscsi_modify_eq_delay()
341 req->delay[i].eq_id = cpu_to_le32(set_eqd[i].eq_id); in beiscsi_modify_eq_delay()
342 req->delay[i].phase = 0; in beiscsi_modify_eq_delay()
343 req->delay[i].delay_multiplier = in beiscsi_modify_eq_delay()
352 * beiscsi_get_initiator_name - read initiator name from flash
372 req->hdr.version = 1; in beiscsi_get_initiator_name()
387 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_if_get_handle() local
394 if (mutex_lock_interruptible(&ctrl->mbox_lock)) in beiscsi_if_get_handle()
395 return -EINTR; in beiscsi_if_get_handle()
398 mutex_unlock(&ctrl->mbox_lock); in beiscsi_if_get_handle()
399 return -ENOMEM; in beiscsi_if_get_handle()
404 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in beiscsi_if_get_handle()
408 mutex_unlock(&ctrl->mbox_lock); in beiscsi_if_get_handle()
414 return -EBUSY; in beiscsi_if_get_handle()
419 phba->interface_handle = pbe_allid->if_hndl_list[0]; in beiscsi_if_get_handle()
426 u32 len; in beiscsi_if_zero_ip() local
428 len = (ip_type < BEISCSI_IP_TYPE_V6) ? IP_V4_LEN : IP_V6_LEN; in beiscsi_if_zero_ip()
429 while (len && !ip[len - 1]) in beiscsi_if_zero_ip()
430 len--; in beiscsi_if_zero_ip()
431 return (len == 0); in beiscsi_if_zero_ip()
448 req->action = action; in beiscsi_if_mod_gw()
449 req->ip_addr.ip_type = ip_type; in beiscsi_if_mod_gw()
450 memcpy(req->ip_addr.addr, gw, in beiscsi_if_mod_gw()
500 req->ip_type = ip_type; in beiscsi_if_get_gw()
521 req->ip_params.record_entry_count = 1; in beiscsi_if_clr_ip()
522 req->ip_params.ip_record.action = IP_ACTION_DEL; in beiscsi_if_clr_ip()
523 req->ip_params.ip_record.interface_hndl = in beiscsi_if_clr_ip()
524 phba->interface_handle; in beiscsi_if_clr_ip()
525 req->ip_params.ip_record.ip_addr.size_of_structure = in beiscsi_if_clr_ip()
527 req->ip_params.ip_record.ip_addr.ip_type = if_info->ip_addr.ip_type; in beiscsi_if_clr_ip()
528 memcpy(req->ip_params.ip_record.ip_addr.addr, in beiscsi_if_clr_ip()
529 if_info->ip_addr.addr, in beiscsi_if_clr_ip()
530 sizeof(if_info->ip_addr.addr)); in beiscsi_if_clr_ip()
531 memcpy(req->ip_params.ip_record.ip_addr.subnet_mask, in beiscsi_if_clr_ip()
532 if_info->ip_addr.subnet_mask, in beiscsi_if_clr_ip()
533 sizeof(if_info->ip_addr.subnet_mask)); in beiscsi_if_clr_ip()
535 if (rc < 0 || req->ip_params.ip_record.status) { in beiscsi_if_clr_ip()
538 rc, req->ip_params.ip_record.status); in beiscsi_if_clr_ip()
559 req->ip_params.record_entry_count = 1; in beiscsi_if_set_ip()
560 req->ip_params.ip_record.action = IP_ACTION_ADD; in beiscsi_if_set_ip()
561 req->ip_params.ip_record.interface_hndl = in beiscsi_if_set_ip()
562 phba->interface_handle; in beiscsi_if_set_ip()
563 req->ip_params.ip_record.ip_addr.size_of_structure = in beiscsi_if_set_ip()
565 req->ip_params.ip_record.ip_addr.ip_type = ip_type; in beiscsi_if_set_ip()
567 memcpy(req->ip_params.ip_record.ip_addr.addr, ip, ip_len); in beiscsi_if_set_ip()
569 memcpy(req->ip_params.ip_record.ip_addr.subnet_mask, in beiscsi_if_set_ip()
577 if (rc < 0 || req->ip_params.ip_record.status) { in beiscsi_if_set_ip()
580 rc, req->ip_params.ip_record.status); in beiscsi_if_set_ip()
581 if (req->ip_params.ip_record.status) in beiscsi_if_set_ip()
582 rc = -EINVAL; in beiscsi_if_set_ip()
599 if (if_info->dhcp_state) { in beiscsi_if_en_static()
608 reldhcp->interface_hndl = phba->interface_handle; in beiscsi_if_en_static()
609 reldhcp->ip_type = ip_type; in beiscsi_if_en_static()
620 if (!beiscsi_if_zero_ip(if_info->ip_addr.addr, ip_type)) { in beiscsi_if_en_static()
647 if (if_info->dhcp_state) { in beiscsi_if_en_dhcp()
654 if (!beiscsi_if_zero_ip(if_info->ip_addr.addr, ip_type)) { in beiscsi_if_en_dhcp()
663 rc = beiscsi_if_get_gw(phba, if_info->ip_addr.ip_type, &gw_resp); in beiscsi_if_en_dhcp()
670 if (!beiscsi_if_zero_ip(gw, if_info->ip_addr.ip_type)) { in beiscsi_if_en_dhcp()
672 if_info->ip_addr.ip_type, gw); in beiscsi_if_en_dhcp()
687 dhcpreq->flags = 1; /* 1 - blocking; 0 - non-blocking */ in beiscsi_if_en_dhcp()
688 dhcpreq->retry_count = 1; in beiscsi_if_en_dhcp()
689 dhcpreq->interface_hndl = phba->interface_handle; in beiscsi_if_en_dhcp()
690 dhcpreq->ip_type = ip_type; in beiscsi_if_en_dhcp()
699 * beiscsi_if_set_vlan()- Issue and wait for CMD completion
708 * Failure: Non-Xero Value
720 return -EBUSY; in beiscsi_if_set_vlan()
755 req->interface_hndl = phba->interface_handle; in beiscsi_if_get_info()
756 req->ip_type = ip_type; in beiscsi_if_get_info()
766 dma_free_coherent(&phba->ctrl.pdev->dev, in beiscsi_if_get_info()
770 return -ENOMEM; in beiscsi_if_get_info()
777 if (rc == -EAGAIN) { in beiscsi_if_get_info()
781 nonemb_cmd.va)->actual_resp_len; in beiscsi_if_get_info()
785 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_if_get_info()
823 if (!test_bit(BEISCSI_HBA_BOOT_WORK, &phba->state)) { in beiscsi_boot_process_compl()
826 __func__, phba->state); in beiscsi_boot_process_compl()
830 if (phba->boot_struct.tag != tag) { in beiscsi_boot_process_compl()
833 __func__, tag, phba->boot_struct.tag); in beiscsi_boot_process_compl()
836 bs = &phba->boot_struct; in beiscsi_boot_process_compl()
839 switch (bs->action) { in beiscsi_boot_process_compl()
843 bs->action = BEISCSI_BOOT_GET_SHANDLE; in beiscsi_boot_process_compl()
845 bs->retry--; in beiscsi_boot_process_compl()
851 bs->s_handle = boot_resp->boot_session_handle; in beiscsi_boot_process_compl()
853 if (bs->s_handle == BE_BOOT_INVALID_SHANDLE) { in beiscsi_boot_process_compl()
854 bs->action = BEISCSI_BOOT_REOPEN_SESS; in beiscsi_boot_process_compl()
855 bs->retry--; in beiscsi_boot_process_compl()
857 bs->action = BEISCSI_BOOT_GET_SINFO; in beiscsi_boot_process_compl()
862 &bs->nonemb_cmd); in beiscsi_boot_process_compl()
864 sess_resp = bs->nonemb_cmd.va; in beiscsi_boot_process_compl()
865 memcpy(&bs->boot_sess, &sess_resp->session_info, in beiscsi_boot_process_compl()
867 bs->action = BEISCSI_BOOT_LOGOUT_SESS; in beiscsi_boot_process_compl()
874 dma_free_coherent(&phba->ctrl.pdev->dev, bs->nonemb_cmd.size, in beiscsi_boot_process_compl()
875 bs->nonemb_cmd.va, bs->nonemb_cmd.dma); in beiscsi_boot_process_compl()
876 bs->nonemb_cmd.va = NULL; in beiscsi_boot_process_compl()
882 if (logo_resp->session_status != BE_SESS_STATUS_CLOSE) { in beiscsi_boot_process_compl()
885 logo_resp->session_status); in beiscsi_boot_process_compl()
889 bs->action = BEISCSI_BOOT_CREATE_KSET; in beiscsi_boot_process_compl()
896 bs->tag = 0; in beiscsi_boot_process_compl()
897 if (!bs->retry) { in beiscsi_boot_process_compl()
901 status, bs->action); in beiscsi_boot_process_compl()
905 clear_bit(BEISCSI_HBA_BOOT_WORK, &phba->state); in beiscsi_boot_process_compl()
908 schedule_work(&phba->boot_work); in beiscsi_boot_process_compl()
912 * beiscsi_boot_logout_sess()- Logout from boot FW session
921 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_boot_logout_sess() local
926 mutex_lock(&ctrl->mbox_lock); in beiscsi_boot_logout_sess()
929 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_logout_sess()
935 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_boot_logout_sess()
939 req->session_handle = phba->boot_struct.boot_sess.session_handle; in beiscsi_boot_logout_sess()
941 phba->boot_struct.tag = tag; in beiscsi_boot_logout_sess()
942 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_boot_logout_sess()
943 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in beiscsi_boot_logout_sess()
946 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_logout_sess()
951 * beiscsi_boot_reopen_sess()- Reopen boot session
960 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_boot_reopen_sess() local
965 mutex_lock(&ctrl->mbox_lock); in beiscsi_boot_reopen_sess()
968 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_reopen_sess()
974 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_boot_reopen_sess()
977 req->reopen_type = BE_REOPEN_BOOT_SESSIONS; in beiscsi_boot_reopen_sess()
978 req->session_handle = BE_BOOT_INVALID_SHANDLE; in beiscsi_boot_reopen_sess()
980 phba->boot_struct.tag = tag; in beiscsi_boot_reopen_sess()
981 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_boot_reopen_sess()
982 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in beiscsi_boot_reopen_sess()
985 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_reopen_sess()
991 * beiscsi_boot_get_sinfo()- Get boot session info
1001 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_boot_get_sinfo() local
1008 mutex_lock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1011 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1015 nonemb_cmd = &phba->boot_struct.nonemb_cmd; in beiscsi_boot_get_sinfo()
1016 nonemb_cmd->size = sizeof(struct be_cmd_get_session_resp); in beiscsi_boot_get_sinfo()
1017 nonemb_cmd->va = dma_alloc_coherent(&phba->ctrl.pdev->dev, in beiscsi_boot_get_sinfo()
1018 nonemb_cmd->size, in beiscsi_boot_get_sinfo()
1019 &nonemb_cmd->dma, in beiscsi_boot_get_sinfo()
1021 if (!nonemb_cmd->va) { in beiscsi_boot_get_sinfo()
1022 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1026 req = nonemb_cmd->va; in beiscsi_boot_get_sinfo()
1030 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_boot_get_sinfo()
1033 req->session_handle = phba->boot_struct.s_handle; in beiscsi_boot_get_sinfo()
1034 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma)); in beiscsi_boot_get_sinfo()
1035 sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF); in beiscsi_boot_get_sinfo()
1036 sge->len = cpu_to_le32(nonemb_cmd->size); in beiscsi_boot_get_sinfo()
1038 phba->boot_struct.tag = tag; in beiscsi_boot_get_sinfo()
1039 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in beiscsi_boot_get_sinfo()
1040 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in beiscsi_boot_get_sinfo()
1043 mutex_unlock(&ctrl->mbox_lock); in beiscsi_boot_get_sinfo()
1049 struct be_ctrl_info *ctrl = &phba->ctrl; in __beiscsi_boot_get_shandle() local
1054 mutex_lock(&ctrl->mbox_lock); in __beiscsi_boot_get_shandle()
1057 mutex_unlock(&ctrl->mbox_lock); in __beiscsi_boot_get_shandle()
1063 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in __beiscsi_boot_get_shandle()
1068 phba->boot_struct.tag = tag; in __beiscsi_boot_get_shandle()
1069 set_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state); in __beiscsi_boot_get_shandle()
1070 ctrl->ptag_state[tag].cbfn = beiscsi_boot_process_compl; in __beiscsi_boot_get_shandle()
1074 mutex_unlock(&ctrl->mbox_lock); in __beiscsi_boot_get_shandle()
1079 * beiscsi_boot_get_shandle()- Get boot session handle
1102 return -EAGAIN; in beiscsi_boot_get_shandle()
1110 return -EBUSY; in beiscsi_boot_get_shandle()
1115 if (!boot_resp->boot_session_count) { in beiscsi_boot_get_shandle()
1118 return -ENXIO; in beiscsi_boot_get_shandle()
1122 *s_handle = boot_resp->boot_session_handle; in beiscsi_boot_get_shandle()
1127 * beiscsi_drvr_ver_disp()- Display the driver Name and Version
1143 * beiscsi_fw_ver_disp()- Display Firmware Version
1158 return snprintf(buf, PAGE_SIZE, "%s\n", phba->fw_ver_str); in beiscsi_fw_ver_disp()
1162 * beiscsi_active_session_disp()- Display Sessions Active
1176 uint16_t avlbl_cids = 0, ulp_num, len = 0, total_cids = 0; in beiscsi_active_session_disp() local
1179 if (test_bit(ulp_num, (void *)&phba->fw_config.ulp_supported)) { in beiscsi_active_session_disp()
1182 len += scnprintf(buf+len, PAGE_SIZE - len, in beiscsi_active_session_disp()
1184 (total_cids - avlbl_cids)); in beiscsi_active_session_disp()
1186 len += scnprintf(buf+len, PAGE_SIZE - len, in beiscsi_active_session_disp()
1190 return len; in beiscsi_active_session_disp()
1194 * beiscsi_free_session_disp()- Display Avaliable Session
1208 uint16_t ulp_num, len = 0; in beiscsi_free_session_disp() local
1211 if (test_bit(ulp_num, (void *)&phba->fw_config.ulp_supported)) in beiscsi_free_session_disp()
1212 len += scnprintf(buf+len, PAGE_SIZE - len, in beiscsi_free_session_disp()
1216 len += scnprintf(buf+len, PAGE_SIZE - len, in beiscsi_free_session_disp()
1220 return len; in beiscsi_free_session_disp()
1224 * beiscsi_adap_family_disp()- Display adapter family.
1240 dev_id = phba->pcidev->device; in beiscsi_adap_family_disp()
1250 return snprintf(buf, PAGE_SIZE, "BE3-R Adapter Family\n"); in beiscsi_adap_family_disp()
1253 return snprintf(buf, PAGE_SIZE, "Skyhawk-R Adapter Family\n"); in beiscsi_adap_family_disp()
1263 * beiscsi_phys_port()- Display Physical Port Identifier
1279 phba->fw_config.phys_port); in beiscsi_phys_port_disp()
1287 struct iscsi_wrb *pwrb = pwrb_handle->pwrb; in beiscsi_offload_cxn_v0()
1291 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1298 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1301 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1304 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1307 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1310 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1313 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1317 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v0()
1320 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v0()
1323 max_burst_length, pwrb, params->dw[offsetof in beiscsi_offload_cxn_v0()
1328 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v0()
1329 if (pwrb_context->plast_wrb) in beiscsi_offload_cxn_v0()
1332 pwrb_context->plast_wrb, in beiscsi_offload_cxn_v0()
1333 pwrb_handle->wrb_index); in beiscsi_offload_cxn_v0()
1334 pwrb_context->plast_wrb = pwrb; in beiscsi_offload_cxn_v0()
1348 mem_descr->mem_array[0].bus_address.u.a32.address_hi); in beiscsi_offload_cxn_v0()
1351 mem_descr->mem_array[0].bus_address.u.a32.address_lo); in beiscsi_offload_cxn_v0()
1358 struct iscsi_wrb *pwrb = pwrb_handle->pwrb; in beiscsi_offload_cxn_v2()
1361 max_burst_length, pwrb, params->dw[offsetof in beiscsi_offload_cxn_v2()
1369 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v2()
1370 if (pwrb_context->plast_wrb) in beiscsi_offload_cxn_v2()
1373 pwrb_context->plast_wrb, in beiscsi_offload_cxn_v2()
1374 pwrb_handle->wrb_index); in beiscsi_offload_cxn_v2()
1375 pwrb_context->plast_wrb = pwrb; in beiscsi_offload_cxn_v2()
1378 pwrb, pwrb_handle->wrb_index); in beiscsi_offload_cxn_v2()
1381 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1385 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1389 params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1394 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1397 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1400 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1404 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1407 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1412 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1418 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1423 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1428 (params->dw[offsetof(struct amap_beiscsi_offload_params, in beiscsi_offload_cxn_v2()
1436 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_invalidate_cxn() local
1440 mutex_lock(&ctrl->mbox_lock); in beiscsi_invalidate_cxn()
1443 mutex_unlock(&ctrl->mbox_lock); in beiscsi_invalidate_cxn()
1450 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI_INI, in beiscsi_invalidate_cxn()
1453 req->session_handle = beiscsi_ep->fw_handle; in beiscsi_invalidate_cxn()
1454 req->cid = beiscsi_ep->ep_cid; in beiscsi_invalidate_cxn()
1455 if (beiscsi_ep->conn) in beiscsi_invalidate_cxn()
1456 req->cleanup_type = BE_CLEANUP_TYPE_INVALIDATE; in beiscsi_invalidate_cxn()
1458 req->cleanup_type = BE_CLEANUP_TYPE_ISSUE_TCP_RST; in beiscsi_invalidate_cxn()
1460 * 0 - non-persistent targets in beiscsi_invalidate_cxn()
1461 * 1 - save session info on flash in beiscsi_invalidate_cxn()
1463 req->save_cfg = 0; in beiscsi_invalidate_cxn()
1465 mutex_unlock(&ctrl->mbox_lock); in beiscsi_invalidate_cxn()
1472 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_upload_cxn() local
1477 mutex_lock(&ctrl->mbox_lock); in beiscsi_upload_cxn()
1480 mutex_unlock(&ctrl->mbox_lock); in beiscsi_upload_cxn()
1486 be_cmd_hdr_prepare(&req->hdr, CMD_COMMON_TCP_UPLOAD, in beiscsi_upload_cxn()
1488 req->id = beiscsi_ep->ep_cid; in beiscsi_upload_cxn()
1489 if (beiscsi_ep->conn) in beiscsi_upload_cxn()
1490 req->upload_type = BE_UPLOAD_TYPE_GRACEFUL; in beiscsi_upload_cxn()
1492 req->upload_type = BE_UPLOAD_TYPE_ABORT; in beiscsi_upload_cxn()
1494 mutex_unlock(&ctrl->mbox_lock); in beiscsi_upload_cxn()
1502 struct be_ctrl_info *ctrl = &phba->ctrl; in beiscsi_mgmt_invalidate_icds() local
1511 return -EINVAL; in beiscsi_mgmt_invalidate_icds()
1514 nonemb_cmd.va = dma_alloc_coherent(&phba->ctrl.pdev->dev, in beiscsi_mgmt_invalidate_icds()
1520 return -ENOMEM; in beiscsi_mgmt_invalidate_icds()
1523 mutex_lock(&ctrl->mbox_lock); in beiscsi_mgmt_invalidate_icds()
1526 mutex_unlock(&ctrl->mbox_lock); in beiscsi_mgmt_invalidate_icds()
1527 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_mgmt_invalidate_icds()
1529 return -ENOMEM; in beiscsi_mgmt_invalidate_icds()
1534 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ISCSI, in beiscsi_mgmt_invalidate_icds()
1537 req->ref_handle = 0; in beiscsi_mgmt_invalidate_icds()
1538 req->cleanup_type = CMD_ISCSI_COMMAND_INVALIDATE; in beiscsi_mgmt_invalidate_icds()
1540 req->table[i].icd = inv_tbl[i].icd; in beiscsi_mgmt_invalidate_icds()
1541 req->table[i].cid = inv_tbl[i].cid; in beiscsi_mgmt_invalidate_icds()
1542 req->icd_count++; in beiscsi_mgmt_invalidate_icds()
1545 sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd.dma)); in beiscsi_mgmt_invalidate_icds()
1546 sge->pa_lo = cpu_to_le32(lower_32_bits(nonemb_cmd.dma)); in beiscsi_mgmt_invalidate_icds()
1547 sge->len = cpu_to_le32(nonemb_cmd.size); in beiscsi_mgmt_invalidate_icds()
1550 mutex_unlock(&ctrl->mbox_lock); in beiscsi_mgmt_invalidate_icds()
1553 if (rc != -EBUSY) in beiscsi_mgmt_invalidate_icds()
1554 dma_free_coherent(&phba->ctrl.pdev->dev, nonemb_cmd.size, in beiscsi_mgmt_invalidate_icds()