From: Hannes Reinecke <hare@suse.de>
To: James Smart <james.smart@broadcom.com>
Cc: Dick Kennedy <dick.kennedy@broadcom.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Christoph Hellwig <hch@lst.de>,
James Bottomley <james.bottomley@hansenpartnership.com>,
linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>,
Hannes Reinecke <hare@suse.com>
Subject: [PATCH 1/3] lpfc: use named structure for combined I/O buffer
Date: Fri, 18 Oct 2019 09:50:08 +0200 [thread overview]
Message-ID: <20191018075010.55653-2-hare@suse.de> (raw)
In-Reply-To: <20191018075010.55653-1-hare@suse.de>
Use named structures in the combined I/O buffer to annotate the
fields with the intended protocol usage.
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
drivers/scsi/lpfc/lpfc_init.c | 2 +-
drivers/scsi/lpfc/lpfc_nvme.c | 42 +++++-----
drivers/scsi/lpfc/lpfc_scsi.c | 190 +++++++++++++++++++++---------------------
drivers/scsi/lpfc/lpfc_sli.c | 26 +++---
drivers/scsi/lpfc/lpfc_sli.h | 4 +-
5 files changed, 132 insertions(+), 132 deletions(-)
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 6e6bb8da97d6..f3caeb0d1151 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -1081,7 +1081,7 @@ lpfc_hba_down_post_s4(struct lpfc_hba *phba)
&aborts);
list_for_each_entry_safe(psb, psb_next, &aborts, list) {
- psb->pCmd = NULL;
+ psb->scsi.pCmd = NULL;
psb->status = IOSTAT_SUCCESS;
cnt++;
}
diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
index 5af944b97c4c..defb19cdc7fe 100644
--- a/drivers/scsi/lpfc/lpfc_nvme.c
+++ b/drivers/scsi/lpfc/lpfc_nvme.c
@@ -1023,18 +1023,18 @@ lpfc_nvme_io_cmd_wqe_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn,
/* Guard against abort handler being called at same time */
spin_lock(&lpfc_ncmd->buf_lock);
- if (!lpfc_ncmd->nvmeCmd) {
+ if (!lpfc_ncmd->nvme.nvmeCmd) {
spin_unlock(&lpfc_ncmd->buf_lock);
lpfc_printf_vlog(vport, KERN_ERR, LOG_NODE | LOG_NVME_IOERR,
"6066 Missing cmpl ptrs: lpfc_ncmd x%px, "
"nvmeCmd x%px\n",
- lpfc_ncmd, lpfc_ncmd->nvmeCmd);
+ lpfc_ncmd, lpfc_ncmd->nvme.nvmeCmd);
/* Release the lpfc_ncmd regardless of the missing elements. */
lpfc_release_nvme_buf(phba, lpfc_ncmd);
return;
}
- nCmd = lpfc_ncmd->nvmeCmd;
+ nCmd = lpfc_ncmd->nvme.nvmeCmd;
status = bf_get(lpfc_wcqe_c_status, wcqe);
idx = lpfc_ncmd->cur_iocbq.hba_wqidx;
@@ -1205,7 +1205,7 @@ lpfc_nvme_io_cmd_wqe_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn,
if (!(lpfc_ncmd->flags & LPFC_SBUF_XBUSY)) {
freqpriv = nCmd->private;
freqpriv->nvme_buf = NULL;
- lpfc_ncmd->nvmeCmd = NULL;
+ lpfc_ncmd->nvme.nvmeCmd = NULL;
spin_unlock(&lpfc_ncmd->buf_lock);
nCmd->done(nCmd);
} else
@@ -1239,7 +1239,7 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport,
struct lpfc_fc4_ctrl_stat *cstat)
{
struct lpfc_hba *phba = vport->phba;
- struct nvmefc_fcp_req *nCmd = lpfc_ncmd->nvmeCmd;
+ struct nvmefc_fcp_req *nCmd = lpfc_ncmd->nvme.nvmeCmd;
struct lpfc_iocbq *pwqeq = &(lpfc_ncmd->cur_iocbq);
union lpfc_wqe128 *wqe = &pwqeq->wqe;
uint32_t req_len;
@@ -1264,7 +1264,7 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport,
/* Word 5 */
if ((phba->cfg_nvme_enable_fb) &&
(pnode->nlp_flag & NLP_FIRSTBURST)) {
- req_len = lpfc_ncmd->nvmeCmd->payload_length;
+ req_len = lpfc_ncmd->nvme.nvmeCmd->payload_length;
if (req_len < pnode->nvme_fb_size)
wqe->fcp_iwrite.initial_xfer_len =
req_len;
@@ -1346,7 +1346,7 @@ lpfc_nvme_prep_io_dma(struct lpfc_vport *vport,
struct lpfc_io_buf *lpfc_ncmd)
{
struct lpfc_hba *phba = vport->phba;
- struct nvmefc_fcp_req *nCmd = lpfc_ncmd->nvmeCmd;
+ struct nvmefc_fcp_req *nCmd = lpfc_ncmd->nvme.nvmeCmd;
union lpfc_wqe128 *wqe = &lpfc_ncmd->cur_iocbq.wqe;
struct sli4_sge *sgl = lpfc_ncmd->dma_sgl;
struct sli4_hybrid_sgl *sgl_xtra = NULL;
@@ -1694,9 +1694,9 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
* an abort so inform the FW of the maximum IO pending time.
*/
freqpriv->nvme_buf = lpfc_ncmd;
- lpfc_ncmd->nvmeCmd = pnvme_fcreq;
+ lpfc_ncmd->nvme.nvmeCmd = pnvme_fcreq;
lpfc_ncmd->ndlp = ndlp;
- lpfc_ncmd->qidx = lpfc_queue_info->qidx;
+ lpfc_ncmd->nvme.qidx = lpfc_queue_info->qidx;
/*
* Issue the IO on the WQ indicated by index in the hw_queue_handle.
@@ -1761,8 +1761,8 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
return 0;
out_free_nvme_buf:
- if (lpfc_ncmd->nvmeCmd->sg_cnt) {
- if (lpfc_ncmd->nvmeCmd->io_dir == NVMEFC_FCP_WRITE)
+ if (lpfc_ncmd->nvme.nvmeCmd->sg_cnt) {
+ if (lpfc_ncmd->nvme.nvmeCmd->io_dir == NVMEFC_FCP_WRITE)
cstat->output_requests--;
else
cstat->input_requests--;
@@ -1885,7 +1885,7 @@ lpfc_nvme_fcp_abort(struct nvme_fc_local_port *pnvme_lport,
"6140 NVME IO req has no matching lpfc nvme "
"io buffer. Skipping abort req.\n");
return;
- } else if (!lpfc_nbuf->nvmeCmd) {
+ } else if (!lpfc_nbuf->nvme.nvmeCmd) {
spin_unlock_irqrestore(&phba->hbalock, flags);
lpfc_printf_vlog(vport, KERN_ERR, LOG_NVME_ABTS,
"6141 lpfc NVME IO req has no nvme_fcreq "
@@ -1904,12 +1904,12 @@ lpfc_nvme_fcp_abort(struct nvme_fc_local_port *pnvme_lport,
* has already completed the NVME IO and the nvme transport
* has not seen it yet.
*/
- if (lpfc_nbuf->nvmeCmd != pnvme_fcreq) {
+ if (lpfc_nbuf->nvme.nvmeCmd != pnvme_fcreq) {
lpfc_printf_vlog(vport, KERN_ERR, LOG_NVME_ABTS,
"6143 NVME req mismatch: "
"lpfc_nbuf x%px nvmeCmd x%px, "
"pnvme_fcreq x%px. Skipping Abort xri x%x\n",
- lpfc_nbuf, lpfc_nbuf->nvmeCmd,
+ lpfc_nbuf, lpfc_nbuf->nvme.nvmeCmd,
pnvme_fcreq, nvmereq_wqe->sli4_xritag);
goto out_unlock;
}
@@ -2655,17 +2655,17 @@ lpfc_sli4_nvme_xri_aborted(struct lpfc_hba *phba,
lpfc_printf_log(phba, KERN_INFO, LOG_NVME_ABTS,
"6311 nvme_cmd %p xri x%x tag x%x abort complete and "
"xri released\n",
- lpfc_ncmd->nvmeCmd, xri,
+ lpfc_ncmd->nvme.nvmeCmd, xri,
lpfc_ncmd->cur_iocbq.iotag);
/* Aborted NVME commands are required to not complete
* before the abort exchange command fully completes.
* Once completed, it is available via the put list.
*/
- if (lpfc_ncmd->nvmeCmd) {
- nvme_cmd = lpfc_ncmd->nvmeCmd;
+ if (lpfc_ncmd->nvme.nvmeCmd) {
+ nvme_cmd = lpfc_ncmd->nvme.nvmeCmd;
nvme_cmd->done(nvme_cmd);
- lpfc_ncmd->nvmeCmd = NULL;
+ lpfc_ncmd->nvme.nvmeCmd = NULL;
}
lpfc_release_nvme_buf(phba, lpfc_ncmd);
}
@@ -2738,13 +2738,13 @@ lpfc_nvme_cancel_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn)
lpfc_ncmd = (struct lpfc_io_buf *)pwqeIn->context1;
spin_lock(&lpfc_ncmd->buf_lock);
- if (!lpfc_ncmd->nvmeCmd) {
+ if (!lpfc_ncmd->nvme.nvmeCmd) {
spin_unlock(&lpfc_ncmd->buf_lock);
lpfc_release_nvme_buf(phba, lpfc_ncmd);
return;
}
- nCmd = lpfc_ncmd->nvmeCmd;
+ nCmd = lpfc_ncmd->nvme.nvmeCmd;
lpfc_printf_log(phba, KERN_INFO, LOG_NVME_IOERR,
"6194 NVME Cancel xri %x\n",
lpfc_ncmd->cur_iocbq.sli4_xritag);
@@ -2754,7 +2754,7 @@ lpfc_nvme_cancel_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn)
nCmd->status = NVME_SC_INTERNAL;
freqpriv = nCmd->private;
freqpriv->nvme_buf = NULL;
- lpfc_ncmd->nvmeCmd = NULL;
+ lpfc_ncmd->nvme.nvmeCmd = NULL;
spin_unlock(&lpfc_ncmd->buf_lock);
nCmd->done(nCmd);
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index 67b7a1aed45c..bb66dfb8dd71 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -146,7 +146,7 @@ lpfc_update_stats(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd)
struct lpfc_hba *phba = vport->phba;
struct lpfc_rport_data *rdata;
struct lpfc_nodelist *pnode;
- struct scsi_cmnd *cmd = lpfc_cmd->pCmd;
+ struct scsi_cmnd *cmd = lpfc_cmd->scsi.pCmd;
unsigned long flags;
struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
unsigned long latency;
@@ -158,7 +158,7 @@ lpfc_update_stats(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd)
return;
latency = jiffies_to_msecs((long)jiffies - (long)lpfc_cmd->start_time);
- rdata = lpfc_cmd->rdata;
+ rdata = lpfc_cmd->scsi.rdata;
pnode = rdata->pnode;
spin_lock_irqsave(shost->host_lock, flags);
@@ -377,8 +377,8 @@ lpfc_new_scsi_buf_s3(struct lpfc_vport *vport, int num_to_alloc)
}
psb->cur_iocbq.iocb_flag |= LPFC_IO_FCP;
- psb->fcp_cmnd = psb->data;
- psb->fcp_rsp = psb->data + sizeof(struct fcp_cmnd);
+ psb->scsi.fcp_cmnd = psb->data;
+ psb->scsi.fcp_rsp = psb->data + sizeof(struct fcp_cmnd);
psb->dma_sgl = psb->data + sizeof(struct fcp_cmnd) +
sizeof(struct fcp_rsp);
@@ -484,9 +484,9 @@ lpfc_sli4_vport_delete_fcp_xri_aborted(struct lpfc_vport *vport)
if (psb->cur_iocbq.iocb_flag == LPFC_IO_NVME)
continue;
- if (psb->rdata && psb->rdata->pnode &&
- psb->rdata->pnode->vport == vport)
- psb->rdata = NULL;
+ if (psb->scsi.rdata && psb->scsi.rdata->pnode &&
+ psb->scsi.rdata->pnode->vport == vport)
+ psb->scsi.rdata = NULL;
}
spin_unlock(&qp->abts_io_buf_list_lock);
}
@@ -538,8 +538,8 @@ lpfc_sli4_io_xri_aborted(struct lpfc_hba *phba,
qp->abts_scsi_io_bufs--;
spin_unlock(&qp->abts_io_buf_list_lock);
- if (psb->rdata && psb->rdata->pnode)
- ndlp = psb->rdata->pnode;
+ if (psb->scsi.rdata && psb->scsi.rdata->pnode)
+ ndlp = psb->scsi.rdata->pnode;
else
ndlp = NULL;
@@ -660,22 +660,22 @@ lpfc_get_scsi_buf_s4(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp,
* if other protocols used this buffer.
*/
lpfc_cmd->cur_iocbq.iocb_flag = LPFC_IO_FCP;
- lpfc_cmd->prot_seg_cnt = 0;
+ lpfc_cmd->scsi.prot_seg_cnt = 0;
lpfc_cmd->seg_cnt = 0;
lpfc_cmd->timeout = 0;
lpfc_cmd->flags = 0;
lpfc_cmd->start_time = jiffies;
- lpfc_cmd->waitq = NULL;
+ lpfc_cmd->scsi.waitq = NULL;
lpfc_cmd->cpu = cpu;
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
- lpfc_cmd->prot_data_type = 0;
+ lpfc_cmd->scsi.prot_data_type = 0;
#endif
tmp = lpfc_get_cmd_rsp_buf_per_hdwq(phba, lpfc_cmd);
if (!tmp)
return NULL;
- lpfc_cmd->fcp_cmnd = tmp->fcp_cmnd;
- lpfc_cmd->fcp_rsp = tmp->fcp_rsp;
+ lpfc_cmd->scsi.fcp_cmnd = tmp->fcp_cmnd;
+ lpfc_cmd->scsi.fcp_rsp = tmp->fcp_rsp;
/*
* The first two SGEs are the FCP_CMD and FCP_RSP.
@@ -757,10 +757,10 @@ lpfc_release_scsi_buf_s3(struct lpfc_hba *phba, struct lpfc_io_buf *psb)
unsigned long iflag = 0;
psb->seg_cnt = 0;
- psb->prot_seg_cnt = 0;
+ psb->scsi.prot_seg_cnt = 0;
spin_lock_irqsave(&phba->scsi_buf_list_put_lock, iflag);
- psb->pCmd = NULL;
+ psb->scsi.pCmd = NULL;
psb->cur_iocbq.iocb_flag = LPFC_IO_FCP;
list_add_tail(&psb->list, &phba->lpfc_scsi_buf_list_put);
spin_unlock_irqrestore(&phba->scsi_buf_list_put_lock, iflag);
@@ -783,12 +783,12 @@ lpfc_release_scsi_buf_s4(struct lpfc_hba *phba, struct lpfc_io_buf *psb)
unsigned long iflag = 0;
psb->seg_cnt = 0;
- psb->prot_seg_cnt = 0;
+ psb->scsi.prot_seg_cnt = 0;
qp = psb->hdwq;
if (psb->exch_busy) {
spin_lock_irqsave(&qp->abts_io_buf_list_lock, iflag);
- psb->pCmd = NULL;
+ psb->scsi.pCmd = NULL;
list_add_tail(&psb->list, &qp->lpfc_abts_io_buf_list);
qp->abts_scsi_io_bufs++;
spin_unlock_irqrestore(&qp->abts_io_buf_list_lock, iflag);
@@ -832,9 +832,9 @@ lpfc_release_scsi_buf(struct lpfc_hba *phba, struct lpfc_io_buf *psb)
static int
lpfc_scsi_prep_dma_buf_s3(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
{
- struct scsi_cmnd *scsi_cmnd = lpfc_cmd->pCmd;
+ struct scsi_cmnd *scsi_cmnd = lpfc_cmd->scsi.pCmd;
struct scatterlist *sgel = NULL;
- struct fcp_cmnd *fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ struct fcp_cmnd *fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
struct ulp_bde64 *bpl = (struct ulp_bde64 *)lpfc_cmd->dma_sgl;
struct lpfc_iocbq *iocbq = &lpfc_cmd->cur_iocbq;
IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb;
@@ -1070,11 +1070,11 @@ lpfc_bg_err_inject(struct lpfc_hba *phba, struct scsi_cmnd *sc,
* restore it on completion.
*/
if (lpfc_cmd) {
- lpfc_cmd->prot_data_type =
+ lpfc_cmd->scsi.prot_data_type =
LPFC_INJERR_REFTAG;
- lpfc_cmd->prot_data_segment =
+ lpfc_cmd->scsi.prot_data_segment =
src;
- lpfc_cmd->prot_data =
+ lpfc_cmd->scsi.prot_data =
src->ref_tag;
}
src->ref_tag = cpu_to_be32(0xDEADBEEF);
@@ -1190,11 +1190,11 @@ lpfc_bg_err_inject(struct lpfc_hba *phba, struct scsi_cmnd *sc,
* restore it on completion.
*/
if (lpfc_cmd) {
- lpfc_cmd->prot_data_type =
+ lpfc_cmd->scsi.prot_data_type =
LPFC_INJERR_APPTAG;
- lpfc_cmd->prot_data_segment =
+ lpfc_cmd->scsi.prot_data_segment =
src;
- lpfc_cmd->prot_data =
+ lpfc_cmd->scsi.prot_data =
src->app_tag;
}
src->app_tag = cpu_to_be16(0xDEAD);
@@ -2473,7 +2473,7 @@ static int
lpfc_bg_scsi_adjust_dl(struct lpfc_hba *phba,
struct lpfc_io_buf *lpfc_cmd)
{
- struct scsi_cmnd *sc = lpfc_cmd->pCmd;
+ struct scsi_cmnd *sc = lpfc_cmd->scsi.pCmd;
int fcpdl;
fcpdl = scsi_bufflen(sc);
@@ -2516,8 +2516,8 @@ static int
lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba,
struct lpfc_io_buf *lpfc_cmd)
{
- struct scsi_cmnd *scsi_cmnd = lpfc_cmd->pCmd;
- struct fcp_cmnd *fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ struct scsi_cmnd *scsi_cmnd = lpfc_cmd->scsi.pCmd;
+ struct fcp_cmnd *fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
struct ulp_bde64 *bpl = (struct ulp_bde64 *)lpfc_cmd->dma_sgl;
IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb;
uint32_t num_bde = 0;
@@ -2588,13 +2588,13 @@ lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba,
return 1;
}
- lpfc_cmd->prot_seg_cnt = protsegcnt;
+ lpfc_cmd->scsi.prot_seg_cnt = protsegcnt;
/*
* There is a minimun of 4 BPLs used for every
* protection data segment.
*/
- if ((lpfc_cmd->prot_seg_cnt * 4) >
+ if ((lpfc_cmd->scsi.prot_seg_cnt * 4) >
(phba->cfg_total_seg_cnt - 2)) {
ret = 2;
goto err;
@@ -2654,7 +2654,7 @@ lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba,
err:
if (lpfc_cmd->seg_cnt)
scsi_dma_unmap(scsi_cmnd);
- if (lpfc_cmd->prot_seg_cnt)
+ if (lpfc_cmd->scsi.prot_seg_cnt)
dma_unmap_sg(&phba->pcidev->dev, scsi_prot_sglist(scsi_cmnd),
scsi_prot_sg_count(scsi_cmnd),
scsi_cmnd->sc_data_direction);
@@ -2662,12 +2662,12 @@ lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba,
lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
"9023 Cannot setup S/G List for HBA"
"IO segs %d/%d BPL %d SCSI %d: %d %d\n",
- lpfc_cmd->seg_cnt, lpfc_cmd->prot_seg_cnt,
+ lpfc_cmd->seg_cnt, lpfc_cmd->scsi.prot_seg_cnt,
phba->cfg_total_seg_cnt, phba->cfg_sg_seg_cnt,
prot_group_type, num_bde);
lpfc_cmd->seg_cnt = 0;
- lpfc_cmd->prot_seg_cnt = 0;
+ lpfc_cmd->scsi.prot_seg_cnt = 0;
return ret;
}
@@ -2710,7 +2710,7 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
{
struct scatterlist *sgpe; /* s/g prot entry */
struct scatterlist *sgde; /* s/g data entry */
- struct scsi_cmnd *cmd = lpfc_cmd->pCmd;
+ struct scsi_cmnd *cmd = lpfc_cmd->scsi.pCmd;
struct scsi_dif_tuple *src = NULL;
uint8_t *data_src = NULL;
uint16_t guard_tag;
@@ -2740,7 +2740,7 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
/* Setup a ptr to the protection data provided by the SCSI host */
sgpe = scsi_prot_sglist(cmd);
- protsegcnt = lpfc_cmd->prot_seg_cnt;
+ protsegcnt = lpfc_cmd->scsi.prot_seg_cnt;
if (sgpe && protsegcnt) {
@@ -2894,7 +2894,7 @@ static int
lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
struct lpfc_iocbq *pIocbOut)
{
- struct scsi_cmnd *cmd = lpfc_cmd->pCmd;
+ struct scsi_cmnd *cmd = lpfc_cmd->scsi.pCmd;
struct sli3_bg_fields *bgf = &pIocbOut->iocb.unsli3.sli3_bg;
int ret = 0;
uint32_t bghm = bgf->bghm;
@@ -3041,9 +3041,9 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
static int
lpfc_scsi_prep_dma_buf_s4(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
{
- struct scsi_cmnd *scsi_cmnd = lpfc_cmd->pCmd;
+ struct scsi_cmnd *scsi_cmnd = lpfc_cmd->scsi.pCmd;
struct scatterlist *sgel = NULL;
- struct fcp_cmnd *fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ struct fcp_cmnd *fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
struct sli4_sge *sgl = (struct sli4_sge *)lpfc_cmd->dma_sgl;
struct sli4_sge *first_data_sgl;
IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb;
@@ -3254,8 +3254,8 @@ static int
lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,
struct lpfc_io_buf *lpfc_cmd)
{
- struct scsi_cmnd *scsi_cmnd = lpfc_cmd->pCmd;
- struct fcp_cmnd *fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ struct scsi_cmnd *scsi_cmnd = lpfc_cmd->scsi.pCmd;
+ struct fcp_cmnd *fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
struct sli4_sge *sgl = (struct sli4_sge *)(lpfc_cmd->dma_sgl);
IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb;
uint32_t num_sge = 0;
@@ -3335,12 +3335,12 @@ lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,
return 1;
}
- lpfc_cmd->prot_seg_cnt = protsegcnt;
+ lpfc_cmd->scsi.prot_seg_cnt = protsegcnt;
/*
* There is a minimun of 3 SGEs used for every
* protection data segment.
*/
- if (((lpfc_cmd->prot_seg_cnt * 3) >
+ if (((lpfc_cmd->scsi.prot_seg_cnt * 3) >
(phba->cfg_total_seg_cnt - 2)) &&
!phba->cfg_xpsgl) {
ret = 2;
@@ -3415,7 +3415,7 @@ lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,
err:
if (lpfc_cmd->seg_cnt)
scsi_dma_unmap(scsi_cmnd);
- if (lpfc_cmd->prot_seg_cnt)
+ if (lpfc_cmd->scsi.prot_seg_cnt)
dma_unmap_sg(&phba->pcidev->dev, scsi_prot_sglist(scsi_cmnd),
scsi_prot_sg_count(scsi_cmnd),
scsi_cmnd->sc_data_direction);
@@ -3423,12 +3423,12 @@ lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,
lpfc_printf_log(phba, KERN_ERR, LOG_FCP,
"9084 Cannot setup S/G List for HBA"
"IO segs %d/%d SGL %d SCSI %d: %d %d\n",
- lpfc_cmd->seg_cnt, lpfc_cmd->prot_seg_cnt,
+ lpfc_cmd->seg_cnt, lpfc_cmd->scsi.prot_seg_cnt,
phba->cfg_total_seg_cnt, phba->cfg_sg_seg_cnt,
prot_group_type, num_sge);
lpfc_cmd->seg_cnt = 0;
- lpfc_cmd->prot_seg_cnt = 0;
+ lpfc_cmd->scsi.prot_seg_cnt = 0;
return ret;
}
@@ -3482,13 +3482,13 @@ lpfc_bg_scsi_prep_dma_buf(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
static void
lpfc_send_scsi_error_event(struct lpfc_hba *phba, struct lpfc_vport *vport,
struct lpfc_io_buf *lpfc_cmd, struct lpfc_iocbq *rsp_iocb) {
- struct scsi_cmnd *cmnd = lpfc_cmd->pCmd;
- struct fcp_rsp *fcprsp = lpfc_cmd->fcp_rsp;
+ struct scsi_cmnd *cmnd = lpfc_cmd->scsi.pCmd;
+ struct fcp_rsp *fcprsp = lpfc_cmd->scsi.fcp_rsp;
uint32_t resp_info = fcprsp->rspStatus2;
uint32_t scsi_status = fcprsp->rspStatus3;
uint32_t fcpi_parm = rsp_iocb->iocb.un.fcpi.fcpi_parm;
struct lpfc_fast_path_event *fast_path_evt = NULL;
- struct lpfc_nodelist *pnode = lpfc_cmd->rdata->pnode;
+ struct lpfc_nodelist *pnode = lpfc_cmd->scsi.rdata->pnode;
unsigned long flags;
if (!pnode || !NLP_CHK_NODE_ACT(pnode))
@@ -3582,11 +3582,11 @@ lpfc_scsi_unprep_dma_buf(struct lpfc_hba *phba, struct lpfc_io_buf *psb)
* case, but it does not require resource deallocation.
*/
if (psb->seg_cnt > 0)
- scsi_dma_unmap(psb->pCmd);
- if (psb->prot_seg_cnt > 0)
- dma_unmap_sg(&phba->pcidev->dev, scsi_prot_sglist(psb->pCmd),
- scsi_prot_sg_count(psb->pCmd),
- psb->pCmd->sc_data_direction);
+ scsi_dma_unmap(psb->scsi.pCmd);
+ if (psb->scsi.prot_seg_cnt > 0)
+ dma_unmap_sg(&phba->pcidev->dev, scsi_prot_sglist(psb->scsi.pCmd),
+ scsi_prot_sg_count(psb->scsi.pCmd),
+ psb->scsi.pCmd->sc_data_direction);
}
/**
@@ -3604,9 +3604,9 @@ lpfc_handle_fcp_err(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd,
struct lpfc_iocbq *rsp_iocb)
{
struct lpfc_hba *phba = vport->phba;
- struct scsi_cmnd *cmnd = lpfc_cmd->pCmd;
- struct fcp_cmnd *fcpcmd = lpfc_cmd->fcp_cmnd;
- struct fcp_rsp *fcprsp = lpfc_cmd->fcp_rsp;
+ struct scsi_cmnd *cmnd = lpfc_cmd->scsi.pCmd;
+ struct fcp_cmnd *fcpcmd = lpfc_cmd->scsi.fcp_cmnd;
+ struct fcp_rsp *fcprsp = lpfc_cmd->scsi.fcp_rsp;
uint32_t fcpi_parm = rsp_iocb->iocb.un.fcpi.fcpi_parm;
uint32_t resp_info = fcprsp->rspStatus2;
uint32_t scsi_status = fcprsp->rspStatus3;
@@ -3795,7 +3795,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
struct lpfc_io_buf *lpfc_cmd =
(struct lpfc_io_buf *) pIocbIn->context1;
struct lpfc_vport *vport = pIocbIn->vport;
- struct lpfc_rport_data *rdata = lpfc_cmd->rdata;
+ struct lpfc_rport_data *rdata = lpfc_cmd->scsi.rdata;
struct lpfc_nodelist *pnode = rdata->pnode;
struct scsi_cmnd *cmd;
unsigned long flags;
@@ -3811,7 +3811,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
spin_lock(&lpfc_cmd->buf_lock);
/* Sanity check on return of outstanding command */
- cmd = lpfc_cmd->pCmd;
+ cmd = lpfc_cmd->scsi.pCmd;
if (!cmd || !phba) {
lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
"2621 IO completion: Not an active IO\n");
@@ -3838,34 +3838,34 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
lpfc_cmd->exch_busy = pIocbOut->iocb_flag & LPFC_EXCHANGE_BUSY;
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
- if (lpfc_cmd->prot_data_type) {
+ if (lpfc_cmd->scsi.prot_data_type) {
struct scsi_dif_tuple *src = NULL;
- src = (struct scsi_dif_tuple *)lpfc_cmd->prot_data_segment;
+ src = (struct scsi_dif_tuple *)lpfc_cmd->scsi.prot_data_segment;
/*
* Used to restore any changes to protection
* data for error injection.
*/
- switch (lpfc_cmd->prot_data_type) {
+ switch (lpfc_cmd->scsi.prot_data_type) {
case LPFC_INJERR_REFTAG:
src->ref_tag =
- lpfc_cmd->prot_data;
+ lpfc_cmd->scsi.prot_data;
break;
case LPFC_INJERR_APPTAG:
src->app_tag =
- (uint16_t)lpfc_cmd->prot_data;
+ (uint16_t)lpfc_cmd->scsi.prot_data;
break;
case LPFC_INJERR_GUARD:
src->guard_tag =
- (uint16_t)lpfc_cmd->prot_data;
+ (uint16_t)lpfc_cmd->scsi.prot_data;
break;
default:
break;
}
- lpfc_cmd->prot_data = 0;
- lpfc_cmd->prot_data_type = 0;
- lpfc_cmd->prot_data_segment = NULL;
+ lpfc_cmd->scsi.prot_data = 0;
+ lpfc_cmd->scsi.prot_data_type = 0;
+ lpfc_cmd->scsi.prot_data_segment = NULL;
}
#endif
@@ -3876,8 +3876,8 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
else if (lpfc_cmd->status >= IOSTAT_CNT)
lpfc_cmd->status = IOSTAT_DEFAULT;
if (lpfc_cmd->status == IOSTAT_FCP_RSP_ERROR &&
- !lpfc_cmd->fcp_rsp->rspStatus3 &&
- (lpfc_cmd->fcp_rsp->rspStatus2 & RESID_UNDER) &&
+ !lpfc_cmd->scsi.fcp_rsp->rspStatus3 &&
+ (lpfc_cmd->scsi.fcp_rsp->rspStatus2 & RESID_UNDER) &&
!(vport->cfg_log_verbose & LOG_FCP_UNDER))
logit = 0;
else
@@ -3991,7 +3991,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
} else
cmd->result = DID_OK << 16;
- if (cmd->result || lpfc_cmd->fcp_rsp->rspSnsLen) {
+ if (cmd->result || lpfc_cmd->scsi.fcp_rsp->rspSnsLen) {
uint32_t *lp = (uint32_t *)cmd->sense_buffer;
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
@@ -4023,7 +4023,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
}
lpfc_scsi_unprep_dma_buf(phba, lpfc_cmd);
- lpfc_cmd->pCmd = NULL;
+ lpfc_cmd->scsi.pCmd = NULL;
spin_unlock(&lpfc_cmd->buf_lock);
/* The sdev is not guaranteed to be valid post scsi_done upcall. */
@@ -4035,8 +4035,8 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
*/
spin_lock(&lpfc_cmd->buf_lock);
lpfc_cmd->cur_iocbq.iocb_flag &= ~LPFC_DRIVER_ABORTED;
- if (lpfc_cmd->waitq)
- wake_up(lpfc_cmd->waitq);
+ if (lpfc_cmd->scsi.waitq)
+ wake_up(lpfc_cmd->scsi.waitq);
spin_unlock(&lpfc_cmd->buf_lock);
lpfc_release_scsi_buf(phba, lpfc_cmd);
@@ -4074,8 +4074,8 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd,
struct lpfc_nodelist *pnode)
{
struct lpfc_hba *phba = vport->phba;
- struct scsi_cmnd *scsi_cmnd = lpfc_cmd->pCmd;
- struct fcp_cmnd *fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ struct scsi_cmnd *scsi_cmnd = lpfc_cmd->scsi.pCmd;
+ struct fcp_cmnd *fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb;
struct lpfc_iocbq *piocbq = &(lpfc_cmd->cur_iocbq);
struct lpfc_sli4_hdw_queue *hdwq = NULL;
@@ -4088,12 +4088,12 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd,
if (!pnode || !NLP_CHK_NODE_ACT(pnode))
return;
- lpfc_cmd->fcp_rsp->rspSnsLen = 0;
+ lpfc_cmd->scsi.fcp_rsp->rspSnsLen = 0;
/* clear task management bits */
- lpfc_cmd->fcp_cmnd->fcpCntl2 = 0;
+ lpfc_cmd->scsi.fcp_cmnd->fcpCntl2 = 0;
- int_to_scsilun(lpfc_cmd->pCmd->device->lun,
- &lpfc_cmd->fcp_cmnd->fcp_lun);
+ int_to_scsilun(lpfc_cmd->scsi.pCmd->device->lun,
+ &lpfc_cmd->scsi.fcp_cmnd->fcp_lun);
ptr = &fcp_cmnd->fcpCdb[0];
memcpy(ptr, scsi_cmnd->cmnd, scsi_cmnd->cmd_len);
@@ -4193,7 +4193,7 @@ lpfc_scsi_prep_task_mgmt_cmd(struct lpfc_vport *vport,
struct lpfc_iocbq *piocbq;
IOCB_t *piocb;
struct fcp_cmnd *fcp_cmnd;
- struct lpfc_rport_data *rdata = lpfc_cmd->rdata;
+ struct lpfc_rport_data *rdata = lpfc_cmd->scsi.rdata;
struct lpfc_nodelist *ndlp = rdata->pnode;
if (!ndlp || !NLP_CHK_NODE_ACT(ndlp) ||
@@ -4205,7 +4205,7 @@ lpfc_scsi_prep_task_mgmt_cmd(struct lpfc_vport *vport,
piocb = &piocbq->iocb;
- fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
/* Clear out any old data in the FCP command area */
memset(fcp_cmnd, 0, sizeof(struct fcp_cmnd));
int_to_scsilun(lun, &fcp_cmnd->fcp_lun);
@@ -4578,8 +4578,8 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
* Store the midlayer's command structure for the completion phase
* and complete the command initialization.
*/
- lpfc_cmd->pCmd = cmnd;
- lpfc_cmd->rdata = rdata;
+ lpfc_cmd->scsi.pCmd = cmnd;
+ lpfc_cmd->scsi.rdata = rdata;
lpfc_cmd->ndlp = ndlp;
cmnd->host_scribble = (unsigned char *)lpfc_cmd;
@@ -4668,7 +4668,7 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
idx = lpfc_cmd->hdwq_no;
lpfc_scsi_unprep_dma_buf(phba, lpfc_cmd);
if (phba->sli4_hba.hdwq) {
- switch (lpfc_cmd->fcp_cmnd->fcpCntl3) {
+ switch (lpfc_cmd->scsi.fcp_cmnd->fcpCntl3) {
case WRITE_DATA:
phba->sli4_hba.hdwq[idx].scsi_cstat.output_requests--;
break;
@@ -4742,7 +4742,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
/* Guard against IO completion being called at same time */
spin_lock(&lpfc_cmd->buf_lock);
- if (!lpfc_cmd->pCmd) {
+ if (!lpfc_cmd->scsi.pCmd) {
lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
"2873 SCSI Layer I/O Abort Request IO CMPL Status "
"x%x ID %d LUN %llu\n",
@@ -4773,7 +4773,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
* already completed this command, but the midlayer did not
* see the completion before the eh fired. Just return SUCCESS.
*/
- if (lpfc_cmd->pCmd != cmnd) {
+ if (lpfc_cmd->scsi.pCmd != cmnd) {
lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
"3170 SCSI Layer abort requested I/O has been "
"completed by LLD.\n");
@@ -4833,7 +4833,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
abtsiocb->iocb_cmpl = lpfc_sli_abort_fcp_cmpl;
abtsiocb->vport = vport;
- lpfc_cmd->waitq = &waitq;
+ lpfc_cmd->scsi.waitq = &waitq;
if (phba->sli_rev == LPFC_SLI_REV4) {
/* Note: both hbalock and ring_lock must be set here */
ret_val = __lpfc_sli_issue_iocb(phba, pring_s4->ringno,
@@ -4849,7 +4849,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
if (ret_val == IOCB_ERROR) {
/* Indicate the IO is not being aborted by the driver. */
iocb->iocb_flag &= ~LPFC_DRIVER_ABORTED;
- lpfc_cmd->waitq = NULL;
+ lpfc_cmd->scsi.waitq = NULL;
spin_unlock(&lpfc_cmd->buf_lock);
lpfc_sli_release_iocbq(phba, abtsiocb);
ret = FAILED;
@@ -4865,12 +4865,12 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
wait_for_cmpl:
/* Wait for abort to complete */
wait_event_timeout(waitq,
- (lpfc_cmd->pCmd != cmnd),
+ (lpfc_cmd->scsi.pCmd != cmnd),
msecs_to_jiffies(2*vport->cfg_devloss_tmo*1000));
spin_lock(&lpfc_cmd->buf_lock);
- if (lpfc_cmd->pCmd == cmnd) {
+ if (lpfc_cmd->scsi.pCmd == cmnd) {
ret = FAILED;
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
"0748 abort handler timed out waiting "
@@ -4880,7 +4880,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
cmnd->device->id, cmnd->device->lun);
}
- lpfc_cmd->waitq = NULL;
+ lpfc_cmd->scsi.waitq = NULL;
spin_unlock(&lpfc_cmd->buf_lock);
goto out;
@@ -4938,7 +4938,7 @@ lpfc_taskmgmt_name(uint8_t task_mgmt_cmd)
static int
lpfc_check_fcp_rsp(struct lpfc_vport *vport, struct lpfc_io_buf *lpfc_cmd)
{
- struct fcp_rsp *fcprsp = lpfc_cmd->fcp_rsp;
+ struct fcp_rsp *fcprsp = lpfc_cmd->scsi.fcp_rsp;
uint32_t rsp_info;
uint32_t rsp_len;
uint8_t rsp_info_code;
@@ -5033,8 +5033,8 @@ lpfc_send_taskmgmt(struct lpfc_vport *vport, struct scsi_cmnd *cmnd,
if (lpfc_cmd == NULL)
return FAILED;
lpfc_cmd->timeout = phba->cfg_task_mgmt_tmo;
- lpfc_cmd->rdata = rdata;
- lpfc_cmd->pCmd = cmnd;
+ lpfc_cmd->scsi.rdata = rdata;
+ lpfc_cmd->scsi.pCmd = cmnd;
lpfc_cmd->ndlp = pnode;
status = lpfc_scsi_prep_task_mgmt_cmd(vport, lpfc_cmd, lun_id,
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 379c37451645..e5a3c8c7702c 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -1157,7 +1157,7 @@ __lpfc_sli_get_els_sglq(struct lpfc_hba *phba, struct lpfc_iocbq *piocbq)
if (piocbq->iocb_flag & LPFC_IO_FCP) {
lpfc_cmd = (struct lpfc_io_buf *) piocbq->context1;
- ndlp = lpfc_cmd->rdata->pnode;
+ ndlp = lpfc_cmd->scsi.rdata->pnode;
} else if ((piocbq->iocb.ulpCommand == CMD_GEN_REQUEST64_CR) &&
!(piocbq->iocb_flag & LPFC_IO_LIBDFC)) {
ndlp = piocbq->context_un.ndlp;
@@ -9531,7 +9531,7 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
lpfc_cmd = iocbq->context1;
sgl = (struct sli4_sge *)lpfc_cmd->dma_sgl;
- fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
/* Word 0-2 - FCP_CMND */
wqe->generic.bde.tus.f.bdeFlags =
@@ -9595,7 +9595,7 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
lpfc_cmd = iocbq->context1;
sgl = (struct sli4_sge *)lpfc_cmd->dma_sgl;
- fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
/* Word 0-2 - FCP_CMND */
wqe->generic.bde.tus.f.bdeFlags =
@@ -9652,7 +9652,7 @@ lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
lpfc_cmd = iocbq->context1;
sgl = (struct sli4_sge *)lpfc_cmd->dma_sgl;
- fcp_cmnd = lpfc_cmd->fcp_cmnd;
+ fcp_cmnd = lpfc_cmd->scsi.fcp_cmnd;
/* Word 0-2 - FCP_CMND */
wqe->generic.bde.tus.f.bdeFlags =
@@ -11371,19 +11371,19 @@ lpfc_sli_validate_fcp_iocb(struct lpfc_iocbq *iocbq, struct lpfc_vport *vport,
lpfc_cmd = container_of(iocbq, struct lpfc_io_buf, cur_iocbq);
- if (lpfc_cmd->pCmd == NULL)
+ if (lpfc_cmd->scsi.pCmd == NULL)
return rc;
switch (ctx_cmd) {
case LPFC_CTX_LUN:
- if ((lpfc_cmd->rdata) && (lpfc_cmd->rdata->pnode) &&
- (lpfc_cmd->rdata->pnode->nlp_sid == tgt_id) &&
- (scsilun_to_int(&lpfc_cmd->fcp_cmnd->fcp_lun) == lun_id))
+ if ((lpfc_cmd->scsi.rdata) && (lpfc_cmd->scsi.rdata->pnode) &&
+ (lpfc_cmd->scsi.rdata->pnode->nlp_sid == tgt_id) &&
+ (scsilun_to_int(&lpfc_cmd->scsi.fcp_cmnd->fcp_lun) == lun_id))
rc = 0;
break;
case LPFC_CTX_TGT:
- if ((lpfc_cmd->rdata) && (lpfc_cmd->rdata->pnode) &&
- (lpfc_cmd->rdata->pnode->nlp_sid == tgt_id))
+ if ((lpfc_cmd->scsi.rdata) && (lpfc_cmd->scsi.rdata->pnode) &&
+ (lpfc_cmd->scsi.rdata->pnode->nlp_sid == tgt_id))
rc = 0;
break;
case LPFC_CTX_HOST:
@@ -11625,7 +11625,7 @@ lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring,
lpfc_cmd = container_of(iocbq, struct lpfc_io_buf, cur_iocbq);
spin_lock(&lpfc_cmd->buf_lock);
- if (!lpfc_cmd->pCmd) {
+ if (!lpfc_cmd->scsi.pCmd) {
spin_unlock(&lpfc_cmd->buf_lock);
continue;
}
@@ -11681,7 +11681,7 @@ lpfc_sli_abort_taskmgmt(struct lpfc_vport *vport, struct lpfc_sli_ring *pring,
if (iocbq->iocb_flag & LPFC_IO_FOF)
abtsiocbq->iocb_flag |= LPFC_IO_FOF;
- ndlp = lpfc_cmd->rdata->pnode;
+ ndlp = lpfc_cmd->scsi.rdata->pnode;
if (lpfc_is_link_up(phba) &&
(ndlp && ndlp->nlp_state == NLP_STE_MAPPED_NODE))
@@ -20132,7 +20132,7 @@ void lpfc_release_io_buf(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_ncmd,
u32 abts_io_bufs;
/* MUST zero fields if buffer is reused by another protocol */
- lpfc_ncmd->nvmeCmd = NULL;
+ lpfc_ncmd->nvme.nvmeCmd = NULL;
lpfc_ncmd->cur_iocbq.wqe_cmpl = NULL;
lpfc_ncmd->cur_iocbq.iocb_cmpl = NULL;
diff --git a/drivers/scsi/lpfc/lpfc_sli.h b/drivers/scsi/lpfc/lpfc_sli.h
index 37fbcb46387e..f0c51288b10a 100644
--- a/drivers/scsi/lpfc/lpfc_sli.h
+++ b/drivers/scsi/lpfc/lpfc_sli.h
@@ -434,13 +434,13 @@ struct lpfc_io_buf {
#define LPFC_INJERR_APPTAG 2
#define LPFC_INJERR_GUARD 3
#endif
- };
+ } scsi;
/* NVME specific fields */
struct {
struct nvmefc_fcp_req *nvmeCmd;
uint16_t qidx;
- };
+ } nvme;
};
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
uint64_t ts_cmd_start;
--
2.16.4
next prev parent reply other threads:[~2019-10-18 7:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-18 7:50 [RFC PATCH 0/3] lpfc: nodelist pointer cleanup Hannes Reinecke
2019-10-18 7:50 ` Hannes Reinecke [this message]
2019-10-18 7:50 ` [PATCH 2/3] lpfc: access nodelist through scsi-specific rdata pointer Hannes Reinecke
2019-10-18 7:50 ` [PATCH 3/3] lpfc: access nvme nodelist through nvme rport structure Hannes Reinecke
2019-10-18 21:45 ` [RFC PATCH 0/3] lpfc: nodelist pointer cleanup James Smart
2019-10-19 15:55 ` Hannes Reinecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191018075010.55653-2-hare@suse.de \
--to=hare@suse.de \
--cc=dick.kennedy@broadcom.com \
--cc=hare@suse.com \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=james.smart@broadcom.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.