aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
authorArmen Baloyan <armen.baloyan@qlogic.com>2014-02-26 04:15:18 -0500
committerJames Bottomley <JBottomley@Parallels.com>2014-03-15 13:18:53 -0400
commit4440e46d5db7b445a961a84444849b2a31fa7fd1 (patch)
tree749aabd6001295df16788f7423351ead583c0b98 /drivers/scsi/qla2xxx/qla_isr.c
parentfaef62d134631c1f390006d51d49c76033f9504f (diff)
[SCSI] qla2xxx: Add IOCB Abort command asynchronous handling.
Send aborts to the firmware via the request/response queue mechanism. Signed-off-by: Armen Baloyan <armen.baloyan@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.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 293dbd565840..95314ef2e505 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -2428,6 +2428,23 @@ qla24xx_mbx_completion(scsi_qla_host_t *vha, uint16_t mb0)
2428 } 2428 }
2429} 2429}
2430 2430
2431static void
2432qla24xx_abort_iocb_entry(scsi_qla_host_t *vha, struct req_que *req,
2433 struct abort_entry_24xx *pkt)
2434{
2435 const char func[] = "ABT_IOCB";
2436 srb_t *sp;
2437 struct srb_iocb *abt;
2438
2439 sp = qla2x00_get_sp_from_handle(vha, func, req, pkt);
2440 if (!sp)
2441 return;
2442
2443 abt = &sp->u.iocb_cmd;
2444 abt->u.abt.comp_status = le32_to_cpu(pkt->nport_handle);
2445 sp->done(vha, sp, 0);
2446}
2447
2431/** 2448/**
2432 * qla24xx_process_response_queue() - Process response queue entries. 2449 * qla24xx_process_response_queue() - Process response queue entries.
2433 * @ha: SCSI driver HA context 2450 * @ha: SCSI driver HA context
@@ -2496,6 +2513,10 @@ void qla24xx_process_response_queue(struct scsi_qla_host *vha,
2496 * from falling into default case 2513 * from falling into default case
2497 */ 2514 */
2498 break; 2515 break;
2516 case ABORT_IOCB_TYPE:
2517 qla24xx_abort_iocb_entry(vha, rsp->req,
2518 (struct abort_entry_24xx *)pkt);
2519 break;
2499 default: 2520 default:
2500 /* Type Not Supported. */ 2521 /* Type Not Supported. */
2501 ql_dbg(ql_dbg_async, vha, 0x5042, 2522 ql_dbg(ql_dbg_async, vha, 0x5042,