diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 6e133edb2016..57179dabcccf 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1365,6 +1365,9 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1365 | ha->isp_ops.intr_handler = qla2300_intr_handler; | 1365 | ha->isp_ops.intr_handler = qla2300_intr_handler; |
1366 | ha->isp_ops.fw_dump = qla2300_fw_dump; | 1366 | ha->isp_ops.fw_dump = qla2300_fw_dump; |
1367 | ha->isp_ops.ascii_fw_dump = qla2300_ascii_fw_dump; | 1367 | ha->isp_ops.ascii_fw_dump = qla2300_ascii_fw_dump; |
1368 | ha->isp_ops.beacon_on = qla2x00_beacon_on; | ||
1369 | ha->isp_ops.beacon_off = qla2x00_beacon_off; | ||
1370 | ha->isp_ops.beacon_blink = qla2x00_beacon_blink; | ||
1368 | ha->gid_list_info_size = 6; | 1371 | ha->gid_list_info_size = 6; |
1369 | } else if (IS_QLA24XX(ha) || IS_QLA25XX(ha)) { | 1372 | } else if (IS_QLA24XX(ha) || IS_QLA25XX(ha)) { |
1370 | host->max_id = MAX_TARGETS_2200; | 1373 | host->max_id = MAX_TARGETS_2200; |
@@ -1401,6 +1404,9 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1401 | ha->isp_ops.write_nvram = qla24xx_write_nvram_data; | 1404 | ha->isp_ops.write_nvram = qla24xx_write_nvram_data; |
1402 | ha->isp_ops.fw_dump = qla24xx_fw_dump; | 1405 | ha->isp_ops.fw_dump = qla24xx_fw_dump; |
1403 | ha->isp_ops.ascii_fw_dump = qla24xx_ascii_fw_dump; | 1406 | ha->isp_ops.ascii_fw_dump = qla24xx_ascii_fw_dump; |
1407 | ha->isp_ops.beacon_on = qla24xx_beacon_on; | ||
1408 | ha->isp_ops.beacon_off = qla24xx_beacon_off; | ||
1409 | ha->isp_ops.beacon_blink = qla24xx_beacon_blink; | ||
1404 | ha->gid_list_info_size = 8; | 1410 | ha->gid_list_info_size = 8; |
1405 | } | 1411 | } |
1406 | host->can_queue = ha->request_q_length + 128; | 1412 | host->can_queue = ha->request_q_length + 128; |
@@ -2315,6 +2321,9 @@ qla2x00_do_dpc(void *data) | |||
2315 | if (!ha->interrupts_on) | 2321 | if (!ha->interrupts_on) |
2316 | ha->isp_ops.enable_intrs(ha); | 2322 | ha->isp_ops.enable_intrs(ha); |
2317 | 2323 | ||
2324 | if (test_and_clear_bit(BEACON_BLINK_NEEDED, &ha->dpc_flags)) | ||
2325 | ha->isp_ops.beacon_blink(ha); | ||
2326 | |||
2318 | ha->dpc_active = 0; | 2327 | ha->dpc_active = 0; |
2319 | } /* End of while(1) */ | 2328 | } /* End of while(1) */ |
2320 | 2329 | ||
@@ -2492,6 +2501,12 @@ qla2x00_timer(scsi_qla_host_t *ha) | |||
2492 | atomic_read(&ha->loop_down_timer))); | 2501 | atomic_read(&ha->loop_down_timer))); |
2493 | } | 2502 | } |
2494 | 2503 | ||
2504 | /* Check if beacon LED needs to be blinked */ | ||
2505 | if (ha->beacon_blink_led == 1) { | ||
2506 | set_bit(BEACON_BLINK_NEEDED, &ha->dpc_flags); | ||
2507 | start_dpc++; | ||
2508 | } | ||
2509 | |||
2495 | /* Schedule the DPC routine if needed */ | 2510 | /* Schedule the DPC routine if needed */ |
2496 | if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || | 2511 | if ((test_bit(ISP_ABORT_NEEDED, &ha->dpc_flags) || |
2497 | test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || | 2512 | test_bit(LOOP_RESYNC_NEEDED, &ha->dpc_flags) || |
@@ -2500,6 +2515,7 @@ qla2x00_timer(scsi_qla_host_t *ha) | |||
2500 | start_dpc || | 2515 | start_dpc || |
2501 | test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) || | 2516 | test_bit(LOGIN_RETRY_NEEDED, &ha->dpc_flags) || |
2502 | test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) || | 2517 | test_bit(RESET_MARKER_NEEDED, &ha->dpc_flags) || |
2518 | test_bit(BEACON_BLINK_NEEDED, &ha->dpc_flags) || | ||
2503 | test_bit(RELOGIN_NEEDED, &ha->dpc_flags)) && | 2519 | test_bit(RELOGIN_NEEDED, &ha->dpc_flags)) && |
2504 | ha->dpc_wait && !ha->dpc_active) { | 2520 | ha->dpc_wait && !ha->dpc_active) { |
2505 | 2521 | ||