aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-09 21:54:06 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-09 21:54:06 -0400
commit1c54fc1efe6922b4e7ffd591739d72050976ccd6 (patch)
tree0f7f0eaa91fa06bba11da240915eb6a4040b482a /drivers/scsi/qla2xxx/qla_isr.c
parentf4f9b8fc73f9aa93744f0e91e18f367d7766f523 (diff)
parentb4c43993f448d0e25fe40690d9e9c81a8ebda623 (diff)
Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "This patch consists of the usual driver updates (qla2xxx, qla4xxx, lpfc, be2iscsi, fnic, ufs, NCR5380) The NCR5380 is the addition to maintained status of a long neglected driver for older hardware. In addition there are a lot of minor fixes and cleanups and some more updates to make scsi mq ready" * tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (130 commits) include/scsi/osd_protocol.h: remove unnecessary __constant mvsas: Recognise device/subsystem 9485/9485 as 88SE9485 Revert "be2iscsi: Fix processing cqe for cxn whose endpoint is freed" mptfusion: fix msgContext in mptctl_hp_hostinfo acornscsi: remove linked command support scsi/NCR5380: dprintk macro fusion: Remove use of DEF_SCSI_QCMD fusion: Add free msg frames to the head, not tail of list mpt2sas: Add free smids to the head, not tail of list mpt2sas: Remove use of DEF_SCSI_QCMD mpt2sas: Remove uses of serial_number mpt3sas: Remove use of DEF_SCSI_QCMD mpt3sas: Remove uses of serial_number qla2xxx: Use kmemdup instead of kmalloc + memcpy qla4xxx: Use kmemdup instead of kmalloc + memcpy qla2xxx: fix incorrect debug printk be2iscsi: Bump the driver version be2iscsi: Fix processing cqe for cxn whose endpoint is freed be2iscsi: Fix destroy MCC-CQ before MCC-EQ is destroyed be2iscsi: Fix memory corruption in MBX path ...
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 95314ef2e505..a56825c73c31 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * QLogic Fibre Channel HBA Driver 2 * QLogic Fibre Channel HBA Driver
3 * Copyright (c) 2003-2013 QLogic Corporation 3 * Copyright (c) 2003-2014 QLogic Corporation
4 * 4 *
5 * See LICENSE.qla2xxx for copyright and licensing details. 5 * See LICENSE.qla2xxx for copyright and licensing details.
6 */ 6 */
@@ -2009,11 +2009,13 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
2009 ql_dbg(ql_dbg_io, vha, 0x3017, 2009 ql_dbg(ql_dbg_io, vha, 0x3017,
2010 "Invalid status handle (0x%x).\n", sts->handle); 2010 "Invalid status handle (0x%x).\n", sts->handle);
2011 2011
2012 if (IS_P3P_TYPE(ha)) 2012 if (!test_bit(ABORT_ISP_ACTIVE, &vha->dpc_flags)) {
2013 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags); 2013 if (IS_P3P_TYPE(ha))
2014 else 2014 set_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags);
2015 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); 2015 else
2016 qla2xxx_wake_dpc(vha); 2016 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
2017 qla2xxx_wake_dpc(vha);
2018 }
2017 return; 2019 return;
2018 } 2020 }
2019 2021
@@ -2472,12 +2474,14 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
2472 if (pkt->entry_status != 0) { 2474 if (pkt->entry_status != 0) {
2473 qla2x00_error_entry(vha, rsp, (sts_entry_t *) pkt); 2475 qla2x00_error_entry(vha, rsp, (sts_entry_t *) pkt);
2474 2476
2475 (void)qlt_24xx_process_response_error(vha, pkt); 2477 if (qlt_24xx_process_response_error(vha, pkt))
2478 goto process_err;
2476 2479
2477 ((response_t *)pkt)->signature = RESPONSE_PROCESSED; 2480 ((response_t *)pkt)->signature = RESPONSE_PROCESSED;
2478 wmb(); 2481 wmb();
2479 continue; 2482 continue;
2480 } 2483 }
2484process_err:
2481 2485
2482 switch (pkt->entry_type) { 2486 switch (pkt->entry_type) {
2483 case STATUS_TYPE: 2487 case STATUS_TYPE:
@@ -2494,10 +2498,10 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
2494 qla24xx_logio_entry(vha, rsp->req, 2498 qla24xx_logio_entry(vha, rsp->req,
2495 (struct logio_entry_24xx *)pkt); 2499 (struct logio_entry_24xx *)pkt);
2496 break; 2500 break;
2497 case CT_IOCB_TYPE: 2501 case CT_IOCB_TYPE:
2498 qla24xx_els_ct_entry(vha, rsp->req, pkt, CT_IOCB_TYPE); 2502 qla24xx_els_ct_entry(vha, rsp->req, pkt, CT_IOCB_TYPE);
2499 break; 2503 break;
2500 case ELS_IOCB_TYPE: 2504 case ELS_IOCB_TYPE:
2501 qla24xx_els_ct_entry(vha, rsp->req, pkt, ELS_IOCB_TYPE); 2505 qla24xx_els_ct_entry(vha, rsp->req, pkt, ELS_IOCB_TYPE);
2502 break; 2506 break;
2503 case ABTS_RECV_24XX: 2507 case ABTS_RECV_24XX:
@@ -2506,6 +2510,7 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
2506 case ABTS_RESP_24XX: 2510 case ABTS_RESP_24XX:
2507 case CTIO_TYPE7: 2511 case CTIO_TYPE7:
2508 case NOTIFY_ACK_TYPE: 2512 case NOTIFY_ACK_TYPE:
2513 case CTIO_CRC2:
2509 qlt_response_pkt_all_vps(vha, (response_t *)pkt); 2514 qlt_response_pkt_all_vps(vha, (response_t *)pkt);
2510 break; 2515 break;
2511 case MARKER_TYPE: 2516 case MARKER_TYPE: