diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2008-07-24 11:31:49 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-07-26 15:31:30 -0400 |
commit | c9c5ced90abc22a94c96fa7db0e29c13483a6db0 (patch) | |
tree | c85876a934f54735e98b88fef3ee63a63ec7ae30 /drivers/scsi/qla2xxx/qla_iocb.c | |
parent | bf6583b5831d3195c45f98ec3016499389cbe18f (diff) |
[SCSI] qla2xxx: Additional NPIV corrections.
Minor fixes addressing:
- rport managements during vport deletion.
- acquire proper physical-ha during qla24xx_abort_command() and
qla24xx_queuecommand()
- do not needlessly acquire the pha for non-NPIV capable ISPs.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_iocb.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_iocb.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c index 6e14c8eaca8..d57669aa461 100644 --- a/drivers/scsi/qla2xxx/qla_iocb.c +++ b/drivers/scsi/qla2xxx/qla_iocb.c | |||
@@ -269,7 +269,7 @@ qla2x00_start_scsi(srb_t *sp) | |||
269 | { | 269 | { |
270 | int ret, nseg; | 270 | int ret, nseg; |
271 | unsigned long flags; | 271 | unsigned long flags; |
272 | scsi_qla_host_t *ha, *pha; | 272 | scsi_qla_host_t *ha; |
273 | struct scsi_cmnd *cmd; | 273 | struct scsi_cmnd *cmd; |
274 | uint32_t *clr_ptr; | 274 | uint32_t *clr_ptr; |
275 | uint32_t index; | 275 | uint32_t index; |
@@ -283,7 +283,6 @@ qla2x00_start_scsi(srb_t *sp) | |||
283 | /* Setup device pointers. */ | 283 | /* Setup device pointers. */ |
284 | ret = 0; | 284 | ret = 0; |
285 | ha = sp->ha; | 285 | ha = sp->ha; |
286 | pha = to_qla_parent(ha); | ||
287 | reg = &ha->iobase->isp; | 286 | reg = &ha->iobase->isp; |
288 | cmd = sp->cmd; | 287 | cmd = sp->cmd; |
289 | /* So we know we haven't pci_map'ed anything yet */ | 288 | /* So we know we haven't pci_map'ed anything yet */ |
@@ -298,7 +297,7 @@ qla2x00_start_scsi(srb_t *sp) | |||
298 | } | 297 | } |
299 | 298 | ||
300 | /* Acquire ring specific lock */ | 299 | /* Acquire ring specific lock */ |
301 | spin_lock_irqsave(&pha->hardware_lock, flags); | 300 | spin_lock_irqsave(&ha->hardware_lock, flags); |
302 | 301 | ||
303 | /* Check for room in outstanding command list. */ | 302 | /* Check for room in outstanding command list. */ |
304 | handle = ha->current_outstanding_cmd; | 303 | handle = ha->current_outstanding_cmd; |
@@ -387,14 +386,14 @@ qla2x00_start_scsi(srb_t *sp) | |||
387 | ha->response_ring_ptr->signature != RESPONSE_PROCESSED) | 386 | ha->response_ring_ptr->signature != RESPONSE_PROCESSED) |
388 | qla2x00_process_response_queue(ha); | 387 | qla2x00_process_response_queue(ha); |
389 | 388 | ||
390 | spin_unlock_irqrestore(&pha->hardware_lock, flags); | 389 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
391 | return (QLA_SUCCESS); | 390 | return (QLA_SUCCESS); |
392 | 391 | ||
393 | queuing_error: | 392 | queuing_error: |
394 | if (tot_dsds) | 393 | if (tot_dsds) |
395 | scsi_dma_unmap(cmd); | 394 | scsi_dma_unmap(cmd); |
396 | 395 | ||
397 | spin_unlock_irqrestore(&pha->hardware_lock, flags); | 396 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
398 | 397 | ||
399 | return (QLA_FUNCTION_FAILED); | 398 | return (QLA_FUNCTION_FAILED); |
400 | } | 399 | } |