aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
authorAtul Deshmukh <atul.deshmukh@qlogic.com>2013-08-27 01:37:28 -0400
committerJames Bottomley <JBottomley@Parallels.com>2013-09-03 10:28:00 -0400
commit7ec0effd30bb4b1379cd2f5ed1a7bd6b9ec49cfd (patch)
treee249c7e5d1a3ae11eeeb2e0aef0883872d7e74ce /drivers/scsi/qla2xxx/qla_isr.c
parent7b8335589035b47504f98c1a22547f514386a48c (diff)
[SCSI] qla2xxx: Add support for ISP8044.
[jejb: checkpatch fixes] Signed-off-by: Atul Deshmukh <atul.deshmukh@qlogic.com> Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index e779506fda75..b4fb8a6b8aa0 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -691,7 +691,8 @@ skip_rio:
691 case MBA_LOOP_DOWN: /* Loop Down Event */ 691 case MBA_LOOP_DOWN: /* Loop Down Event */
692 mbx = (IS_QLA81XX(ha) || IS_QLA8031(ha)) 692 mbx = (IS_QLA81XX(ha) || IS_QLA8031(ha))
693 ? RD_REG_WORD(&reg24->mailbox4) : 0; 693 ? RD_REG_WORD(&reg24->mailbox4) : 0;
694 mbx = IS_QLA82XX(ha) ? RD_REG_WORD(&reg82->mailbox_out[4]) : mbx; 694 mbx = (IS_P3P_TYPE(ha)) ? RD_REG_WORD(&reg82->mailbox_out[4])
695 : mbx;
695 ql_dbg(ql_dbg_async, vha, 0x500b, 696 ql_dbg(ql_dbg_async, vha, 0x500b,
696 "LOOP DOWN detected (%x %x %x %x).\n", 697 "LOOP DOWN detected (%x %x %x %x).\n",
697 mb[1], mb[2], mb[3], mbx); 698 mb[1], mb[2], mb[3], mbx);
@@ -740,7 +741,7 @@ skip_rio:
740 if (IS_QLA2100(ha)) 741 if (IS_QLA2100(ha))
741 break; 742 break;
742 743
743 if (IS_QLA81XX(ha) || IS_QLA82XX(ha) || IS_QLA8031(ha)) { 744 if (IS_CNA_CAPABLE(ha)) {
744 ql_dbg(ql_dbg_async, vha, 0x500d, 745 ql_dbg(ql_dbg_async, vha, 0x500d,
745 "DCBX Completed -- %04x %04x %04x.\n", 746 "DCBX Completed -- %04x %04x %04x.\n",
746 mb[1], mb[2], mb[3]); 747 mb[1], mb[2], mb[3]);
@@ -1002,7 +1003,7 @@ skip_rio:
1002 mb[1], mb[2], mb[3]); 1003 mb[1], mb[2], mb[3]);
1003 break; 1004 break;
1004 case MBA_IDC_NOTIFY: 1005 case MBA_IDC_NOTIFY:
1005 if (IS_QLA8031(vha->hw)) { 1006 if (IS_QLA8031(vha->hw) || IS_QLA8044(ha)) {
1006 mb[4] = RD_REG_WORD(&reg24->mailbox4); 1007 mb[4] = RD_REG_WORD(&reg24->mailbox4);
1007 if (((mb[2] & 0x7fff) == MBC_PORT_RESET || 1008 if (((mb[2] & 0x7fff) == MBC_PORT_RESET ||
1008 (mb[2] & 0x7fff) == MBC_SET_PORT_CONFIG) && 1009 (mb[2] & 0x7fff) == MBC_SET_PORT_CONFIG) &&
@@ -1022,7 +1023,8 @@ skip_rio:
1022 complete(&ha->lb_portup_comp); 1023 complete(&ha->lb_portup_comp);
1023 /* Fallthru */ 1024 /* Fallthru */
1024 case MBA_IDC_TIME_EXT: 1025 case MBA_IDC_TIME_EXT:
1025 if (IS_QLA81XX(vha->hw) || IS_QLA8031(vha->hw)) 1026 if (IS_QLA81XX(vha->hw) || IS_QLA8031(vha->hw) ||
1027 IS_QLA8044(ha))
1026 qla81xx_idc_event(vha, mb[0], mb[1]); 1028 qla81xx_idc_event(vha, mb[0], mb[1]);
1027 break; 1029 break;
1028 1030
@@ -1063,7 +1065,7 @@ qla2x00_process_completed_request(struct scsi_qla_host *vha,
1063 ql_log(ql_log_warn, vha, 0x3014, 1065 ql_log(ql_log_warn, vha, 0x3014,
1064 "Invalid SCSI command index (%x).\n", index); 1066 "Invalid SCSI command index (%x).\n", index);
1065 1067
1066 if (IS_QLA82XX(ha)) 1068 if (IS_P3P_TYPE(ha))
1067 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags); 1069 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags);
1068 else 1070 else
1069 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); 1071 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
@@ -1080,7 +1082,7 @@ qla2x00_process_completed_request(struct scsi_qla_host *vha,
1080 } else { 1082 } else {
1081 ql_log(ql_log_warn, vha, 0x3016, "Invalid SCSI SRB.\n"); 1083 ql_log(ql_log_warn, vha, 0x3016, "Invalid SCSI SRB.\n");
1082 1084
1083 if (IS_QLA82XX(ha)) 1085 if (IS_P3P_TYPE(ha))
1084 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags); 1086 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags);
1085 else 1087 else
1086 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); 1088 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
@@ -1100,7 +1102,7 @@ qla2x00_get_sp_from_handle(scsi_qla_host_t *vha, const char *func,
1100 if (index >= req->num_outstanding_cmds) { 1102 if (index >= req->num_outstanding_cmds) {
1101 ql_log(ql_log_warn, vha, 0x5031, 1103 ql_log(ql_log_warn, vha, 0x5031,
1102 "Invalid command index (%x).\n", index); 1104 "Invalid command index (%x).\n", index);
1103 if (IS_QLA82XX(ha)) 1105 if (IS_P3P_TYPE(ha))
1104 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags); 1106 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags);
1105 else 1107 else
1106 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); 1108 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
@@ -1949,7 +1951,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1949 ql_dbg(ql_dbg_io, vha, 0x3017, 1951 ql_dbg(ql_dbg_io, vha, 0x3017,
1950 "Invalid status handle (0x%x).\n", sts->handle); 1952 "Invalid status handle (0x%x).\n", sts->handle);
1951 1953
1952 if (IS_QLA82XX(ha)) 1954 if (IS_P3P_TYPE(ha))
1953 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags); 1955 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags);
1954 else 1956 else
1955 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); 1957 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
@@ -2321,7 +2323,7 @@ fatal:
2321 ql_log(ql_log_warn, vha, 0x5030, 2323 ql_log(ql_log_warn, vha, 0x5030,
2322 "Error entry - invalid handle/queue.\n"); 2324 "Error entry - invalid handle/queue.\n");
2323 2325
2324 if (IS_QLA82XX(ha)) 2326 if (IS_P3P_TYPE(ha))
2325 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags); 2327 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags);
2326 else 2328 else
2327 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); 2329 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
@@ -2449,7 +2451,7 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
2449 } 2451 }
2450 2452
2451 /* Adjust ring index */ 2453 /* Adjust ring index */
2452 if (IS_QLA82XX(ha)) { 2454 if (IS_P3P_TYPE(ha)) {
2453 struct device_reg_82xx __iomem *reg = &ha->iobase->isp82; 2455 struct device_reg_82xx __iomem *reg = &ha->iobase->isp82;
2454 WRT_REG_DWORD(&reg->rsp_q_out[0], rsp->ring_index); 2456 WRT_REG_DWORD(&reg->rsp_q_out[0], rsp->ring_index);
2455 } else 2457 } else
@@ -2862,7 +2864,7 @@ msix_failed:
2862 ret = request_irq(qentry->vector, 2864 ret = request_irq(qentry->vector,
2863 qla83xx_msix_entries[i].handler, 2865 qla83xx_msix_entries[i].handler,
2864 0, qla83xx_msix_entries[i].name, rsp); 2866 0, qla83xx_msix_entries[i].name, rsp);
2865 } else if (IS_QLA82XX(ha)) { 2867 } else if (IS_P3P_TYPE(ha)) {
2866 ret = request_irq(qentry->vector, 2868 ret = request_irq(qentry->vector,
2867 qla82xx_msix_entries[i].handler, 2869 qla82xx_msix_entries[i].handler,
2868 0, qla82xx_msix_entries[i].name, rsp); 2870 0, qla82xx_msix_entries[i].name, rsp);
@@ -2947,7 +2949,7 @@ qla2x00_request_irqs(struct qla_hw_data *ha, struct rsp_que *rsp)
2947skip_msix: 2949skip_msix:
2948 2950
2949 if (!IS_QLA24XX(ha) && !IS_QLA2532(ha) && !IS_QLA8432(ha) && 2951 if (!IS_QLA24XX(ha) && !IS_QLA2532(ha) && !IS_QLA8432(ha) &&
2950 !IS_QLA8001(ha) && !IS_QLA82XX(ha) && !IS_QLAFX00(ha)) 2952 !IS_QLA8001(ha) && !IS_P3P_TYPE(ha) && !IS_QLAFX00(ha))
2951 goto skip_msi; 2953 goto skip_msi;
2952 2954
2953 ret = pci_enable_msi(ha->pdev); 2955 ret = pci_enable_msi(ha->pdev);