aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_iocb.c
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-07-24 11:31:49 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-07-26 15:31:30 -0400
commitc9c5ced90abc22a94c96fa7db0e29c13483a6db0 (patch)
treec85876a934f54735e98b88fef3ee63a63ec7ae30 /drivers/scsi/qla2xxx/qla_iocb.c
parentbf6583b5831d3195c45f98ec3016499389cbe18f (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.c9
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
393queuing_error: 392queuing_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}