diff options
author | Vikas Chaudhary <vikas.chaudhary@qlogic.com> | 2010-04-28 02:08:11 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-05-02 15:39:20 -0400 |
commit | 065aa1b4db63c7fa68a3e889510c4e63404a1ac7 (patch) | |
tree | 11a19a7faf1ef71d0a8f45f385b87c8235155f64 /drivers/scsi/qla4xxx/ql4_isr.c | |
parent | 2a49a78ed3c8d7c8319595270110c69f99c61a74 (diff) |
[SCSI] qla4xxx: set device state as per Link UP and LINK DOWN
Link Down -> Mark all devices missing
Previously, the driver took no action on a Link Down,
and waited for the I/O on a dead connection to timeout
in the firmware before marking the DDB missing.
Link Up -> Mark all devices online
F/W will do auto login to all the devices only once.
After that its the responsibility of the driver to
relogin to devices whenever there is :
* Any sort of connection failure or
* KATO expires indicating target has logged out or
* I/O times out etc.
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: Karen Higgins <karen.higgins@qlogic.com>
Signed-off-by: Ravi Anand <ravi.anand@qlogic.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_isr.c')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_isr.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c index c196d55eae39..9db286df7ca0 100644 --- a/drivers/scsi/qla4xxx/ql4_isr.c +++ b/drivers/scsi/qla4xxx/ql4_isr.c | |||
@@ -498,15 +498,22 @@ static void qla4xxx_isr_decode_mailbox(struct scsi_qla_host * ha, | |||
498 | break; | 498 | break; |
499 | 499 | ||
500 | case MBOX_ASTS_LINK_UP: | 500 | case MBOX_ASTS_LINK_UP: |
501 | DEBUG2(printk("scsi%ld: AEN %04x Adapter LINK UP\n", | ||
502 | ha->host_no, mbox_status)); | ||
503 | set_bit(AF_LINK_UP, &ha->flags); | 501 | set_bit(AF_LINK_UP, &ha->flags); |
502 | if (test_bit(AF_INIT_DONE, &ha->flags)) | ||
503 | set_bit(DPC_LINK_CHANGED, &ha->dpc_flags); | ||
504 | |||
505 | DEBUG2(printk(KERN_INFO "scsi%ld: AEN %04x Adapter" | ||
506 | " LINK UP\n", ha->host_no, | ||
507 | mbox_status)); | ||
504 | break; | 508 | break; |
505 | 509 | ||
506 | case MBOX_ASTS_LINK_DOWN: | 510 | case MBOX_ASTS_LINK_DOWN: |
507 | DEBUG2(printk("scsi%ld: AEN %04x Adapter LINK DOWN\n", | ||
508 | ha->host_no, mbox_status)); | ||
509 | clear_bit(AF_LINK_UP, &ha->flags); | 511 | clear_bit(AF_LINK_UP, &ha->flags); |
512 | set_bit(DPC_LINK_CHANGED, &ha->dpc_flags); | ||
513 | |||
514 | DEBUG2(printk(KERN_INFO "scsi%ld: AEN %04x Adapter" | ||
515 | " LINK DOWN\n", ha->host_no, | ||
516 | mbox_status)); | ||
510 | break; | 517 | break; |
511 | 518 | ||
512 | case MBOX_ASTS_HEARTBEAT: | 519 | case MBOX_ASTS_HEARTBEAT: |