Commit 483f05f0 authored by James.Smart@Emulex.Com's avatar James.Smart@Emulex.Com Committed by James Bottomley

[SCSI] lpfc driver 8.0.30 : fix iocb reuse initialization

IOCB BDE not getting fully initialized during reuse

Symptoms: Driver gets Status 3 and Reason 0x13 on IOCB completions.

Cause: The IOCB bpl.bdeSize and bdeFlags are not getting initialized on reuse.

Fix: Reinitialize these fields in prep_dma each time an IOCB is used.
Signed-off-by: default avatarJames Smart <James.Smart@emulex.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 507caac7
...@@ -238,6 +238,8 @@ lpfc_scsi_prep_dma_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * lpfc_cmd) ...@@ -238,6 +238,8 @@ lpfc_scsi_prep_dma_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * lpfc_cmd)
bpl->tus.f.bdeSize = scsi_cmnd->request_bufflen; bpl->tus.f.bdeSize = scsi_cmnd->request_bufflen;
if (datadir == DMA_TO_DEVICE) if (datadir == DMA_TO_DEVICE)
bpl->tus.f.bdeFlags = 0; bpl->tus.f.bdeFlags = 0;
else
bpl->tus.f.bdeFlags = BUFF_USE_RCV;
bpl->tus.w = le32_to_cpu(bpl->tus.w); bpl->tus.w = le32_to_cpu(bpl->tus.w);
num_bde = 1; num_bde = 1;
bpl++; bpl++;
...@@ -245,8 +247,11 @@ lpfc_scsi_prep_dma_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * lpfc_cmd) ...@@ -245,8 +247,11 @@ lpfc_scsi_prep_dma_buf(struct lpfc_hba * phba, struct lpfc_scsi_buf * lpfc_cmd)
/* /*
* Finish initializing those IOCB fields that are dependent on the * Finish initializing those IOCB fields that are dependent on the
* scsi_cmnd request_buffer * scsi_cmnd request_buffer. Note that the bdeSize is explicitly
* reinitialized since all iocb memory resources are used many times
* for transmit, receive, and continuation bpl's.
*/ */
iocb_cmd->un.fcpi64.bdl.bdeSize = (2 * sizeof (struct ulp_bde64));
iocb_cmd->un.fcpi64.bdl.bdeSize += iocb_cmd->un.fcpi64.bdl.bdeSize +=
(num_bde * sizeof (struct ulp_bde64)); (num_bde * sizeof (struct ulp_bde64));
iocb_cmd->ulpBdeCount = 1; iocb_cmd->ulpBdeCount = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment