Lines Matching refs:ha
15 void qla4xxx_queue_mbox_cmd(struct scsi_qla_host *ha, uint32_t *mbx_cmd, in qla4xxx_queue_mbox_cmd() argument
22 writel(mbx_cmd[i], &ha->reg->mailbox[i]); in qla4xxx_queue_mbox_cmd()
25 writel(mbx_cmd[0], &ha->reg->mailbox[0]); in qla4xxx_queue_mbox_cmd()
26 readl(&ha->reg->mailbox[0]); in qla4xxx_queue_mbox_cmd()
27 writel(set_rmask(CSR_INTR_RISC), &ha->reg->ctrl_status); in qla4xxx_queue_mbox_cmd()
28 readl(&ha->reg->ctrl_status); in qla4xxx_queue_mbox_cmd()
31 void qla4xxx_process_mbox_intr(struct scsi_qla_host *ha, int out_count) in qla4xxx_process_mbox_intr() argument
35 intr_status = readl(&ha->reg->ctrl_status); in qla4xxx_process_mbox_intr()
42 ha->mbox_status_count = out_count; in qla4xxx_process_mbox_intr()
43 ha->isp_ops->interrupt_service_routine(ha, intr_status); in qla4xxx_process_mbox_intr()
52 static int qla4xxx_is_intr_poll_mode(struct scsi_qla_host *ha) in qla4xxx_is_intr_poll_mode() argument
56 if (is_qla8032(ha) || is_qla8042(ha)) { in qla4xxx_is_intr_poll_mode()
57 if (test_bit(AF_IRQ_ATTACHED, &ha->flags) && in qla4xxx_is_intr_poll_mode()
58 test_bit(AF_83XX_MBOX_INTR_ON, &ha->flags)) in qla4xxx_is_intr_poll_mode()
61 if (test_bit(AF_IRQ_ATTACHED, &ha->flags) && in qla4xxx_is_intr_poll_mode()
62 test_bit(AF_INTERRUPTS_ON, &ha->flags) && in qla4xxx_is_intr_poll_mode()
63 test_bit(AF_ONLINE, &ha->flags) && in qla4xxx_is_intr_poll_mode()
64 !test_bit(AF_HA_REMOVAL, &ha->flags)) in qla4xxx_is_intr_poll_mode()
83 int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount, in qla4xxx_mailbox_command() argument
96 "pointer\n", ha->host_no, __func__)); in qla4xxx_mailbox_command()
100 if (is_qla40XX(ha)) { in qla4xxx_mailbox_command()
101 if (test_bit(AF_HA_REMOVAL, &ha->flags)) { in qla4xxx_mailbox_command()
102 DEBUG2(ql4_printk(KERN_WARNING, ha, "scsi%ld: %s: " in qla4xxx_mailbox_command()
105 ha->host_no, __func__)); in qla4xxx_mailbox_command()
110 if ((is_aer_supported(ha)) && in qla4xxx_mailbox_command()
111 (test_bit(AF_PCI_CHANNEL_IO_PERM_FAILURE, &ha->flags))) { in qla4xxx_mailbox_command()
113 "timeout MBX Exiting.\n", ha->host_no, __func__)); in qla4xxx_mailbox_command()
121 mutex_lock(&ha->mbox_sem); in qla4xxx_mailbox_command()
122 if (!test_bit(AF_MBOX_COMMAND, &ha->flags)) { in qla4xxx_mailbox_command()
123 set_bit(AF_MBOX_COMMAND, &ha->flags); in qla4xxx_mailbox_command()
124 mutex_unlock(&ha->mbox_sem); in qla4xxx_mailbox_command()
127 mutex_unlock(&ha->mbox_sem); in qla4xxx_mailbox_command()
130 ha->host_no, __func__)); in qla4xxx_mailbox_command()
136 if (is_qla80XX(ha)) { in qla4xxx_mailbox_command()
137 if (test_bit(AF_FW_RECOVERY, &ha->flags)) { in qla4xxx_mailbox_command()
138 DEBUG2(ql4_printk(KERN_WARNING, ha, in qla4xxx_mailbox_command()
140 ha->host_no, __func__)); in qla4xxx_mailbox_command()
144 ha->isp_ops->idc_lock(ha); in qla4xxx_mailbox_command()
145 dev_state = qla4_8xxx_rd_direct(ha, QLA8XXX_CRB_DEV_STATE); in qla4xxx_mailbox_command()
146 ha->isp_ops->idc_unlock(ha); in qla4xxx_mailbox_command()
148 ql4_printk(KERN_WARNING, ha, in qla4xxx_mailbox_command()
150 ha->host_no, __func__); in qla4xxx_mailbox_command()
155 spin_lock_irqsave(&ha->hardware_lock, flags); in qla4xxx_mailbox_command()
157 ha->mbox_status_count = outCount; in qla4xxx_mailbox_command()
159 ha->mbox_status[i] = 0; in qla4xxx_mailbox_command()
162 ha->isp_ops->queue_mailbox_command(ha, mbx_cmd, inCount); in qla4xxx_mailbox_command()
164 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla4xxx_mailbox_command()
181 if (qla4xxx_is_intr_poll_mode(ha)) { in qla4xxx_mailbox_command()
184 while (test_bit(AF_MBOX_COMMAND_DONE, &ha->flags) == 0) { in qla4xxx_mailbox_command()
193 spin_lock_irqsave(&ha->hardware_lock, flags); in qla4xxx_mailbox_command()
194 ha->isp_ops->process_mailbox_interrupt(ha, outCount); in qla4xxx_mailbox_command()
195 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla4xxx_mailbox_command()
200 set_bit(AF_MBOX_COMMAND_NOPOLL, &ha->flags); in qla4xxx_mailbox_command()
201 wait_for_completion_timeout(&ha->mbx_intr_comp, MBOX_TOV * HZ); in qla4xxx_mailbox_command()
202 clear_bit(AF_MBOX_COMMAND_NOPOLL, &ha->flags); in qla4xxx_mailbox_command()
206 if (!test_bit(AF_MBOX_COMMAND_DONE, &ha->flags)) { in qla4xxx_mailbox_command()
207 if (is_qla80XX(ha) && in qla4xxx_mailbox_command()
208 test_bit(AF_FW_RECOVERY, &ha->flags)) { in qla4xxx_mailbox_command()
209 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_mailbox_command()
212 ha->host_no, __func__)); in qla4xxx_mailbox_command()
215 ql4_printk(KERN_WARNING, ha, "scsi%ld: Mailbox Cmd 0x%08X timed out, Scheduling Adapter Reset\n", in qla4xxx_mailbox_command()
216 ha->host_no, mbx_cmd[0]); in qla4xxx_mailbox_command()
217 ha->mailbox_timeout_count++; in qla4xxx_mailbox_command()
219 set_bit(DPC_RESET_HA, &ha->dpc_flags); in qla4xxx_mailbox_command()
220 if (is_qla8022(ha)) { in qla4xxx_mailbox_command()
221 ql4_printk(KERN_INFO, ha, in qla4xxx_mailbox_command()
223 qla4_82xx_wr_32(ha, QLA82XX_CRB_NIU + 0x98, in qla4xxx_mailbox_command()
226 } else if (is_qla8032(ha) || is_qla8042(ha)) { in qla4xxx_mailbox_command()
227 ql4_printk(KERN_INFO, ha, " %s: disabling pause transmit on port 0 & 1.\n", in qla4xxx_mailbox_command()
229 qla4_83xx_disable_pause(ha); in qla4xxx_mailbox_command()
238 spin_lock_irqsave(&ha->hardware_lock, flags); in qla4xxx_mailbox_command()
240 mbx_sts[i] = ha->mbox_status[i]; in qla4xxx_mailbox_command()
243 switch (ha->mbox_status[0]) { in qla4xxx_mailbox_command()
253 ql4_printk(KERN_WARNING, ha, "scsi%ld: %s: Cmd = %08X, ISP BUSY\n", in qla4xxx_mailbox_command()
254 ha->host_no, __func__, mbx_cmd[0]); in qla4xxx_mailbox_command()
255 ha->mailbox_timeout_count++; in qla4xxx_mailbox_command()
259 …ql4_printk(KERN_WARNING, ha, "scsi%ld: %s: FAILED, MBOX CMD = %08X, MBOX STS = %08X %08X %08X %08X… in qla4xxx_mailbox_command()
260 ha->host_no, __func__, mbx_cmd[0], mbx_sts[0], in qla4xxx_mailbox_command()
265 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla4xxx_mailbox_command()
268 mutex_lock(&ha->mbox_sem); in qla4xxx_mailbox_command()
269 clear_bit(AF_MBOX_COMMAND, &ha->flags); in qla4xxx_mailbox_command()
270 mutex_unlock(&ha->mbox_sem); in qla4xxx_mailbox_command()
271 clear_bit(AF_MBOX_COMMAND_DONE, &ha->flags); in qla4xxx_mailbox_command()
284 int qla4xxx_get_minidump_template(struct scsi_qla_host *ha, in qla4xxx_get_minidump_template() argument
298 mbox_cmd[4] = ha->fw_dump_tmplt_size; in qla4xxx_get_minidump_template()
301 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 2, &mbox_cmd[0], in qla4xxx_get_minidump_template()
304 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_get_minidump_template()
306 ha->host_no, __func__, mbox_cmd[0], in qla4xxx_get_minidump_template()
316 int qla4xxx_req_template_size(struct scsi_qla_host *ha) in qla4xxx_req_template_size() argument
328 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 8, &mbox_cmd[0], in qla4xxx_req_template_size()
331 ha->fw_dump_tmplt_size = mbox_sts[1]; in qla4xxx_req_template_size()
332 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_req_template_size()
337 if (ha->fw_dump_tmplt_size == 0) in qla4xxx_req_template_size()
340 ql4_printk(KERN_WARNING, ha, in qla4xxx_req_template_size()
349 void qla4xxx_mailbox_premature_completion(struct scsi_qla_host *ha) in qla4xxx_mailbox_premature_completion() argument
351 set_bit(AF_FW_RECOVERY, &ha->flags); in qla4xxx_mailbox_premature_completion()
352 ql4_printk(KERN_INFO, ha, "scsi%ld: %s: set FW RECOVERY!\n", in qla4xxx_mailbox_premature_completion()
353 ha->host_no, __func__); in qla4xxx_mailbox_premature_completion()
355 if (test_bit(AF_MBOX_COMMAND, &ha->flags)) { in qla4xxx_mailbox_premature_completion()
356 if (test_bit(AF_MBOX_COMMAND_NOPOLL, &ha->flags)) { in qla4xxx_mailbox_premature_completion()
357 complete(&ha->mbx_intr_comp); in qla4xxx_mailbox_premature_completion()
358 ql4_printk(KERN_INFO, ha, "scsi%ld: %s: Due to fw " in qla4xxx_mailbox_premature_completion()
360 "mbx cmd\n", ha->host_no, __func__); in qla4xxx_mailbox_premature_completion()
363 set_bit(AF_MBOX_COMMAND_DONE, &ha->flags); in qla4xxx_mailbox_premature_completion()
364 ql4_printk(KERN_INFO, ha, "scsi%ld: %s: Due to fw " in qla4xxx_mailbox_premature_completion()
366 "polling mbx cmd\n", ha->host_no, __func__); in qla4xxx_mailbox_premature_completion()
372 qla4xxx_set_ifcb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, in qla4xxx_set_ifcb() argument
378 if (is_qla8022(ha)) in qla4xxx_set_ifcb()
379 qla4_82xx_wr_32(ha, ha->nx_db_wr_ptr, 0); in qla4xxx_set_ifcb()
387 if (qla4xxx_mailbox_command(ha, 6, 6, mbox_cmd, mbox_sts) != in qla4xxx_set_ifcb()
392 ha->host_no, __func__, mbox_sts[0])); in qla4xxx_set_ifcb()
399 qla4xxx_get_ifcb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, in qla4xxx_get_ifcb() argument
409 if (qla4xxx_mailbox_command(ha, 5, 5, mbox_cmd, mbox_sts) != in qla4xxx_get_ifcb()
414 ha->host_no, __func__, mbox_sts[0])); in qla4xxx_get_ifcb()
453 qla4xxx_update_local_ip(struct scsi_qla_host *ha, in qla4xxx_update_local_ip() argument
456 ha->ip_config.tcp_options = le16_to_cpu(init_fw_cb->ipv4_tcp_opts); in qla4xxx_update_local_ip()
457 ha->ip_config.ipv4_options = le16_to_cpu(init_fw_cb->ipv4_ip_opts); in qla4xxx_update_local_ip()
458 ha->ip_config.ipv4_addr_state = in qla4xxx_update_local_ip()
460 ha->ip_config.eth_mtu_size = in qla4xxx_update_local_ip()
462 ha->ip_config.ipv4_port = le16_to_cpu(init_fw_cb->ipv4_port); in qla4xxx_update_local_ip()
464 if (ha->acb_version == ACB_SUPPORTED) { in qla4xxx_update_local_ip()
465 ha->ip_config.ipv6_options = le16_to_cpu(init_fw_cb->ipv6_opts); in qla4xxx_update_local_ip()
466 ha->ip_config.ipv6_addl_options = in qla4xxx_update_local_ip()
468 ha->ip_config.ipv6_tcp_options = in qla4xxx_update_local_ip()
473 memcpy(ha->ip_config.ip_address, init_fw_cb->ipv4_addr, in qla4xxx_update_local_ip()
474 min(sizeof(ha->ip_config.ip_address), in qla4xxx_update_local_ip()
476 memcpy(ha->ip_config.subnet_mask, init_fw_cb->ipv4_subnet, in qla4xxx_update_local_ip()
477 min(sizeof(ha->ip_config.subnet_mask), in qla4xxx_update_local_ip()
479 memcpy(ha->ip_config.gateway, init_fw_cb->ipv4_gw_addr, in qla4xxx_update_local_ip()
480 min(sizeof(ha->ip_config.gateway), in qla4xxx_update_local_ip()
483 ha->ip_config.ipv4_vlan_tag = be16_to_cpu(init_fw_cb->ipv4_vlan_tag); in qla4xxx_update_local_ip()
484 ha->ip_config.control = init_fw_cb->control; in qla4xxx_update_local_ip()
485 ha->ip_config.tcp_wsf = init_fw_cb->ipv4_tcp_wsf; in qla4xxx_update_local_ip()
486 ha->ip_config.ipv4_tos = init_fw_cb->ipv4_tos; in qla4xxx_update_local_ip()
487 ha->ip_config.ipv4_cache_id = init_fw_cb->ipv4_cacheid; in qla4xxx_update_local_ip()
488 ha->ip_config.ipv4_alt_cid_len = init_fw_cb->ipv4_dhcp_alt_cid_len; in qla4xxx_update_local_ip()
489 memcpy(ha->ip_config.ipv4_alt_cid, init_fw_cb->ipv4_dhcp_alt_cid, in qla4xxx_update_local_ip()
490 min(sizeof(ha->ip_config.ipv4_alt_cid), in qla4xxx_update_local_ip()
492 ha->ip_config.ipv4_vid_len = init_fw_cb->ipv4_dhcp_vid_len; in qla4xxx_update_local_ip()
493 memcpy(ha->ip_config.ipv4_vid, init_fw_cb->ipv4_dhcp_vid, in qla4xxx_update_local_ip()
494 min(sizeof(ha->ip_config.ipv4_vid), in qla4xxx_update_local_ip()
496 ha->ip_config.ipv4_ttl = init_fw_cb->ipv4_ttl; in qla4xxx_update_local_ip()
497 ha->ip_config.def_timeout = le16_to_cpu(init_fw_cb->def_timeout); in qla4xxx_update_local_ip()
498 ha->ip_config.abort_timer = init_fw_cb->abort_timer; in qla4xxx_update_local_ip()
499 ha->ip_config.iscsi_options = le16_to_cpu(init_fw_cb->iscsi_opts); in qla4xxx_update_local_ip()
500 ha->ip_config.iscsi_max_pdu_size = in qla4xxx_update_local_ip()
502 ha->ip_config.iscsi_first_burst_len = in qla4xxx_update_local_ip()
504 ha->ip_config.iscsi_max_outstnd_r2t = in qla4xxx_update_local_ip()
506 ha->ip_config.iscsi_max_burst_len = in qla4xxx_update_local_ip()
508 memcpy(ha->ip_config.iscsi_name, init_fw_cb->iscsi_name, in qla4xxx_update_local_ip()
509 min(sizeof(ha->ip_config.iscsi_name), in qla4xxx_update_local_ip()
512 if (is_ipv6_enabled(ha)) { in qla4xxx_update_local_ip()
514 ha->ip_config.ipv6_link_local_state = in qla4xxx_update_local_ip()
516 ha->ip_config.ipv6_addr0_state = in qla4xxx_update_local_ip()
518 ha->ip_config.ipv6_addr1_state = in qla4xxx_update_local_ip()
523 ha->ip_config.ipv6_default_router_state = in qla4xxx_update_local_ip()
527 ha->ip_config.ipv6_default_router_state = in qla4xxx_update_local_ip()
531 ha->ip_config.ipv6_default_router_state = in qla4xxx_update_local_ip()
535 ha->ip_config.ipv6_default_router_state = in qla4xxx_update_local_ip()
539 ha->ip_config.ipv6_default_router_state = in qla4xxx_update_local_ip()
543 ha->ip_config.ipv6_link_local_addr.in6_u.u6_addr8[0] = 0xFE; in qla4xxx_update_local_ip()
544 ha->ip_config.ipv6_link_local_addr.in6_u.u6_addr8[1] = 0x80; in qla4xxx_update_local_ip()
546 memcpy(&ha->ip_config.ipv6_link_local_addr.in6_u.u6_addr8[8], in qla4xxx_update_local_ip()
548 min(sizeof(ha->ip_config.ipv6_link_local_addr)/2, in qla4xxx_update_local_ip()
550 memcpy(&ha->ip_config.ipv6_addr0, init_fw_cb->ipv6_addr0, in qla4xxx_update_local_ip()
551 min(sizeof(ha->ip_config.ipv6_addr0), in qla4xxx_update_local_ip()
553 memcpy(&ha->ip_config.ipv6_addr1, init_fw_cb->ipv6_addr1, in qla4xxx_update_local_ip()
554 min(sizeof(ha->ip_config.ipv6_addr1), in qla4xxx_update_local_ip()
556 memcpy(&ha->ip_config.ipv6_default_router_addr, in qla4xxx_update_local_ip()
558 min(sizeof(ha->ip_config.ipv6_default_router_addr), in qla4xxx_update_local_ip()
560 ha->ip_config.ipv6_vlan_tag = in qla4xxx_update_local_ip()
562 ha->ip_config.ipv6_port = le16_to_cpu(init_fw_cb->ipv6_port); in qla4xxx_update_local_ip()
563 ha->ip_config.ipv6_cache_id = init_fw_cb->ipv6_cache_id; in qla4xxx_update_local_ip()
564 ha->ip_config.ipv6_flow_lbl = in qla4xxx_update_local_ip()
566 ha->ip_config.ipv6_traffic_class = in qla4xxx_update_local_ip()
568 ha->ip_config.ipv6_hop_limit = init_fw_cb->ipv6_hop_limit; in qla4xxx_update_local_ip()
569 ha->ip_config.ipv6_nd_reach_time = in qla4xxx_update_local_ip()
571 ha->ip_config.ipv6_nd_rexmit_timer = in qla4xxx_update_local_ip()
573 ha->ip_config.ipv6_nd_stale_timeout = in qla4xxx_update_local_ip()
575 ha->ip_config.ipv6_dup_addr_detect_count = in qla4xxx_update_local_ip()
577 ha->ip_config.ipv6_gw_advrt_mtu = in qla4xxx_update_local_ip()
579 ha->ip_config.ipv6_tcp_wsf = init_fw_cb->ipv6_tcp_wsf; in qla4xxx_update_local_ip()
584 qla4xxx_update_local_ifcb(struct scsi_qla_host *ha, in qla4xxx_update_local_ifcb() argument
590 if (qla4xxx_get_ifcb(ha, mbox_cmd, mbox_sts, init_fw_cb_dma) in qla4xxx_update_local_ifcb()
594 ha->host_no, __func__)); in qla4xxx_update_local_ifcb()
601 ha->acb_version = init_fw_cb->acb_version; in qla4xxx_update_local_ifcb()
602 ha->firmware_options = le16_to_cpu(init_fw_cb->fw_options); in qla4xxx_update_local_ifcb()
603 ha->heartbeat_interval = init_fw_cb->hb_interval; in qla4xxx_update_local_ifcb()
604 memcpy(ha->name_string, init_fw_cb->iscsi_name, in qla4xxx_update_local_ifcb()
605 min(sizeof(ha->name_string), in qla4xxx_update_local_ifcb()
607 ha->def_timeout = le16_to_cpu(init_fw_cb->def_timeout); in qla4xxx_update_local_ifcb()
611 qla4xxx_update_local_ip(ha, init_fw_cb); in qla4xxx_update_local_ifcb()
620 int qla4xxx_initialize_fw_cb(struct scsi_qla_host * ha) in qla4xxx_initialize_fw_cb() argument
628 init_fw_cb = dma_alloc_coherent(&ha->pdev->dev, in qla4xxx_initialize_fw_cb()
633 ha->host_no, __func__)); in qla4xxx_initialize_fw_cb()
642 if (qla4xxx_get_ifcb(ha, &mbox_cmd[0], &mbox_sts[0], init_fw_cb_dma) != in qla4xxx_initialize_fw_cb()
644 dma_free_coherent(&ha->pdev->dev, in qla4xxx_initialize_fw_cb()
651 init_fw_cb->rqq_consumer_idx = cpu_to_le16(ha->request_out); in qla4xxx_initialize_fw_cb()
652 init_fw_cb->compq_producer_idx = cpu_to_le16(ha->response_in); in qla4xxx_initialize_fw_cb()
655 init_fw_cb->rqq_addr_lo = cpu_to_le32(LSDW(ha->request_dma)); in qla4xxx_initialize_fw_cb()
656 init_fw_cb->rqq_addr_hi = cpu_to_le32(MSDW(ha->request_dma)); in qla4xxx_initialize_fw_cb()
657 init_fw_cb->compq_addr_lo = cpu_to_le32(LSDW(ha->response_dma)); in qla4xxx_initialize_fw_cb()
658 init_fw_cb->compq_addr_hi = cpu_to_le32(MSDW(ha->response_dma)); in qla4xxx_initialize_fw_cb()
659 init_fw_cb->shdwreg_addr_lo = cpu_to_le32(LSDW(ha->shadow_regs_dma)); in qla4xxx_initialize_fw_cb()
660 init_fw_cb->shdwreg_addr_hi = cpu_to_le32(MSDW(ha->shadow_regs_dma)); in qla4xxx_initialize_fw_cb()
667 if (is_qla80XX(ha)) in qla4xxx_initialize_fw_cb()
679 if (qla4xxx_set_ifcb(ha, &mbox_cmd[0], &mbox_sts[0], init_fw_cb_dma) in qla4xxx_initialize_fw_cb()
683 ha->host_no, __func__)); in qla4xxx_initialize_fw_cb()
687 if (qla4xxx_update_local_ifcb(ha, &mbox_cmd[0], &mbox_sts[0], in qla4xxx_initialize_fw_cb()
690 ha->host_no, __func__)); in qla4xxx_initialize_fw_cb()
696 dma_free_coherent(&ha->pdev->dev, sizeof(struct addr_ctrl_blk), in qla4xxx_initialize_fw_cb()
706 int qla4xxx_get_dhcp_ip_address(struct scsi_qla_host * ha) in qla4xxx_get_dhcp_ip_address() argument
713 init_fw_cb = dma_alloc_coherent(&ha->pdev->dev, in qla4xxx_get_dhcp_ip_address()
717 printk("scsi%ld: %s: Unable to alloc init_cb\n", ha->host_no, in qla4xxx_get_dhcp_ip_address()
724 if (qla4xxx_get_ifcb(ha, &mbox_cmd[0], &mbox_sts[0], init_fw_cb_dma) != in qla4xxx_get_dhcp_ip_address()
727 ha->host_no, __func__)); in qla4xxx_get_dhcp_ip_address()
728 dma_free_coherent(&ha->pdev->dev, in qla4xxx_get_dhcp_ip_address()
735 qla4xxx_update_local_ip(ha, init_fw_cb); in qla4xxx_get_dhcp_ip_address()
736 dma_free_coherent(&ha->pdev->dev, sizeof(struct addr_ctrl_blk), in qla4xxx_get_dhcp_ip_address()
746 int qla4xxx_get_firmware_state(struct scsi_qla_host * ha) in qla4xxx_get_firmware_state() argument
757 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 4, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_firmware_state()
760 "status %04X\n", ha->host_no, __func__, in qla4xxx_get_firmware_state()
764 ha->firmware_state = mbox_sts[1]; in qla4xxx_get_firmware_state()
765 ha->board_id = mbox_sts[2]; in qla4xxx_get_firmware_state()
766 ha->addl_fw_state = mbox_sts[3]; in qla4xxx_get_firmware_state()
768 ha->host_no, __func__, ha->firmware_state);) in qla4xxx_get_firmware_state()
777 int qla4xxx_get_firmware_status(struct scsi_qla_host * ha) in qla4xxx_get_firmware_status() argument
788 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 3, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_firmware_status()
791 "status %04X\n", ha->host_no, __func__, in qla4xxx_get_firmware_status()
797 ha->iocb_hiwat = mbox_sts[2]; in qla4xxx_get_firmware_status()
798 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_get_firmware_status()
800 ha->iocb_hiwat)); in qla4xxx_get_firmware_status()
802 if (ha->iocb_hiwat > IOCB_HIWAT_CUSHION) in qla4xxx_get_firmware_status()
803 ha->iocb_hiwat -= IOCB_HIWAT_CUSHION; in qla4xxx_get_firmware_status()
808 if (ha->iocb_hiwat == 0) { in qla4xxx_get_firmware_status()
809 ha->iocb_hiwat = REQUEST_QUEUE_DEPTH / 4; in qla4xxx_get_firmware_status()
810 DEBUG2(ql4_printk(KERN_WARNING, ha, in qla4xxx_get_firmware_status()
812 ha->iocb_hiwat)); in qla4xxx_get_firmware_status()
827 int qla4xxx_get_fwddb_entry(struct scsi_qla_host *ha, in qla4xxx_get_fwddb_entry() argument
846 ha->host_no, __func__, fw_ddb_index)); in qla4xxx_get_fwddb_entry()
860 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 7, &mbox_cmd[0], &mbox_sts[0]) == in qla4xxx_get_fwddb_entry()
863 " with status 0x%04X\n", ha->host_no, __func__, in qla4xxx_get_fwddb_entry()
869 ha->host_no, __func__, fw_ddb_index, in qla4xxx_get_fwddb_entry()
876 ql4_printk(KERN_INFO, ha, "%s: DDB[%d] MB0 %04x Tot %d " in qla4xxx_get_fwddb_entry()
885 ql4_printk(KERN_INFO, ha, "%s: DDB[%d] MB0 %04x Tot %d " in qla4xxx_get_fwddb_entry()
921 int qla4xxx_conn_open(struct scsi_qla_host *ha, uint16_t fw_ddb_index) in qla4xxx_conn_open() argument
933 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 2, &mbox_cmd[0], in qla4xxx_conn_open()
935 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_conn_open()
951 int qla4xxx_set_ddb_entry(struct scsi_qla_host * ha, uint16_t fw_ddb_index, in qla4xxx_set_ddb_entry() argument
970 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 5, &mbox_cmd[0], in qla4xxx_set_ddb_entry()
975 ha->host_no, __func__, status, mbox_sts[0], mbox_sts[4]);) in qla4xxx_set_ddb_entry()
980 int qla4xxx_session_logout_ddb(struct scsi_qla_host *ha, in qla4xxx_session_logout_ddb() argument
994 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 2, &mbox_cmd[0], in qla4xxx_session_logout_ddb()
997 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_session_logout_ddb()
1016 void qla4xxx_get_crash_record(struct scsi_qla_host * ha) in qla4xxx_get_crash_record() argument
1030 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 5, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_crash_record()
1033 ha->host_no, __func__)); in qla4xxx_get_crash_record()
1039 ha->host_no, __func__)); in qla4xxx_get_crash_record()
1044 crash_record = dma_alloc_coherent(&ha->pdev->dev, crash_record_size, in qla4xxx_get_crash_record()
1058 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 5, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_crash_record()
1066 dma_free_coherent(&ha->pdev->dev, crash_record_size, in qla4xxx_get_crash_record()
1074 void qla4xxx_get_conn_event_log(struct scsi_qla_host * ha) in qla4xxx_get_conn_event_log() argument
1092 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 5, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_conn_event_log()
1101 event_log = dma_alloc_coherent(&ha->pdev->dev, event_log_size, in qla4xxx_get_conn_event_log()
1114 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 5, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_conn_event_log()
1117 "log!\n", ha->host_no, __func__)); in qla4xxx_get_conn_event_log()
1131 ha->host_no, num_valid_entries)); in qla4xxx_get_conn_event_log()
1160 dma_free_coherent(&ha->pdev->dev, event_log_size, event_log, in qla4xxx_get_conn_event_log()
1173 int qla4xxx_abort_task(struct scsi_qla_host *ha, struct srb *srb) in qla4xxx_abort_task() argument
1189 spin_lock_irqsave(&ha->hardware_lock, flags); in qla4xxx_abort_task()
1191 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla4xxx_abort_task()
1203 qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 5, &mbox_cmd[0], in qla4xxx_abort_task()
1210 ha->host_no, cmd->device->id, cmd->device->lun, mbox_sts[0], in qla4xxx_abort_task()
1227 int qla4xxx_reset_lun(struct scsi_qla_host * ha, struct ddb_entry * ddb_entry, in qla4xxx_reset_lun() argument
1235 DEBUG2(printk("scsi%ld:%d:%llu: lun reset issued\n", ha->host_no, in qla4xxx_reset_lun()
1256 qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 1, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_reset_lun()
1274 int qla4xxx_reset_target(struct scsi_qla_host *ha, in qla4xxx_reset_target() argument
1281 DEBUG2(printk("scsi%ld:%d: target reset issued\n", ha->host_no, in qla4xxx_reset_target()
1295 qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 1, &mbox_cmd[0], in qla4xxx_reset_target()
1304 int qla4xxx_get_flash(struct scsi_qla_host * ha, dma_addr_t dma_addr, in qla4xxx_get_flash() argument
1319 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 2, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_flash()
1322 "status %04X %04X, offset %08x, len %08x\n", ha->host_no, in qla4xxx_get_flash()
1337 int qla4xxx_about_firmware(struct scsi_qla_host *ha) in qla4xxx_about_firmware() argument
1345 about_fw = dma_alloc_coherent(&ha->pdev->dev, in qla4xxx_about_firmware()
1349 DEBUG2(ql4_printk(KERN_ERR, ha, "%s: Unable to alloc memory " in qla4xxx_about_firmware()
1363 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, MBOX_REG_COUNT, in qla4xxx_about_firmware()
1366 DEBUG2(ql4_printk(KERN_WARNING, ha, "%s: MBOX_CMD_ABOUT_FW " in qla4xxx_about_firmware()
1373 ha->fw_info.fw_major = le16_to_cpu(about_fw->fw_major); in qla4xxx_about_firmware()
1374 ha->fw_info.fw_minor = le16_to_cpu(about_fw->fw_minor); in qla4xxx_about_firmware()
1375 ha->fw_info.fw_patch = le16_to_cpu(about_fw->fw_patch); in qla4xxx_about_firmware()
1376 ha->fw_info.fw_build = le16_to_cpu(about_fw->fw_build); in qla4xxx_about_firmware()
1377 memcpy(ha->fw_info.fw_build_date, about_fw->fw_build_date, in qla4xxx_about_firmware()
1379 memcpy(ha->fw_info.fw_build_time, about_fw->fw_build_time, in qla4xxx_about_firmware()
1381 strcpy((char *)ha->fw_info.fw_build_user, in qla4xxx_about_firmware()
1383 ha->fw_info.fw_load_source = le16_to_cpu(about_fw->fw_load_source); in qla4xxx_about_firmware()
1384 ha->fw_info.iscsi_major = le16_to_cpu(about_fw->iscsi_major); in qla4xxx_about_firmware()
1385 ha->fw_info.iscsi_minor = le16_to_cpu(about_fw->iscsi_minor); in qla4xxx_about_firmware()
1386 ha->fw_info.bootload_major = le16_to_cpu(about_fw->bootload_major); in qla4xxx_about_firmware()
1387 ha->fw_info.bootload_minor = le16_to_cpu(about_fw->bootload_minor); in qla4xxx_about_firmware()
1388 ha->fw_info.bootload_patch = le16_to_cpu(about_fw->bootload_patch); in qla4xxx_about_firmware()
1389 ha->fw_info.bootload_build = le16_to_cpu(about_fw->bootload_build); in qla4xxx_about_firmware()
1390 strcpy((char *)ha->fw_info.extended_timestamp, in qla4xxx_about_firmware()
1393 ha->fw_uptime_secs = le32_to_cpu(mbox_sts[5]); in qla4xxx_about_firmware()
1394 ha->fw_uptime_msecs = le32_to_cpu(mbox_sts[6]); in qla4xxx_about_firmware()
1398 dma_free_coherent(&ha->pdev->dev, sizeof(struct about_fw_info), in qla4xxx_about_firmware()
1403 int qla4xxx_get_default_ddb(struct scsi_qla_host *ha, uint32_t options, in qla4xxx_get_default_ddb() argument
1417 if (qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 1, &mbox_cmd[0], &mbox_sts[0]) != in qla4xxx_get_default_ddb()
1420 ha->host_no, __func__, mbox_sts[0])); in qla4xxx_get_default_ddb()
1426 int qla4xxx_req_ddb_entry(struct scsi_qla_host *ha, uint32_t ddb_index, in qla4xxx_req_ddb_entry() argument
1439 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 1, &mbox_cmd[0], in qla4xxx_req_ddb_entry()
1442 DEBUG2(ql4_printk(KERN_ERR, ha, "%s: failed status %04X\n", in qla4xxx_req_ddb_entry()
1450 int qla4xxx_clear_ddb_entry(struct scsi_qla_host *ha, uint32_t ddb_index) in qla4xxx_clear_ddb_entry() argument
1462 status = qla4xxx_mailbox_command(ha, 2, 1, &mbox_cmd[0], in qla4xxx_clear_ddb_entry()
1465 DEBUG2(ql4_printk(KERN_ERR, ha, "%s: failed status %04X\n", in qla4xxx_clear_ddb_entry()
1472 int qla4xxx_set_flash(struct scsi_qla_host *ha, dma_addr_t dma_addr, in qla4xxx_set_flash() argument
1489 status = qla4xxx_mailbox_command(ha, 6, 2, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_set_flash()
1491 DEBUG2(ql4_printk(KERN_WARNING, ha, "%s: MBOX_CMD_WRITE_FLASH " in qla4xxx_set_flash()
1498 int qla4xxx_bootdb_by_index(struct scsi_qla_host *ha, in qla4xxx_bootdb_by_index() argument
1512 DEBUG2(ql4_printk(KERN_ERR, ha, in qla4xxx_bootdb_by_index()
1518 if (qla4xxx_get_flash(ha, fw_ddb_entry_dma, dev_db_start_offset, in qla4xxx_bootdb_by_index()
1520 ql4_printk(KERN_ERR, ha, "scsi%ld: %s: Get Flash" in qla4xxx_bootdb_by_index()
1521 "failed\n", ha->host_no, __func__); in qla4xxx_bootdb_by_index()
1532 int qla4xxx_flashdb_by_index(struct scsi_qla_host *ha, in qla4xxx_flashdb_by_index() argument
1542 if (is_qla40XX(ha)) { in qla4xxx_flashdb_by_index()
1547 (ha->hw.flt_region_ddb << 2); in qla4xxx_flashdb_by_index()
1551 if (ha->port_num == 1) in qla4xxx_flashdb_by_index()
1552 dev_db_start_offset += (ha->hw.flt_ddb_size / 2); in qla4xxx_flashdb_by_index()
1555 (ha->hw.flt_ddb_size / 2); in qla4xxx_flashdb_by_index()
1561 DEBUG2(ql4_printk(KERN_ERR, ha, in qla4xxx_flashdb_by_index()
1567 if (qla4xxx_get_flash(ha, fw_ddb_entry_dma, dev_db_start_offset, in qla4xxx_flashdb_by_index()
1569 ql4_printk(KERN_ERR, ha, "scsi%ld: %s: Get Flash failed\n", in qla4xxx_flashdb_by_index()
1570 ha->host_no, __func__); in qla4xxx_flashdb_by_index()
1581 int qla4xxx_get_chap(struct scsi_qla_host *ha, char *username, char *password, in qla4xxx_get_chap() argument
1590 chap_table = dma_pool_alloc(ha->chap_dma_pool, GFP_KERNEL, &chap_dma); in qla4xxx_get_chap()
1597 if (is_qla40XX(ha)) in qla4xxx_get_chap()
1600 offset = FLASH_RAW_ACCESS_ADDR + (ha->hw.flt_region_chap << 2); in qla4xxx_get_chap()
1604 if (ha->port_num == 1) in qla4xxx_get_chap()
1605 offset += (ha->hw.flt_chap_size / 2); in qla4xxx_get_chap()
1609 rval = qla4xxx_get_flash(ha, chap_dma, offset, chap_size); in qla4xxx_get_chap()
1615 DEBUG2(ql4_printk(KERN_INFO, ha, "Chap Cookie: x%x\n", in qla4xxx_get_chap()
1619 ql4_printk(KERN_ERR, ha, "No valid chap entry found\n"); in qla4xxx_get_chap()
1628 dma_pool_free(ha->chap_dma_pool, chap_table, chap_dma); in qla4xxx_get_chap()
1644 int qla4xxx_set_chap(struct scsi_qla_host *ha, char *username, char *password, in qla4xxx_set_chap() argument
1654 chap_table = dma_pool_alloc(ha->chap_dma_pool, GFP_KERNEL, &chap_dma); in qla4xxx_set_chap()
1670 if (is_qla40XX(ha)) { in qla4xxx_set_chap()
1676 chap_size = ha->hw.flt_chap_size / 2; in qla4xxx_set_chap()
1677 offset = FLASH_RAW_ACCESS_ADDR + (ha->hw.flt_region_chap << 2); in qla4xxx_set_chap()
1678 if (ha->port_num == 1) in qla4xxx_set_chap()
1683 rval = qla4xxx_set_flash(ha, chap_dma, offset, in qla4xxx_set_chap()
1687 if (rval == QLA_SUCCESS && ha->chap_list) { in qla4xxx_set_chap()
1689 memcpy((struct ql4_chap_table *)ha->chap_list + idx, in qla4xxx_set_chap()
1692 dma_pool_free(ha->chap_dma_pool, chap_table, chap_dma); in qla4xxx_set_chap()
1701 int qla4xxx_get_uni_chap_at_index(struct scsi_qla_host *ha, char *username, in qla4xxx_get_uni_chap_at_index() argument
1708 if (!ha->chap_list) { in qla4xxx_get_uni_chap_at_index()
1709 ql4_printk(KERN_ERR, ha, "Do not have CHAP table cache\n"); in qla4xxx_get_uni_chap_at_index()
1715 ql4_printk(KERN_ERR, ha, "No memory for username & secret\n"); in qla4xxx_get_uni_chap_at_index()
1720 if (is_qla80XX(ha)) in qla4xxx_get_uni_chap_at_index()
1721 max_chap_entries = (ha->hw.flt_chap_size / 2) / in qla4xxx_get_uni_chap_at_index()
1727 ql4_printk(KERN_ERR, ha, "Invalid Chap index\n"); in qla4xxx_get_uni_chap_at_index()
1732 mutex_lock(&ha->chap_sem); in qla4xxx_get_uni_chap_at_index()
1733 chap_table = (struct ql4_chap_table *)ha->chap_list + chap_index; in qla4xxx_get_uni_chap_at_index()
1740 ql4_printk(KERN_ERR, ha, "Unidirectional entry not set\n"); in qla4xxx_get_uni_chap_at_index()
1751 mutex_unlock(&ha->chap_sem); in qla4xxx_get_uni_chap_at_index()
1768 int qla4xxx_get_chap_index(struct scsi_qla_host *ha, char *username, in qla4xxx_get_chap_index() argument
1777 if (is_qla80XX(ha)) in qla4xxx_get_chap_index()
1778 max_chap_entries = (ha->hw.flt_chap_size / 2) / in qla4xxx_get_chap_index()
1783 if (!ha->chap_list) { in qla4xxx_get_chap_index()
1784 ql4_printk(KERN_ERR, ha, "Do not have CHAP table cache\n"); in qla4xxx_get_chap_index()
1789 ql4_printk(KERN_ERR, ha, "Do not have username and psw\n"); in qla4xxx_get_chap_index()
1793 mutex_lock(&ha->chap_sem); in qla4xxx_get_chap_index()
1795 chap_table = (struct ql4_chap_table *)ha->chap_list + i; in qla4xxx_get_chap_index()
1823 rval = qla4xxx_set_chap(ha, username, password, in qla4xxx_get_chap_index()
1831 mutex_unlock(&ha->chap_sem); in qla4xxx_get_chap_index()
1838 int qla4xxx_conn_close_sess_logout(struct scsi_qla_host *ha, in qla4xxx_conn_close_sess_logout() argument
1855 status = qla4xxx_mailbox_command(ha, 4, 2, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_conn_close_sess_logout()
1857 DEBUG2(ql4_printk(KERN_WARNING, ha, "%s: MBOX_CMD_CONN_CLOSE " in qla4xxx_conn_close_sess_logout()
1871 static int qla4_84xx_extend_idc_tmo(struct scsi_qla_host *ha, uint32_t ext_tmo) in qla4_84xx_extend_idc_tmo() argument
1882 mbox_cmd[1] = ((ha->idc_info.request_desc & 0xfffff0ff) | in qla4_84xx_extend_idc_tmo()
1884 mbox_cmd[2] = ha->idc_info.info1; in qla4_84xx_extend_idc_tmo()
1885 mbox_cmd[3] = ha->idc_info.info2; in qla4_84xx_extend_idc_tmo()
1886 mbox_cmd[4] = ha->idc_info.info3; in qla4_84xx_extend_idc_tmo()
1888 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, MBOX_REG_COUNT, in qla4_84xx_extend_idc_tmo()
1891 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4_84xx_extend_idc_tmo()
1893 ha->host_no, __func__, mbox_sts[0])); in qla4_84xx_extend_idc_tmo()
1896 ql4_printk(KERN_INFO, ha, "%s: IDC timeout extended by %d secs\n", in qla4_84xx_extend_idc_tmo()
1903 int qla4xxx_disable_acb(struct scsi_qla_host *ha) in qla4xxx_disable_acb() argument
1914 status = qla4xxx_mailbox_command(ha, 8, 5, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_disable_acb()
1916 DEBUG2(ql4_printk(KERN_WARNING, ha, "%s: MBOX_CMD_DISABLE_ACB " in qla4xxx_disable_acb()
1920 if (is_qla8042(ha) && in qla4xxx_disable_acb()
1921 test_bit(DPC_POST_IDC_ACK, &ha->dpc_flags) && in qla4xxx_disable_acb()
1930 qla4_84xx_extend_idc_tmo(ha, IDC_EXTEND_TOV); in qla4xxx_disable_acb()
1931 if (!wait_for_completion_timeout(&ha->disable_acb_comp, in qla4xxx_disable_acb()
1933 ql4_printk(KERN_WARNING, ha, "%s: Disable ACB Completion not received\n", in qla4xxx_disable_acb()
1941 int qla4xxx_get_acb(struct scsi_qla_host *ha, dma_addr_t acb_dma, in qla4xxx_get_acb() argument
1957 status = qla4xxx_mailbox_command(ha, 5, 5, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_get_acb()
1959 DEBUG2(ql4_printk(KERN_WARNING, ha, "%s: MBOX_CMD_GET_ACB " in qla4xxx_get_acb()
1966 int qla4xxx_set_acb(struct scsi_qla_host *ha, uint32_t *mbox_cmd, in qla4xxx_set_acb() argument
1979 status = qla4xxx_mailbox_command(ha, 5, 5, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_set_acb()
1981 DEBUG2(ql4_printk(KERN_WARNING, ha, "%s: MBOX_CMD_SET_ACB " in qla4xxx_set_acb()
1988 int qla4xxx_set_param_ddbentry(struct scsi_qla_host *ha, in qla4xxx_set_param_ddbentry() argument
2008 fw_ddb_entry = dma_alloc_coherent(&ha->pdev->dev, sizeof(*fw_ddb_entry), in qla4xxx_set_param_ddbentry()
2011 DEBUG2(ql4_printk(KERN_ERR, ha, in qla4xxx_set_param_ddbentry()
2026 status = qla4xxx_get_default_ddb(ha, options, fw_ddb_entry_dma); in qla4xxx_set_param_ddbentry()
2035 DEBUG2(ql4_printk(KERN_INFO, ha, "ISID [%02x%02x%02x%02x%02x%02x]\n", in qla4xxx_set_param_ddbentry()
2061 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_set_param_ddbentry()
2071 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4xxx_set_param_ddbentry()
2076 ql4_printk(KERN_ERR, ha, in qla4xxx_set_param_ddbentry()
2088 rval = qla4xxx_get_chap_index(ha, sess->username, in qla4xxx_set_param_ddbentry()
2103 rval = qla4xxx_get_chap_index(ha, sess->username_in, in qla4xxx_set_param_ddbentry()
2142 status = qla4xxx_set_ddb_entry(ha, ddb_entry->fw_ddb_index, in qla4xxx_set_param_ddbentry()
2148 dma_free_coherent(&ha->pdev->dev, sizeof(*fw_ddb_entry), in qla4xxx_set_param_ddbentry()
2154 int qla4xxx_get_mgmt_data(struct scsi_qla_host *ha, uint16_t fw_ddb_index, in qla4xxx_get_mgmt_data() argument
2169 status = qla4xxx_mailbox_command(ha, 5, 1, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_get_mgmt_data()
2171 DEBUG2(ql4_printk(KERN_WARNING, ha, in qla4xxx_get_mgmt_data()
2179 int qla4xxx_get_ip_state(struct scsi_qla_host *ha, uint32_t acb_idx, in qla4xxx_get_ip_state() argument
2192 status = qla4xxx_mailbox_command(ha, 3, 8, &mbox_cmd[0], &mbox_sts[0]); in qla4xxx_get_ip_state()
2194 DEBUG2(ql4_printk(KERN_WARNING, ha, "%s: " in qla4xxx_get_ip_state()
2202 int qla4xxx_get_nvram(struct scsi_qla_host *ha, dma_addr_t nvram_dma, in qla4xxx_get_nvram() argument
2218 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 1, &mbox_cmd[0], in qla4xxx_get_nvram()
2221 DEBUG2(ql4_printk(KERN_ERR, ha, "scsi%ld: %s: failed " in qla4xxx_get_nvram()
2222 "status %04X\n", ha->host_no, __func__, in qla4xxx_get_nvram()
2228 int qla4xxx_set_nvram(struct scsi_qla_host *ha, dma_addr_t nvram_dma, in qla4xxx_set_nvram() argument
2244 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 1, &mbox_cmd[0], in qla4xxx_set_nvram()
2247 DEBUG2(ql4_printk(KERN_ERR, ha, "scsi%ld: %s: failed " in qla4xxx_set_nvram()
2248 "status %04X\n", ha->host_no, __func__, in qla4xxx_set_nvram()
2254 int qla4xxx_restore_factory_defaults(struct scsi_qla_host *ha, in qla4xxx_restore_factory_defaults() argument
2270 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 3, &mbox_cmd[0], in qla4xxx_restore_factory_defaults()
2273 DEBUG2(ql4_printk(KERN_ERR, ha, "scsi%ld: %s: failed " in qla4xxx_restore_factory_defaults()
2274 "status %04X\n", ha->host_no, __func__, in qla4xxx_restore_factory_defaults()
2285 int qla4_8xxx_set_param(struct scsi_qla_host *ha, int param) in qla4_8xxx_set_param() argument
2300 ql4_printk(KERN_ERR, ha, "%s: invalid parameter 0x%x\n", in qla4_8xxx_set_param()
2306 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, 2, mbox_cmd, in qla4_8xxx_set_param()
2309 ql4_printk(KERN_ERR, ha, "%s: failed status %04X\n", in qla4_8xxx_set_param()
2322 int qla4_83xx_post_idc_ack(struct scsi_qla_host *ha) in qla4_83xx_post_idc_ack() argument
2332 mbox_cmd[1] = ha->idc_info.request_desc; in qla4_83xx_post_idc_ack()
2333 mbox_cmd[2] = ha->idc_info.info1; in qla4_83xx_post_idc_ack()
2334 mbox_cmd[3] = ha->idc_info.info2; in qla4_83xx_post_idc_ack()
2335 mbox_cmd[4] = ha->idc_info.info3; in qla4_83xx_post_idc_ack()
2337 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, MBOX_REG_COUNT, in qla4_83xx_post_idc_ack()
2340 ql4_printk(KERN_ERR, ha, "%s: failed status %04X\n", __func__, in qla4_83xx_post_idc_ack()
2343 ql4_printk(KERN_INFO, ha, "%s: IDC ACK posted\n", __func__); in qla4_83xx_post_idc_ack()
2348 int qla4_84xx_config_acb(struct scsi_qla_host *ha, int acb_config) in qla4_84xx_config_acb() argument
2357 acb = dma_alloc_coherent(&ha->pdev->dev, in qla4_84xx_config_acb()
2361 ql4_printk(KERN_ERR, ha, "%s: Unable to alloc acb\n", __func__); in qla4_84xx_config_acb()
2369 rval = qla4xxx_get_acb(ha, acb_dma, 0, acb_len); in qla4_84xx_config_acb()
2373 rval = qla4xxx_disable_acb(ha); in qla4_84xx_config_acb()
2377 if (!ha->saved_acb) in qla4_84xx_config_acb()
2378 ha->saved_acb = kzalloc(acb_len, GFP_KERNEL); in qla4_84xx_config_acb()
2380 if (!ha->saved_acb) { in qla4_84xx_config_acb()
2381 ql4_printk(KERN_ERR, ha, "%s: Unable to alloc acb\n", in qla4_84xx_config_acb()
2386 memcpy(ha->saved_acb, acb, acb_len); in qla4_84xx_config_acb()
2390 if (!ha->saved_acb) { in qla4_84xx_config_acb()
2391 ql4_printk(KERN_ERR, ha, "%s: Can't set ACB, Saved ACB not available\n", in qla4_84xx_config_acb()
2397 memcpy(acb, ha->saved_acb, acb_len); in qla4_84xx_config_acb()
2399 rval = qla4xxx_set_acb(ha, &mbox_cmd[0], &mbox_sts[0], acb_dma); in qla4_84xx_config_acb()
2405 ql4_printk(KERN_ERR, ha, "%s: Invalid ACB Configuration\n", in qla4_84xx_config_acb()
2410 dma_free_coherent(&ha->pdev->dev, sizeof(struct addr_ctrl_blk), acb, in qla4_84xx_config_acb()
2413 if ((acb_config == ACB_CONFIG_SET) && ha->saved_acb) { in qla4_84xx_config_acb()
2414 kfree(ha->saved_acb); in qla4_84xx_config_acb()
2415 ha->saved_acb = NULL; in qla4_84xx_config_acb()
2417 DEBUG2(ql4_printk(KERN_INFO, ha, in qla4_84xx_config_acb()
2423 int qla4_83xx_get_port_config(struct scsi_qla_host *ha, uint32_t *config) in qla4_83xx_get_port_config() argument
2434 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, MBOX_REG_COUNT, in qla4_83xx_get_port_config()
2439 ql4_printk(KERN_ERR, ha, "%s: failed status %04X\n", __func__, in qla4_83xx_get_port_config()
2445 int qla4_83xx_set_port_config(struct scsi_qla_host *ha, uint32_t *config) in qla4_83xx_set_port_config() argument
2457 status = qla4xxx_mailbox_command(ha, MBOX_REG_COUNT, MBOX_REG_COUNT, in qla4_83xx_set_port_config()
2460 ql4_printk(KERN_ERR, ha, "%s: failed status %04X\n", __func__, in qla4_83xx_set_port_config()