public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: "Martin K . Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org, Bart Van Assche <bvanassche@acm.org>,
	Johannes Thumshirn <johannes.thumshirn@wdc.com>,
	Himanshu Madhani <himanshu.madhani@oracle.com>,
	"James E.J. Bottomley" <jejb@linux.ibm.com>
Subject: [PATCH v4 40/50] scsi: sym53c500_cs: Move the SCSI pointer to private command data
Date: Wed, 16 Feb 2022 13:02:23 -0800	[thread overview]
Message-ID: <20220216210233.28774-41-bvanassche@acm.org> (raw)
In-Reply-To: <20220216210233.28774-1-bvanassche@acm.org>

Set .cmd_size in the SCSI host template instead of using the SCSI pointer
from struct scsi_cmnd.
This patch prepares for removal of the SCSI pointer from struct scsi_cmnd.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 drivers/scsi/pcmcia/sym53c500_cs.c | 47 ++++++++++++++++++------------
 1 file changed, 29 insertions(+), 18 deletions(-)

diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c
index fc93d2a57e1e..c4a838635893 100644
--- a/drivers/scsi/pcmcia/sym53c500_cs.c
+++ b/drivers/scsi/pcmcia/sym53c500_cs.c
@@ -192,6 +192,11 @@ struct sym53c500_data {
 	int fast_pio;
 };
 
+static struct scsi_pointer *sym53c500_scsi_pointer(struct scsi_cmnd *cmd)
+{
+	return scsi_cmd_priv(cmd);
+}
+
 enum Phase {
     idle,
     data_out,
@@ -351,6 +356,7 @@ SYM53C500_intr(int irq, void *dev_id)
 	struct sym53c500_data *data =
 	    (struct sym53c500_data *)dev->hostdata;
 	struct scsi_cmnd *curSC = data->current_SC;
+	struct scsi_pointer *scsi_pointer = sym53c500_scsi_pointer(curSC);
 	int fast_pio = data->fast_pio;
 
 	spin_lock_irqsave(dev->host_lock, flags);
@@ -397,11 +403,12 @@ SYM53C500_intr(int irq, void *dev_id)
 
 	if (int_reg & 0x20) {		/* Disconnect */
 		DEB(printk("SYM53C500: disconnect intr received\n"));
-		if (curSC->SCp.phase != message_in) {	/* Unexpected disconnect */
+		if (scsi_pointer->phase != message_in) {	/* Unexpected disconnect */
 			curSC->result = DID_NO_CONNECT << 16;
 		} else {	/* Command complete, return status and message */
-			curSC->result = (curSC->SCp.Status & 0xff)
-			    | ((curSC->SCp.Message & 0xff) << 8) | (DID_OK << 16);
+			curSC->result = (scsi_pointer->Status & 0xff) |
+				((scsi_pointer->Message & 0xff) << 8) |
+				(DID_OK << 16);
 		}
 		goto idle_out;
 	}
@@ -412,7 +419,7 @@ SYM53C500_intr(int irq, void *dev_id)
 			struct scatterlist *sg;
 			int i;
 
-			curSC->SCp.phase = data_out;
+			scsi_pointer->phase = data_out;
 			VDEB(printk("SYM53C500: Data-Out phase\n"));
 			outb(FLUSH_FIFO, port_base + CMD_REG);
 			LOAD_DMA_COUNT(port_base, scsi_bufflen(curSC));	/* Max transfer size */
@@ -431,7 +438,7 @@ SYM53C500_intr(int irq, void *dev_id)
 			struct scatterlist *sg;
 			int i;
 
-			curSC->SCp.phase = data_in;
+			scsi_pointer->phase = data_in;
 			VDEB(printk("SYM53C500: Data-In phase\n"));
 			outb(FLUSH_FIFO, port_base + CMD_REG);
 			LOAD_DMA_COUNT(port_base, scsi_bufflen(curSC));	/* Max transfer size */
@@ -446,12 +453,12 @@ SYM53C500_intr(int irq, void *dev_id)
 		break;
 
 	case 0x02:		/* COMMAND */
-		curSC->SCp.phase = command_ph;
+		scsi_pointer->phase = command_ph;
 		printk("SYM53C500: Warning: Unknown interrupt occurred in command phase!\n");
 		break;
 
 	case 0x03:		/* STATUS */
-		curSC->SCp.phase = status_ph;
+		scsi_pointer->phase = status_ph;
 		VDEB(printk("SYM53C500: Status phase\n"));
 		outb(FLUSH_FIFO, port_base + CMD_REG);
 		outb(INIT_CMD_COMPLETE, port_base + CMD_REG);
@@ -464,22 +471,24 @@ SYM53C500_intr(int irq, void *dev_id)
 
 	case 0x06:		/* MESSAGE-OUT */
 		DEB(printk("SYM53C500: Message-Out phase\n"));
-		curSC->SCp.phase = message_out;
+		scsi_pointer->phase = message_out;
 		outb(SET_ATN, port_base + CMD_REG);	/* Reject the message */
 		outb(MSG_ACCEPT, port_base + CMD_REG);
 		break;
 
 	case 0x07:		/* MESSAGE-IN */
 		VDEB(printk("SYM53C500: Message-In phase\n"));
-		curSC->SCp.phase = message_in;
+		scsi_pointer->phase = message_in;
 
-		curSC->SCp.Status = inb(port_base + SCSI_FIFO);
-		curSC->SCp.Message = inb(port_base + SCSI_FIFO);
+		scsi_pointer->Status = inb(port_base + SCSI_FIFO);
+		scsi_pointer->Message = inb(port_base + SCSI_FIFO);
 
 		VDEB(printk("SCSI FIFO size=%d\n", inb(port_base + FIFO_FLAGS) & 0x1f));
-		DEB(printk("Status = %02x  Message = %02x\n", curSC->SCp.Status, curSC->SCp.Message));
+		DEB(printk("Status = %02x  Message = %02x\n",
+			   scsi_pointer->Status, scsi_pointer->Message));
 
-		if (curSC->SCp.Message == SAVE_POINTERS || curSC->SCp.Message == DISCONNECT) {
+		if (scsi_pointer->Message == SAVE_POINTERS ||
+		    scsi_pointer->Message == DISCONNECT) {
 			outb(SET_ATN, port_base + CMD_REG);	/* Reject message */
 			DEB(printk("Discarding SAVE_POINTERS message\n"));
 		}
@@ -491,7 +500,7 @@ SYM53C500_intr(int irq, void *dev_id)
 	return IRQ_HANDLED;
 
 idle_out:
-	curSC->SCp.phase = idle;
+	scsi_pointer->phase = idle;
 	scsi_done(curSC);
 	goto out;
 }
@@ -539,6 +548,7 @@ SYM53C500_info(struct Scsi_Host *SChost)
 
 static int SYM53C500_queue_lck(struct scsi_cmnd *SCpnt)
 {
+	struct scsi_pointer *scsi_pointer = sym53c500_scsi_pointer(SCpnt);
 	int i;
 	int port_base = SCpnt->device->host->io_port;
 	struct sym53c500_data *data =
@@ -555,9 +565,9 @@ static int SYM53C500_queue_lck(struct scsi_cmnd *SCpnt)
 	VDEB(printk("\n"));
 
 	data->current_SC = SCpnt;
-	data->current_SC->SCp.phase = command_ph;
-	data->current_SC->SCp.Status = 0;
-	data->current_SC->SCp.Message = 0;
+	scsi_pointer->phase = command_ph;
+	scsi_pointer->Status = 0;
+	scsi_pointer->Message = 0;
 
 	/* We are locked here already by the mid layer */
 	REG0(port_base);
@@ -671,7 +681,8 @@ static struct scsi_host_template sym53c500_driver_template = {
      .can_queue			= 1,
      .this_id			= 7,
      .sg_tablesize		= 32,
-     .shost_groups		= SYM53C500_shost_groups
+     .shost_groups		= SYM53C500_shost_groups,
+     .cmd_size			= sizeof(struct scsi_pointer),
 };
 
 static int SYM53C500_config_check(struct pcmcia_device *p_dev, void *priv_data)

  parent reply	other threads:[~2022-02-16 21:04 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-16 21:01 [PATCH v4 00/50] Remove the SCSI pointer from struct scsi_cmnd Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 01/50] scsi: ips: Remove an unreachable statement Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 02/50] scsi: ips: Change the return type of ips_release() into 'void' Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 03/50] scsi: ips: Use true and false instead of TRUE and FALSE Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 04/50] scsi: nsp_cs: Change the return type of two functions into 'void' Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 05/50] scsi: nsp_cs: Use true and false instead of TRUE and FALSE Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 06/50] scsi: Remove drivers/scsi/scsi.h Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 07/50] scsi: NCR5380: Remove the NCR5380_CMD_SIZE macro Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 08/50] scsi: NCR5380: Introduce the NCR5380_cmd_priv() function Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 09/50] scsi: NCR5380: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 10/50] scsi: arm: Rename arm/scsi.h into arm/arm_scsi.h Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 11/50] scsi: arm: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 12/50] scsi: 53c700: Stop clearing SCSI pointer fields Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 13/50] scsi: aacraid: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 14/50] scsi: advansys: " Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 15/50] scsi: aha1542: Remove a set-but-not-used array Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 16/50] scsi: aha152x: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 17/50] scsi: bfa: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 18/50] scsi: csio: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 19/50] scsi: dc395x: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 20/50] scsi: esp_scsi: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 21/50] scsi: fdomain: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 22/50] scsi: fnic: Fix a tracing statement Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 23/50] scsi: fnic: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 24/50] scsi: hptiop: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 25/50] scsi: imm: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 26/50] scsi: iscsi: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 27/50] scsi: initio: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 28/50] scsi: libfc: " Bart Van Assche
2022-02-17  7:05   ` Hannes Reinecke
2022-02-16 21:02 ` [PATCH v4 29/50] scsi: bnx2fc: " Bart Van Assche
2022-02-17  7:06   ` Hannes Reinecke
2022-02-16 21:02 ` [PATCH v4 30/50] scsi: qedf: " Bart Van Assche
2022-02-17  7:06   ` Hannes Reinecke
2022-02-16 21:02 ` [PATCH v4 31/50] scsi: mac53c94: Fix a set-but-not-used compiler warning Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 32/50] scsi: mac53c94: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 33/50] scsi: megaraid: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 34/50] scsi: megasas: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 35/50] scsi: mesh: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 36/50] scsi: mvsas: Fix a set-but-not-used warning Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 37/50] scsi: mvumi: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 38/50] scsi: nsp32: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 39/50] scsi: nsp_cs: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` Bart Van Assche [this message]
2022-02-16 21:02 ` [PATCH v4 41/50] scsi: ppa: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 42/50] scsi: qla1280: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 43/50] scsi: qla2xxx: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 44/50] scsi: smartpqi: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 45/50] scsi: sym53c8xx_2: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 46/50] scsi: usb: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 47/50] scsi: wd719x: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 48/50] scsi: wd33c93: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 49/50] scsi: zalon: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 50/50] scsi: core: Remove struct scsi_pointer from struct scsi_cmnd Bart Van Assche
2022-02-18  0:45 ` [PATCH v4 00/50] Remove the SCSI pointer " Finn Thain
2022-02-18 19:43   ` Bart Van Assche

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=20220216210233.28774-41-bvanassche@acm.org \
    --to=bvanassche@acm.org \
    --cc=himanshu.madhani@oracle.com \
    --cc=jejb@linux.ibm.com \
    --cc=johannes.thumshirn@wdc.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox