diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 175 |
1 files changed, 142 insertions, 33 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 9207aeb3cdbe..f92b22bca7ea 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1247,7 +1247,7 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd) | |||
1247 | if (qla2x00_vp_abort_isp(vha)) | 1247 | if (qla2x00_vp_abort_isp(vha)) |
1248 | goto eh_host_reset_lock; | 1248 | goto eh_host_reset_lock; |
1249 | } else { | 1249 | } else { |
1250 | if (IS_QLA82XX(vha->hw)) { | 1250 | if (IS_P3P_TYPE(vha->hw)) { |
1251 | if (!qla82xx_fcoe_ctx_reset(vha)) { | 1251 | if (!qla82xx_fcoe_ctx_reset(vha)) { |
1252 | /* Ctx reset success */ | 1252 | /* Ctx reset success */ |
1253 | ret = SUCCESS; | 1253 | ret = SUCCESS; |
@@ -1911,7 +1911,7 @@ static struct isp_operations qla2300_isp_ops = { | |||
1911 | .get_flash_version = qla2x00_get_flash_version, | 1911 | .get_flash_version = qla2x00_get_flash_version, |
1912 | .start_scsi = qla2x00_start_scsi, | 1912 | .start_scsi = qla2x00_start_scsi, |
1913 | .abort_isp = qla2x00_abort_isp, | 1913 | .abort_isp = qla2x00_abort_isp, |
1914 | .iospace_config = qla2x00_iospace_config, | 1914 | .iospace_config = qla2x00_iospace_config, |
1915 | .initialize_adapter = qla2x00_initialize_adapter, | 1915 | .initialize_adapter = qla2x00_initialize_adapter, |
1916 | }; | 1916 | }; |
1917 | 1917 | ||
@@ -1949,7 +1949,7 @@ static struct isp_operations qla24xx_isp_ops = { | |||
1949 | .get_flash_version = qla24xx_get_flash_version, | 1949 | .get_flash_version = qla24xx_get_flash_version, |
1950 | .start_scsi = qla24xx_start_scsi, | 1950 | .start_scsi = qla24xx_start_scsi, |
1951 | .abort_isp = qla2x00_abort_isp, | 1951 | .abort_isp = qla2x00_abort_isp, |
1952 | .iospace_config = qla2x00_iospace_config, | 1952 | .iospace_config = qla2x00_iospace_config, |
1953 | .initialize_adapter = qla2x00_initialize_adapter, | 1953 | .initialize_adapter = qla2x00_initialize_adapter, |
1954 | }; | 1954 | }; |
1955 | 1955 | ||
@@ -1987,7 +1987,7 @@ static struct isp_operations qla25xx_isp_ops = { | |||
1987 | .get_flash_version = qla24xx_get_flash_version, | 1987 | .get_flash_version = qla24xx_get_flash_version, |
1988 | .start_scsi = qla24xx_dif_start_scsi, | 1988 | .start_scsi = qla24xx_dif_start_scsi, |
1989 | .abort_isp = qla2x00_abort_isp, | 1989 | .abort_isp = qla2x00_abort_isp, |
1990 | .iospace_config = qla2x00_iospace_config, | 1990 | .iospace_config = qla2x00_iospace_config, |
1991 | .initialize_adapter = qla2x00_initialize_adapter, | 1991 | .initialize_adapter = qla2x00_initialize_adapter, |
1992 | }; | 1992 | }; |
1993 | 1993 | ||
@@ -2025,7 +2025,7 @@ static struct isp_operations qla81xx_isp_ops = { | |||
2025 | .get_flash_version = qla24xx_get_flash_version, | 2025 | .get_flash_version = qla24xx_get_flash_version, |
2026 | .start_scsi = qla24xx_dif_start_scsi, | 2026 | .start_scsi = qla24xx_dif_start_scsi, |
2027 | .abort_isp = qla2x00_abort_isp, | 2027 | .abort_isp = qla2x00_abort_isp, |
2028 | .iospace_config = qla2x00_iospace_config, | 2028 | .iospace_config = qla2x00_iospace_config, |
2029 | .initialize_adapter = qla2x00_initialize_adapter, | 2029 | .initialize_adapter = qla2x00_initialize_adapter, |
2030 | }; | 2030 | }; |
2031 | 2031 | ||
@@ -2060,13 +2060,51 @@ static struct isp_operations qla82xx_isp_ops = { | |||
2060 | .beacon_blink = NULL, | 2060 | .beacon_blink = NULL, |
2061 | .read_optrom = qla82xx_read_optrom_data, | 2061 | .read_optrom = qla82xx_read_optrom_data, |
2062 | .write_optrom = qla82xx_write_optrom_data, | 2062 | .write_optrom = qla82xx_write_optrom_data, |
2063 | .get_flash_version = qla24xx_get_flash_version, | 2063 | .get_flash_version = qla82xx_get_flash_version, |
2064 | .start_scsi = qla82xx_start_scsi, | 2064 | .start_scsi = qla82xx_start_scsi, |
2065 | .abort_isp = qla82xx_abort_isp, | 2065 | .abort_isp = qla82xx_abort_isp, |
2066 | .iospace_config = qla82xx_iospace_config, | 2066 | .iospace_config = qla82xx_iospace_config, |
2067 | .initialize_adapter = qla2x00_initialize_adapter, | 2067 | .initialize_adapter = qla2x00_initialize_adapter, |
2068 | }; | 2068 | }; |
2069 | 2069 | ||
2070 | static struct isp_operations qla8044_isp_ops = { | ||
2071 | .pci_config = qla82xx_pci_config, | ||
2072 | .reset_chip = qla82xx_reset_chip, | ||
2073 | .chip_diag = qla24xx_chip_diag, | ||
2074 | .config_rings = qla82xx_config_rings, | ||
2075 | .reset_adapter = qla24xx_reset_adapter, | ||
2076 | .nvram_config = qla81xx_nvram_config, | ||
2077 | .update_fw_options = qla24xx_update_fw_options, | ||
2078 | .load_risc = qla82xx_load_risc, | ||
2079 | .pci_info_str = qla24xx_pci_info_str, | ||
2080 | .fw_version_str = qla24xx_fw_version_str, | ||
2081 | .intr_handler = qla8044_intr_handler, | ||
2082 | .enable_intrs = qla82xx_enable_intrs, | ||
2083 | .disable_intrs = qla82xx_disable_intrs, | ||
2084 | .abort_command = qla24xx_abort_command, | ||
2085 | .target_reset = qla24xx_abort_target, | ||
2086 | .lun_reset = qla24xx_lun_reset, | ||
2087 | .fabric_login = qla24xx_login_fabric, | ||
2088 | .fabric_logout = qla24xx_fabric_logout, | ||
2089 | .calc_req_entries = NULL, | ||
2090 | .build_iocbs = NULL, | ||
2091 | .prep_ms_iocb = qla24xx_prep_ms_iocb, | ||
2092 | .prep_ms_fdmi_iocb = qla24xx_prep_ms_fdmi_iocb, | ||
2093 | .read_nvram = NULL, | ||
2094 | .write_nvram = NULL, | ||
2095 | .fw_dump = qla24xx_fw_dump, | ||
2096 | .beacon_on = qla82xx_beacon_on, | ||
2097 | .beacon_off = qla82xx_beacon_off, | ||
2098 | .beacon_blink = NULL, | ||
2099 | .read_optrom = qla82xx_read_optrom_data, | ||
2100 | .write_optrom = qla8044_write_optrom_data, | ||
2101 | .get_flash_version = qla82xx_get_flash_version, | ||
2102 | .start_scsi = qla82xx_start_scsi, | ||
2103 | .abort_isp = qla8044_abort_isp, | ||
2104 | .iospace_config = qla82xx_iospace_config, | ||
2105 | .initialize_adapter = qla2x00_initialize_adapter, | ||
2106 | }; | ||
2107 | |||
2070 | static struct isp_operations qla83xx_isp_ops = { | 2108 | static struct isp_operations qla83xx_isp_ops = { |
2071 | .pci_config = qla25xx_pci_config, | 2109 | .pci_config = qla25xx_pci_config, |
2072 | .reset_chip = qla24xx_reset_chip, | 2110 | .reset_chip = qla24xx_reset_chip, |
@@ -2237,6 +2275,14 @@ qla2x00_set_isp_flags(struct qla_hw_data *ha) | |||
2237 | /* Initialize 82XX ISP flags */ | 2275 | /* Initialize 82XX ISP flags */ |
2238 | qla82xx_init_flags(ha); | 2276 | qla82xx_init_flags(ha); |
2239 | break; | 2277 | break; |
2278 | case PCI_DEVICE_ID_QLOGIC_ISP8044: | ||
2279 | ha->device_type |= DT_ISP8044; | ||
2280 | ha->device_type |= DT_ZIO_SUPPORTED; | ||
2281 | ha->device_type |= DT_FWI2; | ||
2282 | ha->fw_srisc_address = RISC_START_ADDRESS_2400; | ||
2283 | /* Initialize 82XX ISP flags */ | ||
2284 | qla82xx_init_flags(ha); | ||
2285 | break; | ||
2240 | case PCI_DEVICE_ID_QLOGIC_ISP2031: | 2286 | case PCI_DEVICE_ID_QLOGIC_ISP2031: |
2241 | ha->device_type |= DT_ISP2031; | 2287 | ha->device_type |= DT_ISP2031; |
2242 | ha->device_type |= DT_ZIO_SUPPORTED; | 2288 | ha->device_type |= DT_ZIO_SUPPORTED; |
@@ -2317,7 +2363,6 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2317 | uint16_t req_length = 0, rsp_length = 0; | 2363 | uint16_t req_length = 0, rsp_length = 0; |
2318 | struct req_que *req = NULL; | 2364 | struct req_que *req = NULL; |
2319 | struct rsp_que *rsp = NULL; | 2365 | struct rsp_que *rsp = NULL; |
2320 | |||
2321 | bars = pci_select_bars(pdev, IORESOURCE_MEM | IORESOURCE_IO); | 2366 | bars = pci_select_bars(pdev, IORESOURCE_MEM | IORESOURCE_IO); |
2322 | sht = &qla2xxx_driver_template; | 2367 | sht = &qla2xxx_driver_template; |
2323 | if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 || | 2368 | if (pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422 || |
@@ -2330,7 +2375,8 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2330 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP8021 || | 2375 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP8021 || |
2331 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2031 || | 2376 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2031 || |
2332 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP8031 || | 2377 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP8031 || |
2333 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISPF001) { | 2378 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISPF001 || |
2379 | pdev->device == PCI_DEVICE_ID_QLOGIC_ISP8044) { | ||
2334 | bars = pci_select_bars(pdev, IORESOURCE_MEM); | 2380 | bars = pci_select_bars(pdev, IORESOURCE_MEM); |
2335 | mem_only = 1; | 2381 | mem_only = 1; |
2336 | ql_dbg_pci(ql_dbg_init, pdev, 0x0007, | 2382 | ql_dbg_pci(ql_dbg_init, pdev, 0x0007, |
@@ -2484,6 +2530,21 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
2484 | ha->flash_data_off = FARX_ACCESS_FLASH_DATA; | 2530 | ha->flash_data_off = FARX_ACCESS_FLASH_DATA; |
2485 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; | 2531 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; |
2486 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; | 2532 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; |
2533 | } else if (IS_QLA8044(ha)) { | ||
2534 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; | ||
2535 | ha->mbx_count = MAILBOX_REGISTER_COUNT; | ||
2536 | req_length = REQUEST_ENTRY_CNT_82XX; | ||
2537 | rsp_length = RESPONSE_ENTRY_CNT_82XX; | ||
2538 | ha->max_loop_id = SNS_LAST_LOOP_ID_2300; | ||
2539 | ha->init_cb_size = sizeof(struct mid_init_cb_81xx); | ||
2540 | ha->gid_list_info_size = 8; | ||
2541 | ha->optrom_size = OPTROM_SIZE_83XX; | ||
2542 | ha->nvram_npiv_size = QLA_MAX_VPORTS_QLA25XX; | ||
2543 | ha->isp_ops = &qla8044_isp_ops; | ||
2544 | ha->flash_conf_off = FARX_ACCESS_FLASH_CONF; | ||
2545 | ha->flash_data_off = FARX_ACCESS_FLASH_DATA; | ||
2546 | ha->nvram_conf_off = FARX_ACCESS_NVRAM_CONF; | ||
2547 | ha->nvram_data_off = FARX_ACCESS_NVRAM_DATA; | ||
2487 | } else if (IS_QLA83XX(ha)) { | 2548 | } else if (IS_QLA83XX(ha)) { |
2488 | ha->portnum = PCI_FUNC(ha->pdev->devfn); | 2549 | ha->portnum = PCI_FUNC(ha->pdev->devfn); |
2489 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; | 2550 | ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400; |
@@ -2676,7 +2737,7 @@ que_init: | |||
2676 | rsp->rsp_q_out = &ha->iobase->ispfx00.rsp_q_out; | 2737 | rsp->rsp_q_out = &ha->iobase->ispfx00.rsp_q_out; |
2677 | } | 2738 | } |
2678 | 2739 | ||
2679 | if (IS_QLA82XX(ha)) { | 2740 | if (IS_P3P_TYPE(ha)) { |
2680 | req->req_q_out = &ha->iobase->isp82.req_q_out[0]; | 2741 | req->req_q_out = &ha->iobase->isp82.req_q_out[0]; |
2681 | rsp->rsp_q_in = &ha->iobase->isp82.rsp_q_in[0]; | 2742 | rsp->rsp_q_in = &ha->iobase->isp82.rsp_q_in[0]; |
2682 | rsp->rsp_q_out = &ha->iobase->isp82.rsp_q_out[0]; | 2743 | rsp->rsp_q_out = &ha->iobase->isp82.rsp_q_out[0]; |
@@ -2709,6 +2770,14 @@ que_init: | |||
2709 | qla82xx_idc_unlock(ha); | 2770 | qla82xx_idc_unlock(ha); |
2710 | ql_log(ql_log_fatal, base_vha, 0x00d7, | 2771 | ql_log(ql_log_fatal, base_vha, 0x00d7, |
2711 | "HW State: FAILED.\n"); | 2772 | "HW State: FAILED.\n"); |
2773 | } else if (IS_QLA8044(ha)) { | ||
2774 | qla8044_idc_lock(ha); | ||
2775 | qla8044_wr_direct(base_vha, | ||
2776 | QLA8044_CRB_DEV_STATE_INDEX, | ||
2777 | QLA8XXX_DEV_FAILED); | ||
2778 | qla8044_idc_unlock(ha); | ||
2779 | ql_log(ql_log_fatal, base_vha, 0x0150, | ||
2780 | "HW State: FAILED.\n"); | ||
2712 | } | 2781 | } |
2713 | 2782 | ||
2714 | ret = -ENODEV; | 2783 | ret = -ENODEV; |
@@ -2881,8 +2950,13 @@ probe_hw_failed: | |||
2881 | qla82xx_clear_drv_active(ha); | 2950 | qla82xx_clear_drv_active(ha); |
2882 | qla82xx_idc_unlock(ha); | 2951 | qla82xx_idc_unlock(ha); |
2883 | } | 2952 | } |
2953 | if (IS_QLA8044(ha)) { | ||
2954 | qla8044_idc_lock(ha); | ||
2955 | qla8044_clear_drv_active(base_vha); | ||
2956 | qla8044_idc_unlock(ha); | ||
2957 | } | ||
2884 | iospace_config_failed: | 2958 | iospace_config_failed: |
2885 | if (IS_QLA82XX(ha)) { | 2959 | if (IS_P3P_TYPE(ha)) { |
2886 | if (!ha->nx_pcibase) | 2960 | if (!ha->nx_pcibase) |
2887 | iounmap((device_reg_t __iomem *)ha->nx_pcibase); | 2961 | iounmap((device_reg_t __iomem *)ha->nx_pcibase); |
2888 | if (!ql2xdbwr) | 2962 | if (!ql2xdbwr) |
@@ -3061,6 +3135,11 @@ qla2x00_remove_one(struct pci_dev *pdev) | |||
3061 | 3135 | ||
3062 | scsi_host_put(base_vha->host); | 3136 | scsi_host_put(base_vha->host); |
3063 | 3137 | ||
3138 | if (IS_QLA8044(ha)) { | ||
3139 | qla8044_idc_lock(ha); | ||
3140 | qla8044_clear_drv_active(base_vha); | ||
3141 | qla8044_idc_unlock(ha); | ||
3142 | } | ||
3064 | if (IS_QLA82XX(ha)) { | 3143 | if (IS_QLA82XX(ha)) { |
3065 | qla82xx_idc_lock(ha); | 3144 | qla82xx_idc_lock(ha); |
3066 | qla82xx_clear_drv_active(ha); | 3145 | qla82xx_clear_drv_active(ha); |
@@ -3284,7 +3363,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len, | |||
3284 | if (!ha->srb_mempool) | 3363 | if (!ha->srb_mempool) |
3285 | goto fail_free_gid_list; | 3364 | goto fail_free_gid_list; |
3286 | 3365 | ||
3287 | if (IS_QLA82XX(ha)) { | 3366 | if (IS_P3P_TYPE(ha)) { |
3288 | /* Allocate cache for CT6 Ctx. */ | 3367 | /* Allocate cache for CT6 Ctx. */ |
3289 | if (!ctx_cachep) { | 3368 | if (!ctx_cachep) { |
3290 | ctx_cachep = kmem_cache_create("qla2xxx_ctx", | 3369 | ctx_cachep = kmem_cache_create("qla2xxx_ctx", |
@@ -3318,7 +3397,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len, | |||
3318 | "init_cb=%p gid_list=%p, srb_mempool=%p s_dma_pool=%p.\n", | 3397 | "init_cb=%p gid_list=%p, srb_mempool=%p s_dma_pool=%p.\n", |
3319 | ha->init_cb, ha->gid_list, ha->srb_mempool, ha->s_dma_pool); | 3398 | ha->init_cb, ha->gid_list, ha->srb_mempool, ha->s_dma_pool); |
3320 | 3399 | ||
3321 | if (IS_QLA82XX(ha) || ql2xenabledif) { | 3400 | if (IS_P3P_TYPE(ha) || ql2xenabledif) { |
3322 | ha->dl_dma_pool = dma_pool_create(name, &ha->pdev->dev, | 3401 | ha->dl_dma_pool = dma_pool_create(name, &ha->pdev->dev, |
3323 | DSD_LIST_DMA_POOL_SIZE, 8, 0); | 3402 | DSD_LIST_DMA_POOL_SIZE, 8, 0); |
3324 | if (!ha->dl_dma_pool) { | 3403 | if (!ha->dl_dma_pool) { |
@@ -3526,7 +3605,7 @@ fail: | |||
3526 | * Frees fw dump stuff. | 3605 | * Frees fw dump stuff. |
3527 | * | 3606 | * |
3528 | * Input: | 3607 | * Input: |
3529 | * ha = adapter block pointer. | 3608 | * ha = adapter block pointer |
3530 | */ | 3609 | */ |
3531 | static void | 3610 | static void |
3532 | qla2x00_free_fw_dump(struct qla_hw_data *ha) | 3611 | qla2x00_free_fw_dump(struct qla_hw_data *ha) |
@@ -4693,17 +4772,33 @@ qla2x00_do_dpc(void *data) | |||
4693 | 4772 | ||
4694 | qla2x00_do_work(base_vha); | 4773 | qla2x00_do_work(base_vha); |
4695 | 4774 | ||
4696 | if (IS_QLA82XX(ha)) { | 4775 | if (IS_P3P_TYPE(ha)) { |
4697 | if (test_and_clear_bit(ISP_UNRECOVERABLE, | 4776 | if (IS_QLA8044(ha)) { |
4698 | &base_vha->dpc_flags)) { | 4777 | if (test_and_clear_bit(ISP_UNRECOVERABLE, |
4699 | qla82xx_idc_lock(ha); | 4778 | &base_vha->dpc_flags)) { |
4700 | qla82xx_wr_32(ha, QLA82XX_CRB_DEV_STATE, | 4779 | qla8044_idc_lock(ha); |
4701 | QLA8XXX_DEV_FAILED); | 4780 | qla8044_wr_direct(base_vha, |
4702 | qla82xx_idc_unlock(ha); | 4781 | QLA8044_CRB_DEV_STATE_INDEX, |
4703 | ql_log(ql_log_info, base_vha, 0x4004, | 4782 | QLA8XXX_DEV_FAILED); |
4704 | "HW State: FAILED.\n"); | 4783 | qla8044_idc_unlock(ha); |
4705 | qla82xx_device_state_handler(base_vha); | 4784 | ql_log(ql_log_info, base_vha, 0x4004, |
4706 | continue; | 4785 | "HW State: FAILED.\n"); |
4786 | qla8044_device_state_handler(base_vha); | ||
4787 | continue; | ||
4788 | } | ||
4789 | |||
4790 | } else { | ||
4791 | if (test_and_clear_bit(ISP_UNRECOVERABLE, | ||
4792 | &base_vha->dpc_flags)) { | ||
4793 | qla82xx_idc_lock(ha); | ||
4794 | qla82xx_wr_32(ha, QLA82XX_CRB_DEV_STATE, | ||
4795 | QLA8XXX_DEV_FAILED); | ||
4796 | qla82xx_idc_unlock(ha); | ||
4797 | ql_log(ql_log_info, base_vha, 0x0151, | ||
4798 | "HW State: FAILED.\n"); | ||
4799 | qla82xx_device_state_handler(base_vha); | ||
4800 | continue; | ||
4801 | } | ||
4707 | } | 4802 | } |
4708 | 4803 | ||
4709 | if (test_and_clear_bit(FCOE_CTX_RESET_NEEDED, | 4804 | if (test_and_clear_bit(FCOE_CTX_RESET_NEEDED, |
@@ -4803,16 +4898,26 @@ qla2x00_do_dpc(void *data) | |||
4803 | if (test_bit(ISP_QUIESCE_NEEDED, &base_vha->dpc_flags)) { | 4898 | if (test_bit(ISP_QUIESCE_NEEDED, &base_vha->dpc_flags)) { |
4804 | ql_dbg(ql_dbg_dpc, base_vha, 0x4009, | 4899 | ql_dbg(ql_dbg_dpc, base_vha, 0x4009, |
4805 | "Quiescence mode scheduled.\n"); | 4900 | "Quiescence mode scheduled.\n"); |
4806 | if (IS_QLA82XX(ha)) { | 4901 | if (IS_P3P_TYPE(ha)) { |
4807 | qla82xx_device_state_handler(base_vha); | 4902 | if (IS_QLA82XX(ha)) |
4903 | qla82xx_device_state_handler(base_vha); | ||
4904 | if (IS_QLA8044(ha)) | ||
4905 | qla8044_device_state_handler(base_vha); | ||
4808 | clear_bit(ISP_QUIESCE_NEEDED, | 4906 | clear_bit(ISP_QUIESCE_NEEDED, |
4809 | &base_vha->dpc_flags); | 4907 | &base_vha->dpc_flags); |
4810 | if (!ha->flags.quiesce_owner) { | 4908 | if (!ha->flags.quiesce_owner) { |
4811 | qla2x00_perform_loop_resync(base_vha); | 4909 | qla2x00_perform_loop_resync(base_vha); |
4812 | 4910 | if (IS_QLA82XX(ha)) { | |
4813 | qla82xx_idc_lock(ha); | 4911 | qla82xx_idc_lock(ha); |
4814 | qla82xx_clear_qsnt_ready(base_vha); | 4912 | qla82xx_clear_qsnt_ready( |
4815 | qla82xx_idc_unlock(ha); | 4913 | base_vha); |
4914 | qla82xx_idc_unlock(ha); | ||
4915 | } else if (IS_QLA8044(ha)) { | ||
4916 | qla8044_idc_lock(ha); | ||
4917 | qla8044_clear_qsnt_ready( | ||
4918 | base_vha); | ||
4919 | qla8044_idc_unlock(ha); | ||
4920 | } | ||
4816 | } | 4921 | } |
4817 | } else { | 4922 | } else { |
4818 | clear_bit(ISP_QUIESCE_NEEDED, | 4923 | clear_bit(ISP_QUIESCE_NEEDED, |
@@ -4986,10 +5091,13 @@ qla2x00_timer(scsi_qla_host_t *vha) | |||
4986 | pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w); | 5091 | pci_read_config_word(ha->pdev, PCI_VENDOR_ID, &w); |
4987 | 5092 | ||
4988 | /* Make sure qla82xx_watchdog is run only for physical port */ | 5093 | /* Make sure qla82xx_watchdog is run only for physical port */ |
4989 | if (!vha->vp_idx && IS_QLA82XX(ha)) { | 5094 | if (!vha->vp_idx && IS_P3P_TYPE(ha)) { |
4990 | if (test_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags)) | 5095 | if (test_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags)) |
4991 | start_dpc++; | 5096 | start_dpc++; |
4992 | qla82xx_watchdog(vha); | 5097 | if (IS_QLA82XX(ha)) |
5098 | qla82xx_watchdog(vha); | ||
5099 | else if (IS_QLA8044(ha)) | ||
5100 | qla8044_watchdog(vha); | ||
4993 | } | 5101 | } |
4994 | 5102 | ||
4995 | if (!vha->vp_idx && IS_QLAFX00(ha)) | 5103 | if (!vha->vp_idx && IS_QLAFX00(ha)) |
@@ -5069,7 +5177,7 @@ qla2x00_timer(scsi_qla_host_t *vha) | |||
5069 | /* Check if beacon LED needs to be blinked for physical host only */ | 5177 | /* Check if beacon LED needs to be blinked for physical host only */ |
5070 | if (!vha->vp_idx && (ha->beacon_blink_led == 1)) { | 5178 | if (!vha->vp_idx && (ha->beacon_blink_led == 1)) { |
5071 | /* There is no beacon_blink function for ISP82xx */ | 5179 | /* There is no beacon_blink function for ISP82xx */ |
5072 | if (!IS_QLA82XX(ha)) { | 5180 | if (!IS_P3P_TYPE(ha)) { |
5073 | set_bit(BEACON_BLINK_NEEDED, &vha->dpc_flags); | 5181 | set_bit(BEACON_BLINK_NEEDED, &vha->dpc_flags); |
5074 | start_dpc++; | 5182 | start_dpc++; |
5075 | } | 5183 | } |
@@ -5513,6 +5621,7 @@ static struct pci_device_id qla2xxx_pci_tbl[] = { | |||
5513 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8021) }, | 5621 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8021) }, |
5514 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8031) }, | 5622 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8031) }, |
5515 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISPF001) }, | 5623 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISPF001) }, |
5624 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP8044) }, | ||
5516 | { 0 }, | 5625 | { 0 }, |
5517 | }; | 5626 | }; |
5518 | MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl); | 5627 | MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl); |