Commit a33e7925 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: qedf: Stop using the SCSI pointer

Set .cmd_size in the SCSI host template instead of using the SCSI pointer
from struct scsi_cmnd. Remove the CMD_SCSI_STATUS() assignment because the
assigned value is not used.

This patch prepares for removal of the SCSI pointer from struct scsi_cmnd.

Link: https://lore.kernel.org/r/20220218195117.25689-30-bvanassche@acm.orgReviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent f4b4216f
...@@ -91,7 +91,6 @@ enum qedf_ioreq_event { ...@@ -91,7 +91,6 @@ enum qedf_ioreq_event {
#define FC_GOOD 0 #define FC_GOOD 0
#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2) #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2)
#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3) #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3)
#define CMD_SCSI_STATUS(Cmnd) ((Cmnd)->SCp.Status)
#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0) #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0)
#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1) #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1)
struct qedf_ioreq { struct qedf_ioreq {
...@@ -189,6 +188,15 @@ struct qedf_ioreq { ...@@ -189,6 +188,15 @@ struct qedf_ioreq {
unsigned int alloc; unsigned int alloc;
}; };
struct qedf_cmd_priv {
struct qedf_ioreq *io_req;
};
static inline struct qedf_cmd_priv *qedf_priv(struct scsi_cmnd *cmd)
{
return scsi_cmd_priv(cmd);
}
extern struct workqueue_struct *qedf_io_wq; extern struct workqueue_struct *qedf_io_wq;
struct qedf_rport { struct qedf_rport {
......
...@@ -857,7 +857,7 @@ int qedf_post_io_req(struct qedf_rport *fcport, struct qedf_ioreq *io_req) ...@@ -857,7 +857,7 @@ int qedf_post_io_req(struct qedf_rport *fcport, struct qedf_ioreq *io_req)
/* Initialize rest of io_req fileds */ /* Initialize rest of io_req fileds */
io_req->data_xfer_len = scsi_bufflen(sc_cmd); io_req->data_xfer_len = scsi_bufflen(sc_cmd);
sc_cmd->SCp.ptr = (char *)io_req; qedf_priv(sc_cmd)->io_req = io_req;
io_req->sge_type = QEDF_IOREQ_FAST_SGE; /* Assume fast SGL by default */ io_req->sge_type = QEDF_IOREQ_FAST_SGE; /* Assume fast SGL by default */
/* Record which cpu this request is associated with */ /* Record which cpu this request is associated with */
...@@ -1065,8 +1065,7 @@ static void qedf_parse_fcp_rsp(struct qedf_ioreq *io_req, ...@@ -1065,8 +1065,7 @@ static void qedf_parse_fcp_rsp(struct qedf_ioreq *io_req,
io_req->fcp_resid = fcp_rsp->fcp_resid; io_req->fcp_resid = fcp_rsp->fcp_resid;
io_req->scsi_comp_flags = rsp_flags; io_req->scsi_comp_flags = rsp_flags;
CMD_SCSI_STATUS(sc_cmd) = io_req->cdb_status = io_req->cdb_status = fcp_rsp->scsi_status_code;
fcp_rsp->scsi_status_code;
if (rsp_flags & if (rsp_flags &
FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID) FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID)
...@@ -1150,9 +1149,9 @@ void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, ...@@ -1150,9 +1149,9 @@ void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
return; return;
} }
if (!sc_cmd->SCp.ptr) { if (!qedf_priv(sc_cmd)->io_req) {
QEDF_WARN(&(qedf->dbg_ctx), "SCp.ptr is NULL, returned in " QEDF_WARN(&(qedf->dbg_ctx),
"another context.\n"); "io_req is NULL, returned in another context.\n");
return; return;
} }
...@@ -1312,7 +1311,7 @@ void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, ...@@ -1312,7 +1311,7 @@ void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
clear_bit(QEDF_CMD_OUTSTANDING, &io_req->flags); clear_bit(QEDF_CMD_OUTSTANDING, &io_req->flags);
io_req->sc_cmd = NULL; io_req->sc_cmd = NULL;
sc_cmd->SCp.ptr = NULL; qedf_priv(sc_cmd)->io_req = NULL;
scsi_done(sc_cmd); scsi_done(sc_cmd);
kref_put(&io_req->refcount, qedf_release_cmd); kref_put(&io_req->refcount, qedf_release_cmd);
} }
...@@ -1354,9 +1353,9 @@ void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req, ...@@ -1354,9 +1353,9 @@ void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req,
goto bad_scsi_ptr; goto bad_scsi_ptr;
} }
if (!sc_cmd->SCp.ptr) { if (!qedf_priv(sc_cmd)->io_req) {
QEDF_WARN(&(qedf->dbg_ctx), "SCp.ptr is NULL, returned in " QEDF_WARN(&(qedf->dbg_ctx),
"another context.\n"); "io_req is NULL, returned in another context.\n");
return; return;
} }
...@@ -1409,7 +1408,7 @@ void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req, ...@@ -1409,7 +1408,7 @@ void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req,
qedf_trace_io(io_req->fcport, io_req, QEDF_IO_TRACE_RSP); qedf_trace_io(io_req->fcport, io_req, QEDF_IO_TRACE_RSP);
io_req->sc_cmd = NULL; io_req->sc_cmd = NULL;
sc_cmd->SCp.ptr = NULL; qedf_priv(sc_cmd)->io_req = NULL;
scsi_done(sc_cmd); scsi_done(sc_cmd);
kref_put(&io_req->refcount, qedf_release_cmd); kref_put(&io_req->refcount, qedf_release_cmd);
return; return;
...@@ -2433,8 +2432,8 @@ int qedf_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags) ...@@ -2433,8 +2432,8 @@ int qedf_initiate_tmf(struct scsi_cmnd *sc_cmd, u8 tm_flags)
(tm_flags == FCP_TMF_TGT_RESET) ? "TARGET RESET" : (tm_flags == FCP_TMF_TGT_RESET) ? "TARGET RESET" :
"LUN RESET"); "LUN RESET");
if (sc_cmd->SCp.ptr) { if (qedf_priv(sc_cmd)->io_req) {
io_req = (struct qedf_ioreq *)sc_cmd->SCp.ptr; io_req = qedf_priv(sc_cmd)->io_req;
ref_cnt = kref_read(&io_req->refcount); ref_cnt = kref_read(&io_req->refcount);
QEDF_ERR(NULL, QEDF_ERR(NULL,
"orig io_req = %p xid = 0x%x ref_cnt = %d.\n", "orig io_req = %p xid = 0x%x ref_cnt = %d.\n",
......
...@@ -740,7 +740,7 @@ static int qedf_eh_abort(struct scsi_cmnd *sc_cmd) ...@@ -740,7 +740,7 @@ static int qedf_eh_abort(struct scsi_cmnd *sc_cmd)
} }
io_req = (struct qedf_ioreq *)sc_cmd->SCp.ptr; io_req = qedf_priv(sc_cmd)->io_req;
if (!io_req) { if (!io_req) {
QEDF_ERR(&qedf->dbg_ctx, QEDF_ERR(&qedf->dbg_ctx,
"sc_cmd not queued with lld, sc_cmd=%p op=0x%02x, port_id=%06x\n", "sc_cmd not queued with lld, sc_cmd=%p op=0x%02x, port_id=%06x\n",
...@@ -996,6 +996,7 @@ static struct scsi_host_template qedf_host_template = { ...@@ -996,6 +996,7 @@ static struct scsi_host_template qedf_host_template = {
.sg_tablesize = QEDF_MAX_BDS_PER_CMD, .sg_tablesize = QEDF_MAX_BDS_PER_CMD,
.can_queue = FCOE_PARAMS_NUM_TASKS, .can_queue = FCOE_PARAMS_NUM_TASKS,
.change_queue_depth = scsi_change_queue_depth, .change_queue_depth = scsi_change_queue_depth,
.cmd_size = sizeof(struct qedf_cmd_priv),
}; };
static int qedf_get_paged_crc_eof(struct sk_buff *skb, int tlen) static int qedf_get_paged_crc_eof(struct sk_buff *skb, int tlen)
......
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