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

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.orgReviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
Reviewed-by: default avatarMasanori Goto <gotom@debian.or.jp>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent af0d3c13
...@@ -273,6 +273,7 @@ static struct scsi_host_template nsp32_template = { ...@@ -273,6 +273,7 @@ static struct scsi_host_template nsp32_template = {
.eh_abort_handler = nsp32_eh_abort, .eh_abort_handler = nsp32_eh_abort,
.eh_host_reset_handler = nsp32_eh_host_reset, .eh_host_reset_handler = nsp32_eh_host_reset,
/* .highmem_io = 1, */ /* .highmem_io = 1, */
.cmd_size = sizeof(struct nsp32_cmd_priv),
}; };
#include "nsp32_io.h" #include "nsp32_io.h"
...@@ -946,14 +947,9 @@ static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt) ...@@ -946,14 +947,9 @@ static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt)
show_command(SCpnt); show_command(SCpnt);
data->CurrentSC = 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)); 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 */ /* initialize data */
data->msgout_len = 0; data->msgout_len = 0;
data->msgin_len = 0; data->msgin_len = 0;
...@@ -1376,7 +1372,7 @@ static irqreturn_t do_nsp32_isr(int irq, void *dev_id) ...@@ -1376,7 +1372,7 @@ static irqreturn_t do_nsp32_isr(int irq, void *dev_id)
case BUSPHASE_STATUS: case BUSPHASE_STATUS:
nsp32_dbg(NSP32_DEBUG_INTR, "fifo/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; break;
default: default:
...@@ -1687,18 +1683,18 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph) ...@@ -1687,18 +1683,18 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph)
/* MsgIn 00: Command Complete */ /* MsgIn 00: Command Complete */
nsp32_dbg(NSP32_DEBUG_BUSFREE, "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, nsp32_dbg(NSP32_DEBUG_BUSFREE,
"normal end stat=0x%x resid=0x%x\n", "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->result = (DID_OK << 16) |
(SCpnt->SCp.Status << 0); (nsp32_priv(SCpnt)->status << 0);
nsp32_scsi_done(SCpnt); nsp32_scsi_done(SCpnt);
/* All operation is done */ /* All operation is done */
return TRUE; return TRUE;
} else if (execph & MSGIN_04_VALID) { } else if (execph & MSGIN_04_VALID) {
/* MsgIn 04: Disconnect */ /* 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"); nsp32_dbg(NSP32_DEBUG_BUSFREE, "disconnect");
return TRUE; return TRUE;
...@@ -1706,8 +1702,6 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph) ...@@ -1706,8 +1702,6 @@ static int nsp32_busfree_occur(struct scsi_cmnd *SCpnt, unsigned short execph)
/* Unexpected bus free */ /* Unexpected bus free */
nsp32_msg(KERN_WARNING, "unexpected bus free occurred"); nsp32_msg(KERN_WARNING, "unexpected bus free occurred");
/* DID_ERROR? */
//SCpnt->result = (DID_OK << 16) | (SCpnt->SCp.Status << 0);
SCpnt->result = DID_ERROR << 16; SCpnt->result = DID_ERROR << 16;
nsp32_scsi_done(SCpnt); nsp32_scsi_done(SCpnt);
return TRUE; return TRUE;
......
...@@ -534,6 +534,15 @@ typedef struct _nsp32_sync_table { ...@@ -534,6 +534,15 @@ typedef struct _nsp32_sync_table {
---PERIOD-- ---OFFSET-- */ ---PERIOD-- ---OFFSET-- */
#define TO_SYNCREG(period, offset) (((period) & 0x0f) << 4 | ((offset) & 0x0f)) #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 { typedef struct _nsp32_target {
unsigned char syncreg; /* value for SYNCREG */ unsigned char syncreg; /* value for SYNCREG */
unsigned char ackwidth; /* value for ACKWIDTH */ unsigned char ackwidth; /* value for ACKWIDTH */
......
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