aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla4xxx/ql4_isr.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_isr.c')
-rw-r--r--drivers/scsi/qla4xxx/ql4_isr.c34
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",