diff options
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_isr.c')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_isr.c | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_isr.c b/drivers/scsi/qla4xxx/ql4_isr.c index fbd415db5a52..4fefa3429a5f 100644 --- a/drivers/scsi/qla4xxx/ql4_isr.c +++ b/drivers/scsi/qla4xxx/ql4_isr.c | |||
@@ -745,17 +745,23 @@ static void qla4xxx_isr_decode_mailbox(struct scsi_qla_host * ha, | |||
745 | * mbox_sts[3] = new ACB state */ | 745 | * mbox_sts[3] = new ACB state */ |
746 | if ((mbox_sts[3] == ACB_STATE_VALID) && | 746 | if ((mbox_sts[3] == ACB_STATE_VALID) && |
747 | ((mbox_sts[2] == ACB_STATE_TENTATIVE) || | 747 | ((mbox_sts[2] == ACB_STATE_TENTATIVE) || |
748 | (mbox_sts[2] == ACB_STATE_ACQUIRING))) | 748 | (mbox_sts[2] == ACB_STATE_ACQUIRING))) { |
749 | set_bit(DPC_GET_DHCP_IP_ADDR, &ha->dpc_flags); | 749 | set_bit(DPC_GET_DHCP_IP_ADDR, &ha->dpc_flags); |
750 | else if ((mbox_sts[3] == ACB_STATE_ACQUIRING) && | 750 | } else if ((mbox_sts[3] == ACB_STATE_ACQUIRING) && |
751 | (mbox_sts[2] == ACB_STATE_VALID)) { | 751 | (mbox_sts[2] == ACB_STATE_VALID)) { |
752 | if (is_qla80XX(ha)) | 752 | if (is_qla80XX(ha)) |
753 | set_bit(DPC_RESET_HA_FW_CONTEXT, | 753 | set_bit(DPC_RESET_HA_FW_CONTEXT, |
754 | &ha->dpc_flags); | 754 | &ha->dpc_flags); |
755 | else | 755 | else |
756 | set_bit(DPC_RESET_HA, &ha->dpc_flags); | 756 | set_bit(DPC_RESET_HA, &ha->dpc_flags); |
757 | } else if ((mbox_sts[3] == ACB_STATE_UNCONFIGURED)) | 757 | } else if (mbox_sts[3] == ACB_STATE_DISABLING) { |
758 | ql4_printk(KERN_INFO, ha, "scsi%ld: %s: ACB in disabling state\n", | ||
759 | ha->host_no, __func__); | ||
760 | } else if ((mbox_sts[3] == ACB_STATE_UNCONFIGURED)) { | ||
758 | complete(&ha->disable_acb_comp); | 761 | complete(&ha->disable_acb_comp); |
762 | ql4_printk(KERN_INFO, ha, "scsi%ld: %s: ACB state unconfigured\n", | ||
763 | ha->host_no, __func__); | ||
764 | } | ||
759 | break; | 765 | break; |
760 | 766 | ||
761 | case MBOX_ASTS_MAC_ADDRESS_CHANGED: | 767 | case MBOX_ASTS_MAC_ADDRESS_CHANGED: |
@@ -869,10 +875,15 @@ static void qla4xxx_isr_decode_mailbox(struct scsi_qla_host * ha, | |||
869 | "scsi:%ld: AEN %04x IDC Complete notification\n", | 875 | "scsi:%ld: AEN %04x IDC Complete notification\n", |
870 | ha->host_no, mbox_sts[0])); | 876 | ha->host_no, mbox_sts[0])); |
871 | 877 | ||
872 | if (qla4_83xx_loopback_in_progress(ha)) | 878 | if (qla4_83xx_loopback_in_progress(ha)) { |
873 | set_bit(AF_LOOPBACK, &ha->flags); | 879 | set_bit(AF_LOOPBACK, &ha->flags); |
874 | else | 880 | } else { |
875 | clear_bit(AF_LOOPBACK, &ha->flags); | 881 | clear_bit(AF_LOOPBACK, &ha->flags); |
882 | if (ha->saved_acb) | ||
883 | set_bit(DPC_RESTORE_ACB, | ||
884 | &ha->dpc_flags); | ||
885 | } | ||
886 | qla4xxx_wake_dpc(ha); | ||
876 | } | 887 | } |
877 | break; | 888 | break; |
878 | 889 | ||
@@ -887,6 +898,17 @@ static void qla4xxx_isr_decode_mailbox(struct scsi_qla_host * ha, | |||
887 | ha->host_no, mbox_sts[0])); | 898 | ha->host_no, mbox_sts[0])); |
888 | break; | 899 | break; |
889 | 900 | ||
901 | case MBOX_ASTS_IDC_TIME_EXTEND_NOTIFICATION: | ||
902 | DEBUG2(ql4_printk(KERN_INFO, ha, | ||
903 | "scsi%ld: AEN %04x, mbox_sts[1]=%08x, mbox_sts[2]=%08x, mbox_sts[3]=%08x, mbox_sts[4]=%08x mbox_sts[5]=%08x\n", | ||
904 | ha->host_no, mbox_sts[0], mbox_sts[1], | ||
905 | mbox_sts[2], mbox_sts[3], mbox_sts[4], | ||
906 | mbox_sts[5])); | ||
907 | DEBUG2(ql4_printk(KERN_INFO, ha, | ||
908 | "scsi%ld: AEN %04x Received IDC Extend Timeout notification\n", | ||
909 | ha->host_no, mbox_sts[0])); | ||
910 | break; | ||
911 | |||
890 | case MBOX_ASTS_INITIALIZATION_FAILED: | 912 | case MBOX_ASTS_INITIALIZATION_FAILED: |
891 | DEBUG2(ql4_printk(KERN_INFO, ha, | 913 | DEBUG2(ql4_printk(KERN_INFO, ha, |
892 | "scsi%ld: AEN %04x, mbox_sts[3]=%08x\n", | 914 | "scsi%ld: AEN %04x, mbox_sts[3]=%08x\n", |