diff options
author | Bart Van Assche <bvanassche@acm.org> | 2022-02-18 22:51:05 +0300 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2022-02-23 05:11:06 +0300 |
commit | 195771c5da10353a97ed33c262dd51ac3671450d (patch) | |
tree | c344727120876a04ef163db21781871e2836e925 | |
parent | af0d3c13e468a5268e4248d8087880e425df1921 (diff) | |
download | linux-195771c5da10353a97ed33c262dd51ac3671450d.tar.xz |
scsi: nsp32: Stop using the SCSI pointer
Move the SCSI status field to private data. Stop setting the .ptr,
.this_residual, .buffer and .buffer_residual SCSI pointer members
since no code in this driver reads these members.
This patch prepares for removal of the SCSI pointer from struct scsi_cmnd.
Link: https://lore.kernel.org/r/20220218195117.25689-38-bvanassche@acm.org
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Reviewed-by: Masanori Goto <gotom@debian.or.jp>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r-- | drivers/scsi/nsp32.c | 20 | ||||
-rw-r--r-- | drivers/scsi/nsp32.h | 9 |
2 files changed, 16 insertions, 13 deletions
diff --git a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c index bd3ee3bf08ee..75bb0028ed74 100644 --- a/drivers/scsi/nsp32.c +++ b/drivers/scsi/nsp32.c @@ -273,6 +273,7 @@ static struct scsi_host_template nsp32_template = { .eh_abort_handler = nsp32_eh_abort, .eh_host_reset_handler = nsp32_eh_host_reset, /* .highmem_io = 1, */ + .cmd_size = sizeof(struct nsp32_cmd_priv), }; #include "nsp32_io.h" @@ -946,14 +947,9 @@ static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt) show_command(SCpnt); data->CurrentSC = SCpnt; - SCpnt->SCp.Status = SAM_STAT_CHECK_CONDITION; + nsp32_priv(SCpnt)->status = SAM_STAT_CHECK_CONDITION; scsi_set_resid(SCpnt, scsi_bufflen(SCpnt)); - SCpnt->SCp.ptr = (char *)scsi_sglist(SCpnt); - SCpnt->SCp.this_residual = scsi_bufflen(SCpnt); - SCpnt->SCp.buffer = NULL; - SCpnt->SCp.buffers_residual = 0; - /* initialize data */ data->msgout_len = 0; data->msgin_len = 0; @@ -1376,7 +1372,7 @@ static irqreturn_t do_nsp32_isr(int irq, void *dev_id) case BUSPHASE_STATUS: nsp32_dbg(NSP32_DEBUG_INTR, "fifo/status"); - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); break; default: @@ -1687,18 +1683,18 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph) /* MsgIn 00: Command Complete */ nsp32_dbg(NSP32_DEBUG_BUSFREE, "command complete"); - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); nsp32_dbg(NSP32_DEBUG_BUSFREE, "normal end stat=0x%x resid=0x%x\n", - SCpnt->SCp.Status, scsi_get_resid(SCpnt)); + nsp32_priv(SCpnt)->status, scsi_get_resid(SCpnt)); SCpnt->result = (DID_OK << 16) | - (SCpnt->SCp.Status << 0); + (nsp32_priv(SCpnt)->status << 0); nsp32_scsi_done(SCpnt); /* All operation is done */ return TRUE; } else if (execph & MSGIN_04_VALID) { /* MsgIn 04: Disconnect */ - SCpnt->SCp.Status = nsp32_read1(base, SCSI_CSB_IN); + nsp32_priv(SCpnt)->status = nsp32_read1(base, SCSI_CSB_IN); nsp32_dbg(NSP32_DEBUG_BUSFREE, "disconnect"); return TRUE; @@ -1706,8 +1702,6 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph) /* Unexpected bus free */ nsp32_msg(KERN_WARNING, "unexpected bus free occurred"); - /* DID_ERROR? */ - //SCpnt->result = (DID_OK << 16) | (SCpnt->SCp.Status << 0); SCpnt->result = DID_ERROR << 16; nsp32_scsi_done(SCpnt); return TRUE; diff --git a/drivers/scsi/nsp32.h b/drivers/scsi/nsp32.h index ab0726c070f7..924889f8bd37 100644 --- a/drivers/scsi/nsp32.h +++ b/drivers/scsi/nsp32.h @@ -534,6 +534,15 @@ typedef struct _nsp32_sync_table { ---PERIOD-- ---OFFSET-- */ #define TO_SYNCREG(period, offset) (((period) & 0x0f) << 4 | ((offset) & 0x0f)) +struct nsp32_cmd_priv { + enum sam_status status; +}; + +static inline struct nsp32_cmd_priv *nsp32_priv(struct scsi_cmnd *cmd) +{ + return scsi_cmd_priv(cmd); +} + typedef struct _nsp32_target { unsigned char syncreg; /* value for SYNCREG */ unsigned char ackwidth; /* value for ACKWIDTH */ |