Lines Matching refs:vha

51 	struct qla_hw_data *ha = fcport->vha->hw;  in qla2x00_sp_timeout()
60 sp->free(fcport->vha, sp); in qla2x00_sp_timeout()
69 struct scsi_qla_host *vha = (scsi_qla_host_t *)data; in qla2x00_sp_free() local
72 qla2x00_rel_sp(vha, sp); in qla2x00_sp_free()
78 qla2x00_get_async_timeout(struct scsi_qla_host *vha) in qla2x00_get_async_timeout() argument
81 struct qla_hw_data *ha = vha->hw; in qla2x00_get_async_timeout()
103 ql_dbg(ql_dbg_disc, fcport->vha, 0x2071, in qla2x00_async_iocb_timeout()
111 qla2x00_post_async_logout_work(fcport->vha, fcport, NULL); in qla2x00_async_iocb_timeout()
116 qla2x00_post_async_login_done_work(fcport->vha, fcport, in qla2x00_async_iocb_timeout()
128 struct scsi_qla_host *vha = (scsi_qla_host_t *)data; in qla2x00_async_login_sp_done() local
130 if (!test_bit(UNLOADING, &vha->dpc_flags)) in qla2x00_async_login_sp_done()
131 qla2x00_post_async_login_done_work(sp->fcport->vha, sp->fcport, in qla2x00_async_login_sp_done()
133 sp->free(sp->fcport->vha, sp); in qla2x00_async_login_sp_done()
137 qla2x00_async_login(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_login() argument
145 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_login()
151 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla2x00_async_login()
163 ql_dbg(ql_dbg_disc, vha, 0x2072, in qla2x00_async_login()
171 sp->free(fcport->vha, sp); in qla2x00_async_login()
181 struct scsi_qla_host *vha = (scsi_qla_host_t *)data; in qla2x00_async_logout_sp_done() local
183 if (!test_bit(UNLOADING, &vha->dpc_flags)) in qla2x00_async_logout_sp_done()
184 qla2x00_post_async_logout_done_work(sp->fcport->vha, sp->fcport, in qla2x00_async_logout_sp_done()
186 sp->free(sp->fcport->vha, sp); in qla2x00_async_logout_sp_done()
190 qla2x00_async_logout(struct scsi_qla_host *vha, fc_port_t *fcport) in qla2x00_async_logout() argument
197 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_logout()
203 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla2x00_async_logout()
212 ql_dbg(ql_dbg_disc, vha, 0x2070, in qla2x00_async_logout()
219 sp->free(fcport->vha, sp); in qla2x00_async_logout()
229 struct scsi_qla_host *vha = (scsi_qla_host_t *)data; in qla2x00_async_adisc_sp_done() local
231 if (!test_bit(UNLOADING, &vha->dpc_flags)) in qla2x00_async_adisc_sp_done()
232 qla2x00_post_async_adisc_done_work(sp->fcport->vha, sp->fcport, in qla2x00_async_adisc_sp_done()
234 sp->free(sp->fcport->vha, sp); in qla2x00_async_adisc_sp_done()
238 qla2x00_async_adisc(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_adisc() argument
246 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_adisc()
252 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla2x00_async_adisc()
263 ql_dbg(ql_dbg_disc, vha, 0x206f, in qla2x00_async_adisc()
270 sp->free(fcport->vha, sp); in qla2x00_async_adisc()
297 struct scsi_qla_host *vha = fcport->vha; in qla2x00_async_tm_cmd() local
302 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_tm_cmd()
309 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha)); in qla2x00_async_tm_cmd()
321 ql_dbg(ql_dbg_taskm, vha, 0x802f, in qla2x00_async_tm_cmd()
332 ql_dbg(ql_dbg_taskm, vha, 0x8030, in qla2x00_async_tm_cmd()
336 if (!test_bit(UNLOADING, &vha->dpc_flags) && !IS_QLAFX00(vha->hw)) { in qla2x00_async_tm_cmd()
341 qla2x00_marker(vha, vha->hw->req_q_map[0], in qla2x00_async_tm_cmd()
342 vha->hw->rsp_q_map[0], sp->fcport->loop_id, lun, in qla2x00_async_tm_cmd()
347 sp->free(vha, sp); in qla2x00_async_tm_cmd()
374 scsi_qla_host_t *vha = cmd_sp->fcport->vha; in qla24xx_async_abort_cmd() local
380 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla24xx_async_abort_cmd()
387 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha)); in qla24xx_async_abort_cmd()
397 ql_dbg(ql_dbg_async, vha, 0x507c, in qla24xx_async_abort_cmd()
407 sp->free(vha, sp); in qla24xx_async_abort_cmd()
419 struct scsi_qla_host *vha = fcport->vha; in qla24xx_async_abort_command() local
420 struct qla_hw_data *ha = vha->hw; in qla24xx_async_abort_command()
421 struct req_que *req = vha->req; in qla24xx_async_abort_command()
434 return qlafx00_fx_disc(vha, &vha->hw->mr.fcport, in qla24xx_async_abort_command()
441 qla2x00_async_login_done(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_login_done() argument
453 rval = qla2x00_get_port_database(vha, fcport, 0); in qla2x00_async_login_done()
457 set_bit(RELOGIN_NEEDED, &vha->dpc_flags); in qla2x00_async_login_done()
462 qla2x00_post_async_logout_work(vha, fcport, NULL); in qla2x00_async_login_done()
463 qla2x00_post_async_login_work(vha, fcport, NULL); in qla2x00_async_login_done()
467 qla2x00_post_async_adisc_work(vha, fcport, data); in qla2x00_async_login_done()
470 qla2x00_update_fcport(vha, fcport); in qla2x00_async_login_done()
475 set_bit(RELOGIN_NEEDED, &vha->dpc_flags); in qla2x00_async_login_done()
477 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_async_login_done()
481 qla2x00_post_async_logout_work(vha, fcport, NULL); in qla2x00_async_login_done()
482 qla2x00_post_async_login_work(vha, fcport, NULL); in qla2x00_async_login_done()
486 rval = qla2x00_find_new_loop_id(vha, fcport); in qla2x00_async_login_done()
489 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_async_login_done()
492 qla2x00_post_async_login_work(vha, fcport, NULL); in qla2x00_async_login_done()
499 qla2x00_async_logout_done(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_logout_done() argument
504 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_async_logout_done()
510 qla2x00_async_adisc_done(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_adisc_done() argument
514 qla2x00_update_fcport(vha, fcport); in qla2x00_async_adisc_done()
522 set_bit(RELOGIN_NEEDED, &vha->dpc_flags); in qla2x00_async_adisc_done()
524 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_async_adisc_done()
534 qla83xx_nic_core_fw_load(scsi_qla_host_t *vha) in qla83xx_nic_core_fw_load() argument
537 struct qla_hw_data *ha = vha->hw; in qla83xx_nic_core_fw_load()
541 qla83xx_idc_lock(vha, 0); in qla83xx_nic_core_fw_load()
550 if (__qla83xx_set_drv_presence(vha) != QLA_SUCCESS) { in qla83xx_nic_core_fw_load()
551 ql_dbg(ql_dbg_p3p, vha, 0xb077, in qla83xx_nic_core_fw_load()
558 qla83xx_reset_ownership(vha); in qla83xx_nic_core_fw_load()
566 qla83xx_rd_reg(vha, QLA83XX_IDC_MAJOR_VERSION, &idc_major_ver); in qla83xx_nic_core_fw_load()
570 qla83xx_wr_reg(vha, QLA83XX_IDC_MAJOR_VERSION, idc_major_ver); in qla83xx_nic_core_fw_load()
573 qla83xx_wr_reg(vha, QLA83XX_IDC_LOCK_RECOVERY, 0); in qla83xx_nic_core_fw_load()
579 ql_log(ql_log_warn, vha, 0xb07d, in qla83xx_nic_core_fw_load()
582 __qla83xx_clear_drv_presence(vha); in qla83xx_nic_core_fw_load()
587 qla83xx_rd_reg(vha, QLA83XX_IDC_MINOR_VERSION, &idc_minor_ver); in qla83xx_nic_core_fw_load()
589 qla83xx_wr_reg(vha, QLA83XX_IDC_MINOR_VERSION, idc_minor_ver); in qla83xx_nic_core_fw_load()
593 if (!qla81xx_get_port_config(vha, config)) in qla83xx_nic_core_fw_load()
594 qla83xx_wr_reg(vha, QLA83XX_IDC_DEV_STATE, in qla83xx_nic_core_fw_load()
598 rval = qla83xx_idc_state_handler(vha); in qla83xx_nic_core_fw_load()
601 qla83xx_idc_unlock(vha, 0); in qla83xx_nic_core_fw_load()
617 qla2x00_initialize_adapter(scsi_qla_host_t *vha) in qla2x00_initialize_adapter() argument
620 struct qla_hw_data *ha = vha->hw; in qla2x00_initialize_adapter()
624 vha->flags.online = 0; in qla2x00_initialize_adapter()
626 vha->flags.reset_active = 0; in qla2x00_initialize_adapter()
629 vha->qla_stats.jiffies_at_last_reset = get_jiffies_64(); in qla2x00_initialize_adapter()
630 atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME); in qla2x00_initialize_adapter()
631 atomic_set(&vha->loop_state, LOOP_DOWN); in qla2x00_initialize_adapter()
632 vha->device_flags = DFLG_NO_CABLE; in qla2x00_initialize_adapter()
633 vha->dpc_flags = 0; in qla2x00_initialize_adapter()
634 vha->flags.management_server_logged_in = 0; in qla2x00_initialize_adapter()
635 vha->marker_needed = 0; in qla2x00_initialize_adapter()
642 ql_dbg(ql_dbg_init, vha, 0x0040, in qla2x00_initialize_adapter()
644 rval = ha->isp_ops->pci_config(vha); in qla2x00_initialize_adapter()
646 ql_log(ql_log_warn, vha, 0x0044, in qla2x00_initialize_adapter()
651 ha->isp_ops->reset_chip(vha); in qla2x00_initialize_adapter()
653 rval = qla2xxx_get_flash_info(vha); in qla2x00_initialize_adapter()
655 ql_log(ql_log_fatal, vha, 0x004f, in qla2x00_initialize_adapter()
661 qla8044_read_reset_template(vha); in qla2x00_initialize_adapter()
668 qla8044_set_idc_dontreset(vha); in qla2x00_initialize_adapter()
671 ha->isp_ops->get_flash_version(vha, req->ring); in qla2x00_initialize_adapter()
672 ql_dbg(ql_dbg_init, vha, 0x0061, in qla2x00_initialize_adapter()
675 ha->isp_ops->nvram_config(vha); in qla2x00_initialize_adapter()
679 ql_log(ql_log_info, vha, 0x0077, in qla2x00_initialize_adapter()
680 "Masking HBA WWPN %8phN (via NVRAM).\n", vha->port_name); in qla2x00_initialize_adapter()
684 ql_dbg(ql_dbg_init, vha, 0x0078, in qla2x00_initialize_adapter()
687 if (qla2x00_isp_firmware(vha) != QLA_SUCCESS) { in qla2x00_initialize_adapter()
688 rval = ha->isp_ops->chip_diag(vha); in qla2x00_initialize_adapter()
691 rval = qla2x00_setup_chip(vha); in qla2x00_initialize_adapter()
697 ha->cs84xx = qla84xx_get_chip(vha); in qla2x00_initialize_adapter()
699 ql_log(ql_log_warn, vha, 0x00d0, in qla2x00_initialize_adapter()
705 if (qla_ini_mode_enabled(vha)) in qla2x00_initialize_adapter()
706 rval = qla2x00_init_rings(vha); in qla2x00_initialize_adapter()
712 rval = qla84xx_init_chip(vha); in qla2x00_initialize_adapter()
714 ql_log(ql_log_warn, vha, 0x00d4, in qla2x00_initialize_adapter()
716 qla84xx_put_chip(vha); in qla2x00_initialize_adapter()
722 rval = qla83xx_nic_core_fw_load(vha); in qla2x00_initialize_adapter()
724 ql_log(ql_log_warn, vha, 0x0124, in qla2x00_initialize_adapter()
729 qla24xx_read_fcp_prio_cfg(vha); in qla2x00_initialize_adapter()
732 qla82xx_set_driver_version(vha, QLA2XXX_VERSION); in qla2x00_initialize_adapter()
734 qla25xx_set_driver_version(vha, QLA2XXX_VERSION); in qla2x00_initialize_adapter()
746 qla2100_pci_config(scsi_qla_host_t *vha) in qla2100_pci_config() argument
750 struct qla_hw_data *ha = vha->hw; in qla2100_pci_config()
777 qla2300_pci_config(scsi_qla_host_t *vha) in qla2300_pci_config() argument
782 struct qla_hw_data *ha = vha->hw; in qla2300_pci_config()
859 qla24xx_pci_config(scsi_qla_host_t *vha) in qla24xx_pci_config() argument
863 struct qla_hw_data *ha = vha->hw; in qla24xx_pci_config()
903 qla25xx_pci_config(scsi_qla_host_t *vha) in qla25xx_pci_config() argument
906 struct qla_hw_data *ha = vha->hw; in qla25xx_pci_config()
934 qla2x00_isp_firmware(scsi_qla_host_t *vha) in qla2x00_isp_firmware() argument
939 struct qla_hw_data *ha = vha->hw; in qla2x00_isp_firmware()
945 ql_log(ql_log_info, vha, 0x0079, "RISC CODE NOT loaded.\n"); in qla2x00_isp_firmware()
948 rval = qla2x00_verify_checksum(vha, ha->fw_srisc_address); in qla2x00_isp_firmware()
951 rval = qla2x00_get_adapter_id(vha, &loop_id, &al_pa, in qla2x00_isp_firmware()
957 ql_dbg(ql_dbg_init, vha, 0x007a, in qla2x00_isp_firmware()
970 qla2x00_reset_chip(scsi_qla_host_t *vha) in qla2x00_reset_chip() argument
973 struct qla_hw_data *ha = vha->hw; in qla2x00_reset_chip()
1113 qla81xx_reset_mpi(scsi_qla_host_t *vha) in qla81xx_reset_mpi() argument
1117 if (!IS_QLA81XX(vha->hw)) in qla81xx_reset_mpi()
1120 return qla81xx_write_mpi_register(vha, mb); in qla81xx_reset_mpi()
1130 qla24xx_reset_risc(scsi_qla_host_t *vha) in qla24xx_reset_risc() argument
1133 struct qla_hw_data *ha = vha->hw; in qla24xx_reset_risc()
1154 ql_dbg(ql_dbg_init + ql_dbg_verbose, vha, 0x017e, in qla24xx_reset_risc()
1180 ql_dbg(ql_dbg_init + ql_dbg_verbose, vha, 0x017f, in qla24xx_reset_risc()
1198 ql_dbg(ql_dbg_init + ql_dbg_verbose, vha, 0x015d, in qla24xx_reset_risc()
1204 if (test_and_clear_bit(MPI_RESET_NEEDED, &vha->dpc_flags)) { in qla24xx_reset_risc()
1205 if (qla81xx_reset_mpi(vha) != QLA_SUCCESS) { in qla24xx_reset_risc()
1207 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); in qla24xx_reset_risc()
1208 set_bit(MPI_RESET_NEEDED, &vha->dpc_flags); in qla24xx_reset_risc()
1215 vha->flags.online = 0; in qla24xx_reset_risc()
1241 ql_dbg(ql_dbg_init + ql_dbg_verbose, vha, 0x015e, in qla24xx_reset_risc()
1248 ql_dbg(ql_dbg_init + ql_dbg_verbose, vha, 0x015f, in qla24xx_reset_risc()
1259 qla25xx_read_risc_sema_reg(scsi_qla_host_t *vha, uint32_t *data) in qla25xx_read_risc_sema_reg() argument
1261 struct device_reg_24xx __iomem *reg = &vha->hw->iobase->isp24; in qla25xx_read_risc_sema_reg()
1269 qla25xx_write_risc_sema_reg(scsi_qla_host_t *vha, uint32_t data) in qla25xx_write_risc_sema_reg() argument
1271 struct device_reg_24xx __iomem *reg = &vha->hw->iobase->isp24; in qla25xx_write_risc_sema_reg()
1278 qla25xx_manipulate_risc_semaphore(scsi_qla_host_t *vha) in qla25xx_manipulate_risc_semaphore() argument
1280 struct qla_hw_data *ha = vha->hw; in qla25xx_manipulate_risc_semaphore()
1294 qla25xx_write_risc_sema_reg(vha, RISC_SEMAPHORE_SET); in qla25xx_manipulate_risc_semaphore()
1295 qla25xx_read_risc_sema_reg(vha, &wd32); in qla25xx_manipulate_risc_semaphore()
1310 qla25xx_write_risc_sema_reg(vha, RISC_SEMAPHORE_CLR); in qla25xx_manipulate_risc_semaphore()
1314 qla25xx_read_risc_sema_reg(vha, &wd32); in qla25xx_manipulate_risc_semaphore()
1324 qla25xx_write_risc_sema_reg(vha, RISC_SEMAPHORE_FORCE_CLR); in qla25xx_manipulate_risc_semaphore()
1329 qla25xx_write_risc_sema_reg(vha, RISC_SEMAPHORE_FORCE_SET); in qla25xx_manipulate_risc_semaphore()
1342 qla24xx_reset_chip(scsi_qla_host_t *vha) in qla24xx_reset_chip() argument
1344 struct qla_hw_data *ha = vha->hw; in qla24xx_reset_chip()
1353 qla25xx_manipulate_risc_semaphore(vha); in qla24xx_reset_chip()
1356 qla24xx_reset_risc(vha); in qla24xx_reset_chip()
1366 qla2x00_chip_diag(scsi_qla_host_t *vha) in qla2x00_chip_diag() argument
1369 struct qla_hw_data *ha = vha->hw; in qla2x00_chip_diag()
1380 ql_dbg(ql_dbg_init, vha, 0x007b, in qla2x00_chip_diag()
1403 ql_dbg(ql_dbg_init, vha, 0x007c, in qla2x00_chip_diag()
1425 ql_dbg(ql_dbg_init, vha, 0x007d, "Checking product Id of chip.\n"); in qla2x00_chip_diag()
1433 ql_log(ql_log_warn, vha, 0x0062, in qla2x00_chip_diag()
1454 ql_dbg(ql_dbg_init, vha, 0x007e, "Found QLA2200A Chip.\n"); in qla2x00_chip_diag()
1463 ql_dbg(ql_dbg_init, vha, 0x007f, "Checking mailboxes.\n"); in qla2x00_chip_diag()
1464 rval = qla2x00_mbx_reg_test(vha); in qla2x00_chip_diag()
1466 ql_log(ql_log_warn, vha, 0x0080, in qla2x00_chip_diag()
1475 ql_log(ql_log_info, vha, 0x0081, in qla2x00_chip_diag()
1490 qla24xx_chip_diag(scsi_qla_host_t *vha) in qla24xx_chip_diag() argument
1493 struct qla_hw_data *ha = vha->hw; in qla24xx_chip_diag()
1501 rval = qla2x00_mbx_reg_test(vha); in qla24xx_chip_diag()
1503 ql_log(ql_log_warn, vha, 0x0082, in qla24xx_chip_diag()
1514 qla2x00_alloc_fw_dump(scsi_qla_host_t *vha) in qla2x00_alloc_fw_dump() argument
1521 struct qla_hw_data *ha = vha->hw; in qla2x00_alloc_fw_dump()
1526 ql_dbg(ql_dbg_init, vha, 0x00bd, in qla2x00_alloc_fw_dump()
1585 ql_log(ql_log_warn, vha, 0x00be, in qla2x00_alloc_fw_dump()
1591 rval = qla2x00_enable_fce_trace(vha, tc_dma, FCE_NUM_BUFFERS, in qla2x00_alloc_fw_dump()
1594 ql_log(ql_log_warn, vha, 0x00bf, in qla2x00_alloc_fw_dump()
1601 ql_dbg(ql_dbg_init, vha, 0x00c0, in qla2x00_alloc_fw_dump()
1618 ql_log(ql_log_warn, vha, 0x00c1, in qla2x00_alloc_fw_dump()
1624 rval = qla2x00_enable_eft_trace(vha, tc_dma, EFT_NUM_BUFFERS); in qla2x00_alloc_fw_dump()
1626 ql_log(ql_log_warn, vha, 0x00c2, in qla2x00_alloc_fw_dump()
1632 ql_dbg(ql_dbg_init, vha, 0x00c3, in qla2x00_alloc_fw_dump()
1643 ql_log(ql_log_warn, vha, 0x00ba, in qla2x00_alloc_fw_dump()
1647 dump_size = qla27xx_fwdt_calculate_dump_size(vha); in qla2x00_alloc_fw_dump()
1648 ql_dbg(ql_dbg_init, vha, 0x00fa, in qla2x00_alloc_fw_dump()
1663 ql_log(ql_log_warn, vha, 0x00c4, in qla2x00_alloc_fw_dump()
1683 ql_dbg(ql_dbg_init, vha, 0x00c5, in qla2x00_alloc_fw_dump()
1709 qla81xx_mpi_sync(scsi_qla_host_t *vha) in qla81xx_mpi_sync() argument
1716 if (!IS_QLA81XX(vha->hw)) in qla81xx_mpi_sync()
1719 rval = qla2x00_write_ram_word(vha, 0x7c00, 1); in qla81xx_mpi_sync()
1721 ql_log(ql_log_warn, vha, 0x0105, in qla81xx_mpi_sync()
1726 pci_read_config_word(vha->hw->pdev, 0x54, &dc); in qla81xx_mpi_sync()
1727 rval = qla2x00_read_ram_word(vha, 0x7a15, &dw); in qla81xx_mpi_sync()
1729 ql_log(ql_log_warn, vha, 0x0067, "Unable to read sync.\n"); in qla81xx_mpi_sync()
1739 rval = qla2x00_write_ram_word(vha, 0x7a15, dw); in qla81xx_mpi_sync()
1741 ql_log(ql_log_warn, vha, 0x0114, "Unable to gain sync.\n"); in qla81xx_mpi_sync()
1745 rval = qla2x00_write_ram_word(vha, 0x7c00, 0); in qla81xx_mpi_sync()
1747 ql_log(ql_log_warn, vha, 0x006d, in qla81xx_mpi_sync()
1803 qla2x00_setup_chip(scsi_qla_host_t *vha) in qla2x00_setup_chip() argument
1807 struct qla_hw_data *ha = vha->hw; in qla2x00_setup_chip()
1813 rval = ha->isp_ops->load_risc(vha, &srisc_address); in qla2x00_setup_chip()
1815 qla2x00_stop_firmware(vha); in qla2x00_setup_chip()
1829 qla81xx_mpi_sync(vha); in qla2x00_setup_chip()
1832 rval = ha->isp_ops->load_risc(vha, &srisc_address); in qla2x00_setup_chip()
1834 ql_dbg(ql_dbg_init, vha, 0x00c9, in qla2x00_setup_chip()
1837 rval = qla2x00_verify_checksum(vha, srisc_address); in qla2x00_setup_chip()
1840 ql_dbg(ql_dbg_init, vha, 0x00ca, in qla2x00_setup_chip()
1843 rval = qla2x00_execute_fw(vha, srisc_address); in qla2x00_setup_chip()
1849 qla82xx_check_md_needed(vha); in qla2x00_setup_chip()
1851 rval = qla2x00_get_fw_version(vha); in qla2x00_setup_chip()
1864 qla2x00_get_resource_cnts(vha, NULL, in qla2x00_setup_chip()
1873 vha->req); in qla2x00_setup_chip()
1879 qla2x00_alloc_fw_dump(vha); in qla2x00_setup_chip()
1884 ql_log(ql_log_fatal, vha, 0x00cd, in qla2x00_setup_chip()
1909 rval = qla81xx_fac_get_sector_size(vha, &size); in qla2x00_setup_chip()
1914 ql_log(ql_log_warn, vha, 0x00ce, in qla2x00_setup_chip()
1927 ql_log(ql_log_fatal, vha, 0x00cf, in qla2x00_setup_chip()
1966 qla2x00_update_fw_options(scsi_qla_host_t *vha) in qla2x00_update_fw_options() argument
1969 struct qla_hw_data *ha = vha->hw; in qla2x00_update_fw_options()
1972 qla2x00_get_fw_options(vha, ha->fw_options); in qla2x00_update_fw_options()
1978 ql_dbg(ql_dbg_init + ql_dbg_buffer, vha, 0x0115, in qla2x00_update_fw_options()
1980 ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x0109, in qla2x00_update_fw_options()
2038 qla2x00_set_fw_options(vha, ha->fw_options); in qla2x00_update_fw_options()
2042 qla24xx_update_fw_options(scsi_qla_host_t *vha) in qla24xx_update_fw_options() argument
2045 struct qla_hw_data *ha = vha->hw; in qla24xx_update_fw_options()
2054 rval = qla2x00_set_serdes_params(vha, in qla24xx_update_fw_options()
2059 ql_log(ql_log_warn, vha, 0x0104, in qla24xx_update_fw_options()
2065 qla2x00_config_rings(struct scsi_qla_host *vha) in qla2x00_config_rings() argument
2067 struct qla_hw_data *ha = vha->hw; in qla2x00_config_rings()
2090 qla24xx_config_rings(struct scsi_qla_host *vha) in qla24xx_config_rings() argument
2092 struct qla_hw_data *ha = vha->hw; in qla24xx_config_rings()
2127 ql_dbg(ql_dbg_init, vha, 0x00fd, in qla24xx_config_rings()
2147 ql_dbg(ql_dbg_init, vha, 0x00fe, in qla24xx_config_rings()
2165 qlt_24xx_config_rings(vha); in qla24xx_config_rings()
2181 qla2x00_init_rings(scsi_qla_host_t *vha) in qla2x00_init_rings() argument
2186 struct qla_hw_data *ha = vha->hw; in qla2x00_init_rings()
2228 qlt_init_atio_q_entries(vha); in qla2x00_init_rings()
2230 ha->isp_ops->config_rings(vha); in qla2x00_init_rings()
2234 ql_dbg(ql_dbg_init, vha, 0x00d1, "Issue init firmware.\n"); in qla2x00_init_rings()
2237 rval = qlafx00_init_firmware(vha, ha->init_cb_size); in qla2x00_init_rings()
2242 ha->isp_ops->update_fw_options(vha); in qla2x00_init_rings()
2261 ql_dbg(ql_dbg_init, vha, 0x0141, "FA-WWPN Support: %s.\n", in qla2x00_init_rings()
2265 rval = qla2x00_init_firmware(vha, ha->init_cb_size); in qla2x00_init_rings()
2268 ql_log(ql_log_fatal, vha, 0x00d2, in qla2x00_init_rings()
2271 ql_dbg(ql_dbg_init, vha, 0x00d3, in qla2x00_init_rings()
2285 qla2x00_fw_ready(scsi_qla_host_t *vha) in qla2x00_fw_ready() argument
2292 struct qla_hw_data *ha = vha->hw; in qla2x00_fw_ready()
2294 if (IS_QLAFX00(vha->hw)) in qla2x00_fw_ready()
2295 return qlafx00_fw_ready(vha); in qla2x00_fw_ready()
2320 if (!vha->flags.init_done) in qla2x00_fw_ready()
2321 ql_log(ql_log_info, vha, 0x801e, in qla2x00_fw_ready()
2326 rval = qla2x00_get_firmware_state(vha, state); in qla2x00_fw_ready()
2329 vha->device_flags &= ~DFLG_NO_CABLE; in qla2x00_fw_ready()
2332 ql_dbg(ql_dbg_taskm, vha, 0x801f, in qla2x00_fw_ready()
2337 ql_dbg(ql_dbg_taskm, vha, 0x8028, in qla2x00_fw_ready()
2341 rval = qla84xx_init_chip(vha); in qla2x00_fw_ready()
2344 vha, 0x8007, in qla2x00_fw_ready()
2353 ql_dbg(ql_dbg_taskm, vha, 0x8008, in qla2x00_fw_ready()
2359 ql_dbg(ql_dbg_taskm, vha, 0x8037, in qla2x00_fw_ready()
2362 qla2x00_get_retry_cnt(vha, &ha->retry_count, in qla2x00_fw_ready()
2371 if (atomic_read(&vha->loop_down_timer) && in qla2x00_fw_ready()
2377 ql_log(ql_log_info, vha, 0x8038, in qla2x00_fw_ready()
2380 vha->device_flags |= DFLG_NO_CABLE; in qla2x00_fw_ready()
2398 ql_dbg(ql_dbg_taskm, vha, 0x803a, in qla2x00_fw_ready()
2402 if (rval && !(vha->device_flags & DFLG_NO_CABLE)) { in qla2x00_fw_ready()
2403 ql_log(ql_log_warn, vha, 0x803b, in qla2x00_fw_ready()
2424 qla2x00_configure_hba(scsi_qla_host_t *vha) in qla2x00_configure_hba() argument
2434 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_hba()
2439 rval = qla2x00_get_adapter_id(vha, in qla2x00_configure_hba()
2442 if (LOOP_TRANSITION(vha) || atomic_read(&ha->loop_down_timer) || in qla2x00_configure_hba()
2445 ql_dbg(ql_dbg_disc, vha, 0x2008, in qla2x00_configure_hba()
2448 ql_log(ql_log_warn, vha, 0x2009, in qla2x00_configure_hba()
2450 if (IS_FWI2_CAPABLE(ha) && (vha == base_vha) && in qla2x00_configure_hba()
2452 ql_log(ql_log_warn, vha, 0x1151, in qla2x00_configure_hba()
2454 if (qla24xx_link_initialize(vha) == QLA_SUCCESS) in qla2x00_configure_hba()
2457 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); in qla2x00_configure_hba()
2463 ql_log(ql_log_info, vha, 0x200a, in qla2x00_configure_hba()
2468 vha->loop_id = loop_id; in qla2x00_configure_hba()
2477 ql_dbg(ql_dbg_disc, vha, 0x200b, "HBA in NL topology.\n"); in qla2x00_configure_hba()
2483 ql_dbg(ql_dbg_disc, vha, 0x200c, "HBA in FL topology.\n"); in qla2x00_configure_hba()
2490 ql_dbg(ql_dbg_disc, vha, 0x200d, "HBA in N P2P topology.\n"); in qla2x00_configure_hba()
2497 ql_dbg(ql_dbg_disc, vha, 0x200e, "HBA in F P2P topology.\n"); in qla2x00_configure_hba()
2505 ql_dbg(ql_dbg_disc, vha, 0x200f, in qla2x00_configure_hba()
2514 vha->d_id.b.domain = domain; in qla2x00_configure_hba()
2515 vha->d_id.b.area = area; in qla2x00_configure_hba()
2516 vha->d_id.b.al_pa = al_pa; in qla2x00_configure_hba()
2519 qlt_update_vp_map(vha, SET_AL_PA); in qla2x00_configure_hba()
2522 if (!vha->flags.init_done) in qla2x00_configure_hba()
2523 ql_log(ql_log_info, vha, 0x2010, in qla2x00_configure_hba()
2525 connect_type, vha->loop_id); in qla2x00_configure_hba()
2531 qla2x00_set_model_info(scsi_qla_host_t *vha, uint8_t *model, size_t len, in qla2x00_set_model_info() argument
2536 struct qla_hw_data *ha = vha->hw; in qla2x00_set_model_info()
2572 qla2xxx_get_vpd_field(vha, "\x82", ha->model_desc, in qla2x00_set_model_info()
2579 static void qla2xxx_nvram_wwn_from_ofw(scsi_qla_host_t *vha, nvram_t *nv) in qla2xxx_nvram_wwn_from_ofw() argument
2582 struct qla_hw_data *ha = vha->hw; in qla2xxx_nvram_wwn_from_ofw()
2612 qla2x00_nvram_config(scsi_qla_host_t *vha) in qla2x00_nvram_config() argument
2618 struct qla_hw_data *ha = vha->hw; in qla2x00_nvram_config()
2634 ha->isp_ops->read_nvram(vha, ptr, ha->nvram_base, ha->nvram_size); in qla2x00_nvram_config()
2638 ql_dbg(ql_dbg_init + ql_dbg_buffer, vha, 0x010f, in qla2x00_nvram_config()
2640 ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x0110, in qla2x00_nvram_config()
2647 ql_log(ql_log_warn, vha, 0x0064, in qla2x00_nvram_config()
2651 ql_log(ql_log_warn, vha, 0x0065, in qla2x00_nvram_config()
2689 qla2xxx_nvram_wwn_from_ofw(vha, nv); in qla2x00_nvram_config()
2743 qla2x00_set_model_info(vha, nv->model_number, in qla2x00_nvram_config()
2824 memcpy(vha->node_name, icb->node_name, WWN_SIZE); in qla2x00_nvram_config()
2825 memcpy(vha->port_name, icb->port_name, WWN_SIZE); in qla2x00_nvram_config()
2893 vha->flags.process_response_queue = 1; in qla2x00_nvram_config()
2896 if (!vha->flags.init_done) { in qla2x00_nvram_config()
2904 vha->flags.process_response_queue = 0; in qla2x00_nvram_config()
2908 ql_log(ql_log_info, vha, 0x0068, in qla2x00_nvram_config()
2914 vha->flags.process_response_queue = 1; in qla2x00_nvram_config()
2919 ql_log(ql_log_warn, vha, 0x0069, in qla2x00_nvram_config()
2932 spin_lock_irqsave(fcport->vha->host->host_lock, flags); in qla2x00_rport_del()
2935 spin_unlock_irqrestore(fcport->vha->host->host_lock, flags); in qla2x00_rport_del()
2948 qla2x00_alloc_fcport(scsi_qla_host_t *vha, gfp_t flags) in qla2x00_alloc_fcport() argument
2957 fcport->vha = vha; in qla2x00_alloc_fcport()
2979 qla2x00_configure_loop(scsi_qla_host_t *vha) in qla2x00_configure_loop() argument
2983 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_loop()
2987 if (test_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags)) { in qla2x00_configure_loop()
2988 rval = qla2x00_configure_hba(vha); in qla2x00_configure_loop()
2990 ql_dbg(ql_dbg_disc, vha, 0x2013, in qla2x00_configure_loop()
2996 save_flags = flags = vha->dpc_flags; in qla2x00_configure_loop()
2997 ql_dbg(ql_dbg_disc, vha, 0x2014, in qla2x00_configure_loop()
3004 clear_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla2x00_configure_loop()
3005 clear_bit(RSCN_UPDATE, &vha->dpc_flags); in qla2x00_configure_loop()
3007 qla2x00_get_data_rate(vha); in qla2x00_configure_loop()
3024 } else if (!vha->flags.online || in qla2x00_configure_loop()
3032 if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) { in qla2x00_configure_loop()
3033 ql_dbg(ql_dbg_disc, vha, 0x2015, in qla2x00_configure_loop()
3037 rval = qla2x00_configure_local_loop(vha); in qla2x00_configure_loop()
3041 if (LOOP_TRANSITION(vha)) { in qla2x00_configure_loop()
3042 ql_dbg(ql_dbg_disc, vha, 0x201e, in qla2x00_configure_loop()
3047 rval = qla2x00_configure_fabric(vha); in qla2x00_configure_loop()
3051 if (atomic_read(&vha->loop_down_timer) || in qla2x00_configure_loop()
3052 test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) { in qla2x00_configure_loop()
3055 atomic_set(&vha->loop_state, LOOP_READY); in qla2x00_configure_loop()
3056 ql_dbg(ql_dbg_disc, vha, 0x2069, in qla2x00_configure_loop()
3062 ql_dbg(ql_dbg_disc, vha, 0x206a, in qla2x00_configure_loop()
3065 ql_dbg(ql_dbg_disc, vha, 0x206b, in qla2x00_configure_loop()
3070 if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) { in qla2x00_configure_loop()
3072 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla2x00_configure_loop()
3074 set_bit(RSCN_UPDATE, &vha->dpc_flags); in qla2x00_configure_loop()
3094 qla2x00_configure_local_loop(scsi_qla_host_t *vha) in qla2x00_configure_local_loop() argument
3106 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_local_loop()
3114 rval = qla2x00_get_id_list(vha, ha->gid_list, ha->gid_list_dma, in qla2x00_configure_local_loop()
3119 ql_dbg(ql_dbg_disc, vha, 0x2017, in qla2x00_configure_local_loop()
3121 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2075, in qla2x00_configure_local_loop()
3126 new_fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL); in qla2x00_configure_local_loop()
3128 ql_log(ql_log_warn, vha, 0x2018, in qla2x00_configure_local_loop()
3138 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_local_loop()
3143 ql_dbg(ql_dbg_disc, vha, 0x2019, in qla2x00_configure_local_loop()
3171 (area != vha->d_id.b.area || domain != vha->d_id.b.domain)) in qla2x00_configure_local_loop()
3185 rval2 = qla2x00_get_port_database(vha, new_fcport, 0); in qla2x00_configure_local_loop()
3187 ql_dbg(ql_dbg_disc, vha, 0x201a, in qla2x00_configure_local_loop()
3191 ql_dbg(ql_dbg_disc, vha, 0x201b, in qla2x00_configure_local_loop()
3193 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_configure_local_loop()
3200 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_local_loop()
3218 list_add_tail(&new_fcport->list, &vha->vp_fcports); in qla2x00_configure_local_loop()
3222 new_fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL); in qla2x00_configure_local_loop()
3224 ql_log(ql_log_warn, vha, 0x201c, in qla2x00_configure_local_loop()
3235 qla2x00_update_fcport(vha, fcport); in qla2x00_configure_local_loop()
3244 ql_dbg(ql_dbg_disc, vha, 0x201d, in qla2x00_configure_local_loop()
3252 qla2x00_iidma_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_iidma_fcport() argument
3256 struct qla_hw_data *ha = vha->hw; in qla2x00_iidma_fcport()
3268 rval = qla2x00_set_idma_speed(vha, fcport->loop_id, fcport->fp_speed, in qla2x00_iidma_fcport()
3271 ql_dbg(ql_dbg_disc, vha, 0x2004, in qla2x00_iidma_fcport()
3275 ql_dbg(ql_dbg_disc, vha, 0x2005, in qla2x00_iidma_fcport()
3283 qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_reg_remote_port() argument
3294 fcport->rport = rport = fc_remote_port_add(vha->host, 0, &rport_ids); in qla2x00_reg_remote_port()
3296 ql_log(ql_log_warn, vha, 0x2006, in qla2x00_reg_remote_port()
3305 qlt_fc_port_added(vha, fcport); in qla2x00_reg_remote_port()
3307 spin_lock_irqsave(fcport->vha->host->host_lock, flags); in qla2x00_reg_remote_port()
3309 spin_unlock_irqrestore(fcport->vha->host->host_lock, flags); in qla2x00_reg_remote_port()
3337 qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_update_fcport() argument
3339 fcport->vha = vha; in qla2x00_update_fcport()
3341 if (IS_QLAFX00(vha->hw)) { in qla2x00_update_fcport()
3343 qla2x00_reg_remote_port(vha, fcport); in qla2x00_update_fcport()
3350 qla2x00_iidma_fcport(vha, fcport); in qla2x00_update_fcport()
3351 qla24xx_update_fcport_fcp_prio(vha, fcport); in qla2x00_update_fcport()
3352 qla2x00_reg_remote_port(vha, fcport); in qla2x00_update_fcport()
3367 qla2x00_configure_fabric(scsi_qla_host_t *vha) in qla2x00_configure_fabric() argument
3375 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_fabric()
3384 rval = qla2x00_get_port_name(vha, loop_id, vha->fabric_node_name, 1); in qla2x00_configure_fabric()
3386 ql_dbg(ql_dbg_disc, vha, 0x201f, in qla2x00_configure_fabric()
3389 vha->device_flags &= ~SWITCH_FOUND; in qla2x00_configure_fabric()
3392 vha->device_flags |= SWITCH_FOUND; in qla2x00_configure_fabric()
3397 test_and_clear_bit(REGISTER_FDMI_NEEDED, &vha->dpc_flags)) in qla2x00_configure_fabric()
3398 qla2x00_fdmi_register(vha); in qla2x00_configure_fabric()
3405 rval = ha->isp_ops->fabric_login(vha, loop_id, 0xff, 0xff, in qla2x00_configure_fabric()
3408 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_configure_fabric()
3412 ql_dbg(ql_dbg_disc, vha, 0x2042, in qla2x00_configure_fabric()
3419 if (test_and_clear_bit(REGISTER_FC4_NEEDED, &vha->dpc_flags)) { in qla2x00_configure_fabric()
3420 if (qla2x00_rft_id(vha)) { in qla2x00_configure_fabric()
3422 ql_dbg(ql_dbg_disc, vha, 0x2045, in qla2x00_configure_fabric()
3425 if (qla2x00_rff_id(vha)) { in qla2x00_configure_fabric()
3427 ql_dbg(ql_dbg_disc, vha, 0x2049, in qla2x00_configure_fabric()
3430 if (qla2x00_rnn_id(vha)) { in qla2x00_configure_fabric()
3432 ql_dbg(ql_dbg_disc, vha, 0x204f, in qla2x00_configure_fabric()
3434 } else if (qla2x00_rsnn_nn(vha)) { in qla2x00_configure_fabric()
3436 ql_dbg(ql_dbg_disc, vha, 0x2053, in qla2x00_configure_fabric()
3444 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_fabric()
3454 qlt_do_generation_tick(vha, &discovery_gen); in qla2x00_configure_fabric()
3456 rval = qla2x00_find_all_fabric_devs(vha, &new_fcports); in qla2x00_configure_fabric()
3464 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_fabric()
3465 if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) in qla2x00_configure_fabric()
3474 qla2x00_mark_device_lost(vha, fcport, in qla2x00_configure_fabric()
3480 ha->isp_ops->fabric_logout(vha, in qla2x00_configure_fabric()
3499 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf077, in qla2x00_configure_fabric()
3507 qlt_fc_port_deleted(vha, fcport, in qla2x00_configure_fabric()
3520 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_fabric()
3521 if (atomic_read(&vha->loop_down_timer) || in qla2x00_configure_fabric()
3522 test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) in qla2x00_configure_fabric()
3540 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf078, in qla2x00_configure_fabric()
3561 qla2x00_fabric_dev_login(vha, fcport, &next_loopid); in qla2x00_configure_fabric()
3573 if (atomic_read(&vha->loop_down_timer) || in qla2x00_configure_fabric()
3574 test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags)) in qla2x00_configure_fabric()
3597 qla2x00_fabric_dev_login(vha, fcport, in qla2x00_configure_fabric()
3600 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf079, in qla2x00_configure_fabric()
3610 list_move_tail(&fcport->list, &vha->vp_fcports); in qla2x00_configure_fabric()
3621 ql_dbg(ql_dbg_disc, vha, 0x2068, in qla2x00_configure_fabric()
3642 qla2x00_find_all_fabric_devs(scsi_qla_host_t *vha, in qla2x00_find_all_fabric_devs() argument
3654 struct qla_hw_data *ha = vha->hw; in qla2x00_find_all_fabric_devs()
3666 ql_dbg(ql_dbg_disc, vha, 0x2054, in qla2x00_find_all_fabric_devs()
3670 if (qla2x00_gid_pt(vha, swl) != QLA_SUCCESS) { in qla2x00_find_all_fabric_devs()
3672 } else if (qla2x00_gpn_id(vha, swl) != QLA_SUCCESS) { in qla2x00_find_all_fabric_devs()
3674 } else if (qla2x00_gnn_id(vha, swl) != QLA_SUCCESS) { in qla2x00_find_all_fabric_devs()
3677 qla2x00_gfpn_id(vha, swl) == QLA_SUCCESS) { in qla2x00_find_all_fabric_devs()
3678 qla2x00_gpsc(vha, swl); in qla2x00_find_all_fabric_devs()
3683 qla2x00_gff_id(vha, swl); in qla2x00_find_all_fabric_devs()
3688 new_fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL); in qla2x00_find_all_fabric_devs()
3690 ql_log(ql_log_warn, vha, 0x205e, in qla2x00_find_all_fabric_devs()
3702 if (qla2x00_is_reserved_id(vha, loop_id)) in qla2x00_find_all_fabric_devs()
3706 (atomic_read(&vha->loop_down_timer) || in qla2x00_find_all_fabric_devs()
3707 LOOP_TRANSITION(vha))) { in qla2x00_find_all_fabric_devs()
3708 atomic_set(&vha->loop_down_timer, 0); in qla2x00_find_all_fabric_devs()
3709 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_find_all_fabric_devs()
3710 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla2x00_find_all_fabric_devs()
3735 rval = qla2x00_ga_nxt(vha, new_fcport); in qla2x00_find_all_fabric_devs()
3737 ql_log(ql_log_warn, vha, 0x2064, in qla2x00_find_all_fabric_devs()
3755 ql_dbg(ql_dbg_disc, vha, 0x2065, in qla2x00_find_all_fabric_devs()
3768 if (qla2x00_is_a_vp_did(vha, new_fcport->d_id.b24)) in qla2x00_find_all_fabric_devs()
3773 (vha->d_id.b24 & 0xffff00)) && ha->current_topology == in qla2x00_find_all_fabric_devs()
3789 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_find_all_fabric_devs()
3830 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf080, in qla2x00_find_all_fabric_devs()
3852 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_find_all_fabric_devs()
3869 new_fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL); in qla2x00_find_all_fabric_devs()
3871 ql_log(ql_log_warn, vha, 0x2066, in qla2x00_find_all_fabric_devs()
3899 qla2x00_find_new_loop_id(scsi_qla_host_t *vha, fc_port_t *dev) in qla2x00_find_new_loop_id() argument
3902 struct qla_hw_data *ha = vha->hw; in qla2x00_find_new_loop_id()
3912 qla2x00_is_reserved_id(vha, dev->loop_id)) { in qla2x00_find_new_loop_id()
3921 ql_dbg(ql_dbg_disc, dev->vha, 0x2086, in qla2x00_find_new_loop_id()
3925 ql_log(ql_log_warn, dev->vha, 0x2087, in qla2x00_find_new_loop_id()
3949 qla2x00_fabric_dev_login(scsi_qla_host_t *vha, fc_port_t *fcport, in qla2x00_fabric_dev_login() argument
3955 struct qla_hw_data *ha = vha->hw; in qla2x00_fabric_dev_login()
3964 rval = qla2x00_post_async_login_work(vha, fcport, NULL); in qla2x00_fabric_dev_login()
3970 rval = qla2x00_fabric_login(vha, fcport, next_loopid); in qla2x00_fabric_dev_login()
3976 rval = qla2x00_get_port_database(vha, fcport, opts); in qla2x00_fabric_dev_login()
3978 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_dev_login()
3981 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_fabric_dev_login()
3983 qla2x00_update_fcport(vha, fcport); in qla2x00_fabric_dev_login()
3987 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_fabric_dev_login()
4008 qla2x00_fabric_login(scsi_qla_host_t *vha, fc_port_t *fcport, in qla2x00_fabric_login() argument
4015 struct qla_hw_data *ha = vha->hw; in qla2x00_fabric_login()
4021 ql_dbg(ql_dbg_disc, vha, 0x2000, in qla2x00_fabric_login()
4028 rval = ha->isp_ops->fabric_login(vha, fcport->loop_id, in qla2x00_fabric_login()
4046 ql_dbg(ql_dbg_disc, vha, 0x2001, in qla2x00_fabric_login()
4094 rval = qla2x00_find_new_loop_id(vha, fcport); in qla2x00_fabric_login()
4106 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_login()
4109 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_fabric_login()
4117 ql_dbg(ql_dbg_disc, vha, 0x2002, in qla2x00_fabric_login()
4124 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_login()
4152 qla2x00_local_device_login(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_local_device_login() argument
4158 rval = qla2x00_login_local_device(vha, fcport, mb, BIT_0); in qla2x00_local_device_login()
4182 qla2x00_loop_resync(scsi_qla_host_t *vha) in qla2x00_loop_resync() argument
4189 if (vha->hw->flags.cpu_affinity_enabled) in qla2x00_loop_resync()
4190 req = vha->hw->req_q_map[0]; in qla2x00_loop_resync()
4192 req = vha->req; in qla2x00_loop_resync()
4195 clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); in qla2x00_loop_resync()
4196 if (vha->flags.online) { in qla2x00_loop_resync()
4197 if (!(rval = qla2x00_fw_ready(vha))) { in qla2x00_loop_resync()
4201 if (!IS_QLAFX00(vha->hw)) { in qla2x00_loop_resync()
4206 qla2x00_marker(vha, req, rsp, 0, 0, in qla2x00_loop_resync()
4208 vha->marker_needed = 0; in qla2x00_loop_resync()
4212 clear_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_loop_resync()
4214 if (IS_QLAFX00(vha->hw)) in qla2x00_loop_resync()
4215 qlafx00_configure_devices(vha); in qla2x00_loop_resync()
4217 qla2x00_configure_loop(vha); in qla2x00_loop_resync()
4220 } while (!atomic_read(&vha->loop_down_timer) && in qla2x00_loop_resync()
4221 !(test_bit(ISP_ABORT_NEEDED, &vha->dpc_flags)) in qla2x00_loop_resync()
4223 &vha->dpc_flags))); in qla2x00_loop_resync()
4227 if (test_bit(ISP_ABORT_NEEDED, &vha->dpc_flags)) in qla2x00_loop_resync()
4231 ql_dbg(ql_dbg_disc, vha, 0x206c, in qla2x00_loop_resync()
4272 struct scsi_qla_host *vha; in qla2x00_update_fcports() local
4278 list_for_each_entry(vha, &base_vha->hw->vp_list, list) { in qla2x00_update_fcports()
4279 atomic_inc(&vha->vref_count); in qla2x00_update_fcports()
4280 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_update_fcports()
4290 qlt_fc_port_deleted(vha, fcport, in qla2x00_update_fcports()
4296 atomic_dec(&vha->vref_count); in qla2x00_update_fcports()
4303 qla83xx_reset_ownership(scsi_qla_host_t *vha) in qla83xx_reset_ownership() argument
4305 struct qla_hw_data *ha = vha->hw; in qla83xx_reset_ownership()
4312 drv_presence = qla8044_rd_direct(vha, in qla83xx_reset_ownership()
4314 dev_part_info1 = qla8044_rd_direct(vha, in qla83xx_reset_ownership()
4316 dev_part_info2 = qla8044_rd_direct(vha, in qla83xx_reset_ownership()
4319 qla83xx_rd_reg(vha, QLA83XX_IDC_DRV_PRESENCE, &drv_presence); in qla83xx_reset_ownership()
4320 qla83xx_rd_reg(vha, QLA83XX_DEV_PARTINFO1, &dev_part_info1); in qla83xx_reset_ownership()
4321 qla83xx_rd_reg(vha, QLA83XX_DEV_PARTINFO2, &dev_part_info2); in qla83xx_reset_ownership()
4355 ql_dbg(ql_dbg_p3p, vha, 0xb07f, in qla83xx_reset_ownership()
4362 __qla83xx_set_drv_ack(scsi_qla_host_t *vha) in __qla83xx_set_drv_ack() argument
4365 struct qla_hw_data *ha = vha->hw; in __qla83xx_set_drv_ack()
4368 rval = qla83xx_rd_reg(vha, QLA83XX_IDC_DRIVER_ACK, &drv_ack); in __qla83xx_set_drv_ack()
4371 rval = qla83xx_wr_reg(vha, QLA83XX_IDC_DRIVER_ACK, drv_ack); in __qla83xx_set_drv_ack()
4378 __qla83xx_clear_drv_ack(scsi_qla_host_t *vha) in __qla83xx_clear_drv_ack() argument
4381 struct qla_hw_data *ha = vha->hw; in __qla83xx_clear_drv_ack()
4384 rval = qla83xx_rd_reg(vha, QLA83XX_IDC_DRIVER_ACK, &drv_ack); in __qla83xx_clear_drv_ack()
4387 rval = qla83xx_wr_reg(vha, QLA83XX_IDC_DRIVER_ACK, drv_ack); in __qla83xx_clear_drv_ack()
4418 qla83xx_idc_audit(scsi_qla_host_t *vha, int audit_type) in qla83xx_idc_audit() argument
4420 struct qla_hw_data *ha = vha->hw; in qla83xx_idc_audit()
4428 qla83xx_wr_reg(vha, QLA83XX_IDC_AUDIT, idc_audit_reg); in qla83xx_idc_audit()
4436 qla83xx_wr_reg(vha, QLA83XX_IDC_AUDIT, idc_audit_reg); in qla83xx_idc_audit()
4440 ql_log(ql_log_warn, vha, 0xb078, in qla83xx_idc_audit()
4448 qla83xx_initiating_reset(scsi_qla_host_t *vha) in qla83xx_initiating_reset() argument
4450 struct qla_hw_data *ha = vha->hw; in qla83xx_initiating_reset()
4453 __qla83xx_get_idc_control(vha, &idc_control); in qla83xx_initiating_reset()
4455 ql_log(ql_log_info, vha, 0xb080, in qla83xx_initiating_reset()
4462 qla83xx_rd_reg(vha, QLA83XX_IDC_DEV_STATE, &dev_state); in qla83xx_initiating_reset()
4464 qla83xx_wr_reg(vha, QLA83XX_IDC_DEV_STATE, in qla83xx_initiating_reset()
4466 ql_log(ql_log_info, vha, 0xb056, "HW State: NEED RESET.\n"); in qla83xx_initiating_reset()
4467 qla83xx_idc_audit(vha, IDC_AUDIT_TIMESTAMP); in qla83xx_initiating_reset()
4470 ql_log(ql_log_info, vha, 0xb057, "HW State: %s.\n", state); in qla83xx_initiating_reset()
4475 qla83xx_idc_unlock(vha, 0); in qla83xx_initiating_reset()
4477 qla83xx_idc_lock(vha, 0); in qla83xx_initiating_reset()
4478 qla83xx_rd_reg(vha, QLA83XX_IDC_DEV_STATE, &dev_state); in qla83xx_initiating_reset()
4483 __qla83xx_set_drv_ack(vha); in qla83xx_initiating_reset()
4489 __qla83xx_set_idc_control(scsi_qla_host_t *vha, uint32_t idc_control) in __qla83xx_set_idc_control() argument
4491 return qla83xx_wr_reg(vha, QLA83XX_IDC_CONTROL, idc_control); in __qla83xx_set_idc_control()
4495 __qla83xx_get_idc_control(scsi_qla_host_t *vha, uint32_t *idc_control) in __qla83xx_get_idc_control() argument
4497 return qla83xx_rd_reg(vha, QLA83XX_IDC_CONTROL, idc_control); in __qla83xx_get_idc_control()
4501 qla83xx_check_driver_presence(scsi_qla_host_t *vha) in qla83xx_check_driver_presence() argument
4504 struct qla_hw_data *ha = vha->hw; in qla83xx_check_driver_presence()
4506 qla83xx_rd_reg(vha, QLA83XX_IDC_DRV_PRESENCE, &drv_presence); in qla83xx_check_driver_presence()
4514 qla83xx_nic_core_reset(scsi_qla_host_t *vha) in qla83xx_nic_core_reset() argument
4517 struct qla_hw_data *ha = vha->hw; in qla83xx_nic_core_reset()
4519 ql_dbg(ql_dbg_p3p, vha, 0xb058, in qla83xx_nic_core_reset()
4522 if (vha->device_flags & DFLG_DEV_FAILED) { in qla83xx_nic_core_reset()
4523 ql_log(ql_log_warn, vha, 0xb059, in qla83xx_nic_core_reset()
4528 qla83xx_idc_lock(vha, 0); in qla83xx_nic_core_reset()
4530 if (qla83xx_check_driver_presence(vha) != QLA_SUCCESS) { in qla83xx_nic_core_reset()
4531 ql_log(ql_log_warn, vha, 0xb05a, in qla83xx_nic_core_reset()
4538 qla83xx_reset_ownership(vha); in qla83xx_nic_core_reset()
4540 rval = qla83xx_initiating_reset(vha); in qla83xx_nic_core_reset()
4547 rval = qla83xx_idc_state_handler(vha); in qla83xx_nic_core_reset()
4551 __qla83xx_clear_drv_ack(vha); in qla83xx_nic_core_reset()
4555 qla83xx_idc_unlock(vha, 0); in qla83xx_nic_core_reset()
4557 ql_dbg(ql_dbg_p3p, vha, 0xb05b, "Exiting %s.\n", __func__); in qla83xx_nic_core_reset()
4563 qla2xxx_mctp_dump(scsi_qla_host_t *vha) in qla2xxx_mctp_dump() argument
4565 struct qla_hw_data *ha = vha->hw; in qla2xxx_mctp_dump()
4570 ql_log(ql_log_info, vha, 0x506d, in qla2xxx_mctp_dump()
4580 ql_log(ql_log_warn, vha, 0x506e, in qla2xxx_mctp_dump()
4587 rval = qla2x00_dump_mctp_data(vha, ha->mctp_dump_dma, in qla2xxx_mctp_dump()
4590 ql_log(ql_log_warn, vha, 0x506f, in qla2xxx_mctp_dump()
4593 ql_log(ql_log_info, vha, 0x5070, in qla2xxx_mctp_dump()
4595 vha->host_no, ha->mctp_dump); in qla2xxx_mctp_dump()
4601 rval = qla83xx_restart_nic_firmware(vha); in qla2xxx_mctp_dump()
4604 ql_log(ql_log_warn, vha, 0x5071, in qla2xxx_mctp_dump()
4607 ql_dbg(ql_dbg_p3p, vha, 0xb084, in qla2xxx_mctp_dump()
4625 qla2x00_quiesce_io(scsi_qla_host_t *vha) in qla2x00_quiesce_io() argument
4627 struct qla_hw_data *ha = vha->hw; in qla2x00_quiesce_io()
4630 ql_dbg(ql_dbg_dpc, vha, 0x401d, in qla2x00_quiesce_io()
4634 if (atomic_read(&vha->loop_state) != LOOP_DOWN) { in qla2x00_quiesce_io()
4635 atomic_set(&vha->loop_state, LOOP_DOWN); in qla2x00_quiesce_io()
4636 qla2x00_mark_all_devices_lost(vha, 0); in qla2x00_quiesce_io()
4640 if (!atomic_read(&vha->loop_down_timer)) in qla2x00_quiesce_io()
4641 atomic_set(&vha->loop_down_timer, in qla2x00_quiesce_io()
4645 qla2x00_eh_wait_for_pending_commands(vha, 0, 0, WAIT_HOST); in qla2x00_quiesce_io()
4649 qla2x00_abort_isp_cleanup(scsi_qla_host_t *vha) in qla2x00_abort_isp_cleanup() argument
4651 struct qla_hw_data *ha = vha->hw; in qla2x00_abort_isp_cleanup()
4660 vha->flags.online = 0; in qla2x00_abort_isp_cleanup()
4662 clear_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); in qla2x00_abort_isp_cleanup()
4663 vha->qla_stats.total_isp_aborts++; in qla2x00_abort_isp_cleanup()
4665 ql_log(ql_log_info, vha, 0x00af, in qla2x00_abort_isp_cleanup()
4673 ha->isp_ops->reset_chip(vha); in qla2x00_abort_isp_cleanup()
4675 atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME); in qla2x00_abort_isp_cleanup()
4676 if (atomic_read(&vha->loop_state) != LOOP_DOWN) { in qla2x00_abort_isp_cleanup()
4677 atomic_set(&vha->loop_state, LOOP_DOWN); in qla2x00_abort_isp_cleanup()
4678 qla2x00_mark_all_devices_lost(vha, 0); in qla2x00_abort_isp_cleanup()
4692 if (!atomic_read(&vha->loop_down_timer)) in qla2x00_abort_isp_cleanup()
4693 atomic_set(&vha->loop_down_timer, in qla2x00_abort_isp_cleanup()
4698 list_for_each_entry(fcport, &vha->vp_fcports, list) in qla2x00_abort_isp_cleanup()
4716 qla82xx_chip_reset_cleanup(vha); in qla2x00_abort_isp_cleanup()
4717 ql_log(ql_log_info, vha, 0x00b4, in qla2x00_abort_isp_cleanup()
4723 vha->flags.online = 0; in qla2x00_abort_isp_cleanup()
4727 qla2x00_abort_all_cmds(vha, DID_RESET << 16); in qla2x00_abort_isp_cleanup()
4746 qla2x00_abort_isp(scsi_qla_host_t *vha) in qla2x00_abort_isp() argument
4750 struct qla_hw_data *ha = vha->hw; in qla2x00_abort_isp()
4755 if (vha->flags.online) { in qla2x00_abort_isp()
4756 qla2x00_abort_isp_cleanup(vha); in qla2x00_abort_isp()
4759 ql_dbg(ql_dbg_p3p, vha, 0xb05c, in qla2x00_abort_isp()
4761 if (qla83xx_clear_drv_presence(vha) != QLA_SUCCESS) in qla2x00_abort_isp()
4762 ql_dbg(ql_dbg_p3p, vha, 0xb073, in qla2x00_abort_isp()
4768 clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); in qla2x00_abort_isp()
4773 ha->isp_ops->get_flash_version(vha, req->ring); in qla2x00_abort_isp()
4775 ha->isp_ops->nvram_config(vha); in qla2x00_abort_isp()
4777 if (!qla2x00_restart_isp(vha)) { in qla2x00_abort_isp()
4778 clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags); in qla2x00_abort_isp()
4780 if (!atomic_read(&vha->loop_down_timer)) { in qla2x00_abort_isp()
4785 vha->marker_needed = 1; in qla2x00_abort_isp()
4788 vha->flags.online = 1; in qla2x00_abort_isp()
4793 clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); in qla2x00_abort_isp()
4796 qla2x00_get_fw_version(vha); in qla2x00_abort_isp()
4801 rval = qla2x00_enable_fce_trace(vha, in qla2x00_abort_isp()
4805 ql_log(ql_log_warn, vha, 0x8033, in qla2x00_abort_isp()
4814 rval = qla2x00_enable_eft_trace(vha, in qla2x00_abort_isp()
4817 ql_log(ql_log_warn, vha, 0x8034, in qla2x00_abort_isp()
4823 vha->flags.online = 1; in qla2x00_abort_isp()
4824 if (test_bit(ISP_ABORT_RETRY, &vha->dpc_flags)) { in qla2x00_abort_isp()
4826 ql_log(ql_log_fatal, vha, 0x8035, in qla2x00_abort_isp()
4833 ha->isp_ops->reset_adapter(vha); in qla2x00_abort_isp()
4834 vha->flags.online = 0; in qla2x00_abort_isp()
4836 &vha->dpc_flags); in qla2x00_abort_isp()
4840 ql_dbg(ql_dbg_taskm, vha, 0x8020, in qla2x00_abort_isp()
4847 ql_dbg(ql_dbg_taskm, vha, 0x8021, in qla2x00_abort_isp()
4850 set_bit(ISP_ABORT_RETRY, &vha->dpc_flags); in qla2x00_abort_isp()
4858 ql_dbg(ql_dbg_taskm, vha, 0x8022, "%s succeeded.\n", __func__); in qla2x00_abort_isp()
4875 ql_dbg(ql_dbg_p3p, vha, 0xb05d, in qla2x00_abort_isp()
4877 if (qla83xx_set_drv_presence(vha) != QLA_SUCCESS) in qla2x00_abort_isp()
4878 ql_dbg(ql_dbg_p3p, vha, 0xb074, in qla2x00_abort_isp()
4882 ql_log(ql_log_warn, vha, 0x8023, "%s **** FAILED ****.\n", in qla2x00_abort_isp()
4900 qla2x00_restart_isp(scsi_qla_host_t *vha) in qla2x00_restart_isp() argument
4903 struct qla_hw_data *ha = vha->hw; in qla2x00_restart_isp()
4909 if (qla2x00_isp_firmware(vha)) { in qla2x00_restart_isp()
4910 vha->flags.online = 0; in qla2x00_restart_isp()
4911 status = ha->isp_ops->chip_diag(vha); in qla2x00_restart_isp()
4913 status = qla2x00_setup_chip(vha); in qla2x00_restart_isp()
4916 if (!status && !(status = qla2x00_init_rings(vha))) { in qla2x00_restart_isp()
4917 clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags); in qla2x00_restart_isp()
4923 status = qla2x00_fw_ready(vha); in qla2x00_restart_isp()
4926 qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL); in qla2x00_restart_isp()
4928 vha->flags.online = 1; in qla2x00_restart_isp()
4935 if (qla_tgt_mode_enabled(vha)) in qla2x00_restart_isp()
4936 qlt_24xx_process_atio_queue(vha); in qla2x00_restart_isp()
4939 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_restart_isp()
4943 if ((vha->device_flags & DFLG_NO_CABLE)) in qla2x00_restart_isp()
5000 qla2x00_reset_adapter(scsi_qla_host_t *vha) in qla2x00_reset_adapter() argument
5003 struct qla_hw_data *ha = vha->hw; in qla2x00_reset_adapter()
5006 vha->flags.online = 0; in qla2x00_reset_adapter()
5018 qla24xx_reset_adapter(scsi_qla_host_t *vha) in qla24xx_reset_adapter() argument
5021 struct qla_hw_data *ha = vha->hw; in qla24xx_reset_adapter()
5027 vha->flags.online = 0; in qla24xx_reset_adapter()
5044 static void qla24xx_nvram_wwn_from_ofw(scsi_qla_host_t *vha, in qla24xx_nvram_wwn_from_ofw() argument
5048 struct qla_hw_data *ha = vha->hw; in qla24xx_nvram_wwn_from_ofw()
5065 qla24xx_nvram_config(scsi_qla_host_t *vha) in qla24xx_nvram_config() argument
5074 struct qla_hw_data *ha = vha->hw; in qla24xx_nvram_config()
5094 ha->isp_ops->read_nvram(vha, (uint8_t *)ha->vpd, in qla24xx_nvram_config()
5099 ha->isp_ops->read_nvram(vha, (uint8_t *)dptr, ha->nvram_base, in qla24xx_nvram_config()
5104 ql_dbg(ql_dbg_init + ql_dbg_buffer, vha, 0x006a, in qla24xx_nvram_config()
5106 ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x010d, in qla24xx_nvram_config()
5114 ql_log(ql_log_warn, vha, 0x006b, in qla24xx_nvram_config()
5117 ql_log(ql_log_warn, vha, 0x006c, in qla24xx_nvram_config()
5147 qla24xx_nvram_wwn_from_ofw(vha, nv); in qla24xx_nvram_config()
5166 if (!qla_ini_mode_enabled(vha)) { in qla24xx_nvram_config()
5173 qlt_24xx_config_nvram_stage1(vha, nv); in qla24xx_nvram_config()
5199 qla2x00_set_model_info(vha, nv->model_name, sizeof(nv->model_name), in qla24xx_nvram_config()
5202 qlt_24xx_config_nvram_stage2(vha, icb); in qla24xx_nvram_config()
5240 memcpy(vha->node_name, icb->node_name, WWN_SIZE); in qla24xx_nvram_config()
5241 memcpy(vha->port_name, icb->port_name, WWN_SIZE); in qla24xx_nvram_config()
5296 if (!vha->flags.init_done) { in qla24xx_nvram_config()
5304 vha->flags.process_response_queue = 0; in qla24xx_nvram_config()
5308 ql_log(ql_log_info, vha, 0x006f, in qla24xx_nvram_config()
5315 vha->flags.process_response_queue = 1; in qla24xx_nvram_config()
5319 ql_log(ql_log_warn, vha, 0x0070, in qla24xx_nvram_config()
5326 qla24xx_load_risc_flash(scsi_qla_host_t *vha, uint32_t *srisc_addr, in qla24xx_load_risc_flash() argument
5335 struct qla_hw_data *ha = vha->hw; in qla24xx_load_risc_flash()
5338 ql_dbg(ql_dbg_init, vha, 0x008b, in qla24xx_load_risc_flash()
5348 qla24xx_read_flash_data(vha, dcode, faddr + 4, 4); in qla24xx_load_risc_flash()
5355 ql_log(ql_log_fatal, vha, 0x008c, in qla24xx_load_risc_flash()
5358 ql_log(ql_log_fatal, vha, 0x008d, in qla24xx_load_risc_flash()
5367 qla24xx_read_flash_data(vha, dcode, faddr, 4); in qla24xx_load_risc_flash()
5379 ql_dbg(ql_dbg_init, vha, 0x008e, in qla24xx_load_risc_flash()
5384 qla24xx_read_flash_data(vha, dcode, faddr, dlen); in qla24xx_load_risc_flash()
5388 rval = qla2x00_load_ram(vha, req->dma, risc_addr, in qla24xx_load_risc_flash()
5391 ql_log(ql_log_fatal, vha, 0x008f, in qla24xx_load_risc_flash()
5415 ql_dbg(ql_dbg_init, vha, 0x0161, in qla24xx_load_risc_flash()
5417 qla24xx_read_flash_data(vha, dcode, faddr, 7); in qla24xx_load_risc_flash()
5419 ql_dbg(ql_dbg_init, vha, 0x0162, in qla24xx_load_risc_flash()
5425 ql_dbg(ql_dbg_init, vha, 0x0163, in qla24xx_load_risc_flash()
5429 ql_log(ql_log_warn, vha, 0x0164, in qla24xx_load_risc_flash()
5437 qla24xx_read_flash_data(vha, dcode, faddr, risc_size); in qla24xx_load_risc_flash()
5442 ql_log(ql_log_warn, vha, 0x0165, in qla24xx_load_risc_flash()
5448 ql_dbg(ql_dbg_init, vha, 0x0166, in qla24xx_load_risc_flash()
5451 ql_log(ql_log_warn, vha, 0x0167, in qla24xx_load_risc_flash()
5460 ql_log(ql_log_warn, vha, 0x0168, "Using default fwdump template\n"); in qla24xx_load_risc_flash()
5467 ql_dbg(ql_dbg_init, vha, 0x0169, in qla24xx_load_risc_flash()
5471 ql_log(ql_log_warn, vha, 0x016a, in qla24xx_load_risc_flash()
5483 ql_log(ql_log_warn, vha, 0x016b, in qla24xx_load_risc_flash()
5489 ql_dbg(ql_dbg_init, vha, 0x016c, in qla24xx_load_risc_flash()
5495 ql_log(ql_log_warn, vha, 0x016d, "Failed default fwdump template\n"); in qla24xx_load_risc_flash()
5506 qla2x00_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr) in qla2x00_load_risc() argument
5513 struct qla_hw_data *ha = vha->hw; in qla2x00_load_risc()
5517 blob = qla2x00_request_firmware(vha); in qla2x00_load_risc()
5519 ql_log(ql_log_info, vha, 0x0083, in qla2x00_load_risc()
5521 ql_log(ql_log_info, vha, 0x0084, in qla2x00_load_risc()
5535 ql_log(ql_log_fatal, vha, 0x0085, in qla2x00_load_risc()
5545 ql_log(ql_log_fatal, vha, 0x0086, in qla2x00_load_risc()
5547 ql_log(ql_log_fatal, vha, 0x0087, in qla2x00_load_risc()
5562 ql_log(ql_log_fatal, vha, 0x0088, in qla2x00_load_risc()
5573 ql_dbg(ql_dbg_init, vha, 0x0089, in qla2x00_load_risc()
5580 rval = qla2x00_load_ram(vha, req->dma, risc_addr, in qla2x00_load_risc()
5583 ql_log(ql_log_fatal, vha, 0x008a, in qla2x00_load_risc()
5605 qla24xx_load_risc_blob(scsi_qla_host_t *vha, uint32_t *srisc_addr) in qla24xx_load_risc_blob() argument
5616 struct qla_hw_data *ha = vha->hw; in qla24xx_load_risc_blob()
5620 blob = qla2x00_request_firmware(vha); in qla24xx_load_risc_blob()
5622 ql_log(ql_log_warn, vha, 0x0090, in qla24xx_load_risc_blob()
5624 ql_log(ql_log_warn, vha, 0x0091, in qla24xx_load_risc_blob()
5631 ql_dbg(ql_dbg_init, vha, 0x0092, in qla24xx_load_risc_blob()
5644 ql_log(ql_log_fatal, vha, 0x0093, in qla24xx_load_risc_blob()
5655 ql_log(ql_log_fatal, vha, 0x0094, in qla24xx_load_risc_blob()
5658 ql_log(ql_log_fatal, vha, 0x0095, in qla24xx_load_risc_blob()
5672 ql_log(ql_log_fatal, vha, 0x0096, in qla24xx_load_risc_blob()
5684 ql_dbg(ql_dbg_init, vha, 0x0097, in qla24xx_load_risc_blob()
5691 rval = qla2x00_load_ram(vha, req->dma, risc_addr, in qla24xx_load_risc_blob()
5694 ql_log(ql_log_fatal, vha, 0x0098, in qla24xx_load_risc_blob()
5718 ql_dbg(ql_dbg_init, vha, 0x171, in qla24xx_load_risc_blob()
5722 ql_dbg(ql_dbg_init, vha, 0x172, in qla24xx_load_risc_blob()
5728 ql_dbg(ql_dbg_init, vha, 0x0173, in qla24xx_load_risc_blob()
5732 ql_log(ql_log_warn, vha, 0x0174, in qla24xx_load_risc_blob()
5744 ql_log(ql_log_warn, vha, 0x0175, in qla24xx_load_risc_blob()
5750 ql_dbg(ql_dbg_init, vha, 0x0176, in qla24xx_load_risc_blob()
5753 ql_log(ql_log_warn, vha, 0x0177, in qla24xx_load_risc_blob()
5762 ql_log(ql_log_warn, vha, 0x0178, "Using default fwdump template\n"); in qla24xx_load_risc_blob()
5769 ql_dbg(ql_dbg_init, vha, 0x0179, in qla24xx_load_risc_blob()
5773 ql_log(ql_log_warn, vha, 0x017a, in qla24xx_load_risc_blob()
5785 ql_log(ql_log_warn, vha, 0x017b, in qla24xx_load_risc_blob()
5791 ql_dbg(ql_dbg_init, vha, 0x017c, in qla24xx_load_risc_blob()
5797 ql_log(ql_log_warn, vha, 0x017d, "Failed default fwdump template\n"); in qla24xx_load_risc_blob()
5806 qla24xx_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr) in qla24xx_load_risc() argument
5811 return qla81xx_load_risc(vha, srisc_addr); in qla24xx_load_risc()
5818 rval = qla24xx_load_risc_blob(vha, srisc_addr); in qla24xx_load_risc()
5822 return qla24xx_load_risc_flash(vha, srisc_addr, in qla24xx_load_risc()
5823 vha->hw->flt_region_fw); in qla24xx_load_risc()
5827 qla81xx_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr) in qla81xx_load_risc() argument
5830 struct qla_hw_data *ha = vha->hw; in qla81xx_load_risc()
5841 rval = qla24xx_load_risc_flash(vha, srisc_addr, ha->flt_region_fw); in qla81xx_load_risc()
5846 rval = qla24xx_load_risc_blob(vha, srisc_addr); in qla81xx_load_risc()
5850 ql_log(ql_log_info, vha, 0x0099, in qla81xx_load_risc()
5852 rval = qla24xx_load_risc_flash(vha, srisc_addr, ha->flt_region_gold_fw); in qla81xx_load_risc()
5856 ql_log(ql_log_info, vha, 0x009a, "Update operational firmware.\n"); in qla81xx_load_risc()
5862 qla2x00_try_to_stop_firmware(scsi_qla_host_t *vha) in qla2x00_try_to_stop_firmware() argument
5865 struct qla_hw_data *ha = vha->hw; in qla2x00_try_to_stop_firmware()
5874 ret = qla2x00_stop_firmware(vha); in qla2x00_try_to_stop_firmware()
5877 ha->isp_ops->reset_chip(vha); in qla2x00_try_to_stop_firmware()
5878 if (ha->isp_ops->chip_diag(vha) != QLA_SUCCESS) in qla2x00_try_to_stop_firmware()
5880 if (qla2x00_setup_chip(vha) != QLA_SUCCESS) in qla2x00_try_to_stop_firmware()
5882 ql_log(ql_log_info, vha, 0x8015, in qla2x00_try_to_stop_firmware()
5884 ret = qla2x00_stop_firmware(vha); in qla2x00_try_to_stop_firmware()
5889 qla24xx_configure_vhba(scsi_qla_host_t *vha) in qla24xx_configure_vhba() argument
5894 struct qla_hw_data *ha = vha->hw; in qla24xx_configure_vhba()
5899 if (!vha->vp_idx) in qla24xx_configure_vhba()
5906 req = vha->req; in qla24xx_configure_vhba()
5910 clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags); in qla24xx_configure_vhba()
5911 qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL); in qla24xx_configure_vhba()
5914 vha->flags.management_server_logged_in = 0; in qla24xx_configure_vhba()
5917 rval2 = ha->isp_ops->fabric_login(vha, NPH_SNS, 0xff, 0xff, 0xfc, mb, in qla24xx_configure_vhba()
5921 ql_dbg(ql_dbg_init, vha, 0x0120, in qla24xx_configure_vhba()
5925 ql_dbg(ql_dbg_init, vha, 0x0103, in qla24xx_configure_vhba()
5932 atomic_set(&vha->loop_down_timer, 0); in qla24xx_configure_vhba()
5933 atomic_set(&vha->loop_state, LOOP_UP); in qla24xx_configure_vhba()
5934 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla24xx_configure_vhba()
5935 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla24xx_configure_vhba()
5947 qla84xx_get_chip(struct scsi_qla_host *vha) in qla84xx_get_chip() argument
5950 struct qla_hw_data *ha = vha->hw; in qla84xx_get_chip()
5990 qla84xx_put_chip(struct scsi_qla_host *vha) in qla84xx_put_chip() argument
5992 struct qla_hw_data *ha = vha->hw; in qla84xx_put_chip()
5998 qla84xx_init_chip(scsi_qla_host_t *vha) in qla84xx_init_chip() argument
6002 struct qla_hw_data *ha = vha->hw; in qla84xx_init_chip()
6006 rval = qla84xx_verify_chip(vha, status); in qla84xx_init_chip()
6017 qla81xx_nvram_config(scsi_qla_host_t *vha) in qla81xx_nvram_config() argument
6026 struct qla_hw_data *ha = vha->hw; in qla81xx_nvram_config()
6040 ha->isp_ops->read_optrom(vha, ha->vpd, ha->flt_region_vpd << 2, in qla81xx_nvram_config()
6044 ha->isp_ops->read_optrom(vha, ha->nvram, ha->flt_region_nvram << 2, in qla81xx_nvram_config()
6050 ql_dbg(ql_dbg_init + ql_dbg_buffer, vha, 0x0111, in qla81xx_nvram_config()
6052 ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x0112, in qla81xx_nvram_config()
6060 ql_log(ql_log_info, vha, 0x0073, in qla81xx_nvram_config()
6064 ql_log(ql_log_info, vha, 0x0074, in qla81xx_nvram_config()
6120 qlt_81xx_config_nvram_stage1(vha, nv); in qla81xx_nvram_config()
6159 qla2x00_set_model_info(vha, nv->model_name, sizeof(nv->model_name), in qla81xx_nvram_config()
6162 qlt_81xx_config_nvram_stage2(vha, icb); in qla81xx_nvram_config()
6197 memcpy(vha->node_name, icb->node_name, WWN_SIZE); in qla81xx_nvram_config()
6198 memcpy(vha->port_name, icb->port_name, WWN_SIZE); in qla81xx_nvram_config()
6253 if (!vha->hw->flags.msix_enabled && (IS_QLA83XX(ha) || IS_QLA27XX(ha))) in qla81xx_nvram_config()
6257 if (!vha->flags.init_done) { in qla81xx_nvram_config()
6265 vha->flags.process_response_queue = 0; in qla81xx_nvram_config()
6269 ql_log(ql_log_info, vha, 0x0075, in qla81xx_nvram_config()
6277 vha->flags.process_response_queue = 1; in qla81xx_nvram_config()
6281 ql_log(ql_log_warn, vha, 0x0076, in qla81xx_nvram_config()
6288 qla82xx_restart_isp(scsi_qla_host_t *vha) in qla82xx_restart_isp() argument
6291 struct qla_hw_data *ha = vha->hw; in qla82xx_restart_isp()
6297 status = qla2x00_init_rings(vha); in qla82xx_restart_isp()
6299 clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags); in qla82xx_restart_isp()
6302 status = qla2x00_fw_ready(vha); in qla82xx_restart_isp()
6305 qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL); in qla82xx_restart_isp()
6306 vha->flags.online = 1; in qla82xx_restart_isp()
6307 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla82xx_restart_isp()
6311 if ((vha->device_flags & DFLG_NO_CABLE)) in qla82xx_restart_isp()
6316 clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags); in qla82xx_restart_isp()
6318 if (!atomic_read(&vha->loop_down_timer)) { in qla82xx_restart_isp()
6323 vha->marker_needed = 1; in qla82xx_restart_isp()
6329 clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags); in qla82xx_restart_isp()
6332 status = qla82xx_check_md_needed(vha); in qla82xx_restart_isp()
6338 rval = qla2x00_enable_fce_trace(vha, in qla82xx_restart_isp()
6342 ql_log(ql_log_warn, vha, 0x8001, in qla82xx_restart_isp()
6351 rval = qla2x00_enable_eft_trace(vha, in qla82xx_restart_isp()
6354 ql_log(ql_log_warn, vha, 0x8010, in qla82xx_restart_isp()
6362 ql_dbg(ql_dbg_taskm, vha, 0x8011, in qla82xx_restart_isp()
6380 ql_log(ql_log_warn, vha, 0x8016, in qla82xx_restart_isp()
6388 qla81xx_update_fw_options(scsi_qla_host_t *vha) in qla81xx_update_fw_options() argument
6390 struct qla_hw_data *ha = vha->hw; in qla81xx_update_fw_options()
6398 qla2x00_set_fw_options(vha, ha->fw_options); in qla81xx_update_fw_options()
6420 qla24xx_get_fcp_prio(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_get_fcp_prio() argument
6428 struct qla_hw_data *ha = vha->hw; in qla24xx_get_fcp_prio()
6448 pid2 = vha->d_id.b24 & INVALID_PORT_ID; in qla24xx_get_fcp_prio()
6467 wwn1 = wwn_to_u64(vha->port_name); in qla24xx_get_fcp_prio()
6513 qla24xx_update_fcport_fcp_prio(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_update_fcport_fcp_prio() argument
6523 priority = qla24xx_get_fcp_prio(vha, fcport); in qla24xx_update_fcport_fcp_prio()
6527 if (IS_P3P_TYPE(vha->hw)) { in qla24xx_update_fcport_fcp_prio()
6532 ret = qla24xx_set_fcp_prio(vha, fcport->loop_id, priority, mb); in qla24xx_update_fcport_fcp_prio()
6535 ql_dbg(ql_dbg_user, vha, 0x709e, in qla24xx_update_fcport_fcp_prio()
6542 ql_dbg(ql_dbg_user, vha, 0x704f, in qla24xx_update_fcport_fcp_prio()
6564 qla24xx_update_all_fcp_prio(scsi_qla_host_t *vha) in qla24xx_update_all_fcp_prio() argument
6571 list_for_each_entry(fcport, &vha->vp_fcports, list) in qla24xx_update_all_fcp_prio()
6572 ret = qla24xx_update_fcport_fcp_prio(vha, fcport); in qla24xx_update_all_fcp_prio()