diff options
author | Armen Baloyan <armen.baloyan@qlogic.com> | 2014-02-26 04:15:18 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2014-03-15 13:18:53 -0400 |
commit | 4440e46d5db7b445a961a84444849b2a31fa7fd1 (patch) | |
tree | 749aabd6001295df16788f7423351ead583c0b98 /drivers/scsi/qla2xxx/qla_isr.c | |
parent | faef62d134631c1f390006d51d49c76033f9504f (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.c | 21 |
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 | ||
2431 | static void | ||
2432 | qla24xx_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, |