public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>,
	James Bottomley <james.bottomley@hansenpartnership.com>,
	Bart van Assche <bvanassche@acm.org>,
	linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>
Subject: [PATCH 20/42] qlogicfas408: make ql_pcmd() a void function
Date: Wed, 21 Apr 2021 19:47:27 +0200	[thread overview]
Message-ID: <20210421174749.11221-21-hare@suse.de> (raw)
In-Reply-To: <20210421174749.11221-1-hare@suse.de>

Make ql_pcmd() a void function and set the SCSI result directly.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 drivers/scsi/qlogicfas408.c | 75 ++++++++++++++++++++++++-------------
 1 file changed, 49 insertions(+), 26 deletions(-)

diff --git a/drivers/scsi/qlogicfas408.c b/drivers/scsi/qlogicfas408.c
index 136681ad18a5..a1eabdc7db09 100644
--- a/drivers/scsi/qlogicfas408.c
+++ b/drivers/scsi/qlogicfas408.c
@@ -256,7 +256,7 @@ static void ql_icmd(struct scsi_cmnd *cmd)
  *	Process scsi command - usually after interrupt 
  */
 
-static unsigned int ql_pcmd(struct scsi_cmnd *cmd)
+static void ql_pcmd(struct scsi_cmnd *cmd)
 {
 	unsigned int i, j;
 	unsigned long k;
@@ -274,13 +274,15 @@ static unsigned int ql_pcmd(struct scsi_cmnd *cmd)
 	j = inb(qbase + 6);
 	i = inb(qbase + 5);
 	if (i == 0x20) {
-		return (DID_NO_CONNECT << 16);
+		set_host_byte(cmd, DID_NO_CONNECT);
+		return;
 	}
 	i |= inb(qbase + 5);	/* the 0x10 bit can be set after the 0x08 */
 	if (i != 0x18) {
 		printk(KERN_ERR "Ql:Bad Interrupt status:%02x\n", i);
 		ql_zap(priv);
-		return (DID_BAD_INTR << 16);
+		set_host_byte(cmd, DID_BAD_INTR);
+		return;
 	}
 	j &= 7;			/* j = inb( qbase + 7 ) >> 5; */
 
@@ -293,9 +295,10 @@ static unsigned int ql_pcmd(struct scsi_cmnd *cmd)
 		printk(KERN_ERR "Ql:Bad sequence for command %d, int %02X, cmdleft = %d\n",
 		     j, i, inb(qbase + 7) & 0x1f);
 		ql_zap(priv);
-		return (DID_ERROR << 16);
+		set_host_byte (cmd, DID_ERROR);
+		return;
 	}
-	result = DID_OK;
+
 	if (inb(qbase + 7) & 0x1f)	/* if some bytes in fifo */
 		outb(1, qbase + 3);	/* clear fifo */
 	/* note that request_bufflen is the total xfer size when sg is used */
@@ -314,21 +317,24 @@ static unsigned int ql_pcmd(struct scsi_cmnd *cmd)
 		scsi_for_each_sg(cmd, sg, scsi_sg_count(cmd), i) {
 			if (priv->qabort) {
 				REG0;
-				return ((priv->qabort == 1 ?
-					 DID_ABORT : DID_RESET) << 16);
+				set_host_byte(cmd,
+					      priv->qabort == 1 ?
+					      DID_ABORT : DID_RESET);
 			}
 			buf = sg_virt(sg);
 			if (ql_pdma(priv, phase, buf, sg->length))
 				break;
 		}
 		REG0;
-		rtrc(2)
+		rtrc(2);
 		/*
 		 *	Wait for irq (split into second state of irq handler
 		 *	if this can take time) 
 		 */
-		if ((k = ql_wai(priv)))
-			return (k << 16);
+		if ((k = ql_wai(priv))) {
+			set_host_byte(cmd, k);
+			return;
+		}
 		k = inb(qbase + 5);	/* should be 0x10, bus service */
 	}
 
@@ -344,19 +350,25 @@ static unsigned int ql_pcmd(struct scsi_cmnd *cmd)
 
 	if (time_after_eq(jiffies, k)) {
 		ql_zap(priv);
-		return (DID_TIME_OUT << 16);
+		set_host_byte(cmd, DID_TIME_OUT);
+		return;
 	}
 
 	/* FIXME: timeout ?? */
 	while (inb(qbase + 5))
 		cpu_relax();	/* clear pending ints */
 
-	if (priv->qabort)
-		return ((priv->qabort == 1 ? DID_ABORT : DID_RESET) << 16);
+	if (priv->qabort) {
+		set_host_byte(cmd,
+			      priv->qabort == 1 ? DID_ABORT : DID_RESET);
+		return;
+	}
 
 	outb(0x11, qbase + 3);	/* get status and message */
-	if ((k = ql_wai(priv)))
-		return (k << 16);
+	if ((k = ql_wai(priv))) {
+		set_host_byte(cmd, k);
+		return;
+	}
 	i = inb(qbase + 5);	/* get chip irq stat */
 	j = inb(qbase + 7) & 0x1f;	/* and bytes rec'd */
 	status = inb(qbase + 2);
@@ -368,12 +380,14 @@ static unsigned int ql_pcmd(struct scsi_cmnd *cmd)
 	 */
 	if (!((i == 8 && j == 2) || (i == 0x10 && j == 1))) {
 		printk(KERN_ERR "Ql:Error during status phase, int=%02X, %d bytes recd\n", i, j);
-		result = DID_ERROR;
+		set_host_byte(cmd, DID_ERROR);
 	}
 	outb(0x12, qbase + 3);	/* done, disconnect */
-	rtrc(1)
-	if ((k = ql_wai(priv)))
-		return (k << 16);
+	rtrc(1);
+	if ((k = ql_wai(priv))) {
+		set_host_byte(cmd, k);
+		return;
+	}
 
 	/*
 	 *	Should get bus service interrupt and disconnect interrupt 
@@ -385,12 +399,18 @@ static unsigned int ql_pcmd(struct scsi_cmnd *cmd)
 		cpu_relax();
 		i |= inb(qbase + 5);
 	}
-	rtrc(0)
+	rtrc(0);
 
-	if (priv->qabort)
-		return ((priv->qabort == 1 ? DID_ABORT : DID_RESET) << 16);
-		
-	return (result << 16) | (message << 8) | (status & STATUS_MASK);
+	if (priv->qabort) {
+		set_host_byte(cmd,
+			      priv->qabort == 1 ? DID_ABORT : DID_RESET);
+		return;
+	}
+
+	set_host_byte(cmd, result);
+	set_msg_byte(cmd, message);
+	set_status_byte(cmd, status);
+	return;
 }
 
 /*
@@ -415,7 +435,7 @@ static void ql_ihandl(void *dev_id)
 		return;
 	}
 	icmd = priv->qlcmd;
-	icmd->result = ql_pcmd(icmd);
+	ql_pcmd(icmd);
 	priv->qlcmd = NULL;
 	/*
 	 *	If result is CHECK CONDITION done calls qcommand to request 
@@ -443,8 +463,11 @@ static int qlogicfas408_queuecommand_lck(struct scsi_cmnd *cmd,
 			      void (*done) (struct scsi_cmnd *))
 {
 	struct qlogicfas408_priv *priv = get_priv_by_cmd(cmd);
+
+	set_host_byte(cmd, DID_OK);
+	set_status_byte(cmd, SAM_STAT_GOOD);
 	if (scmd_id(cmd) == priv->qinitid) {
-		cmd->result = DID_BAD_TARGET << 16;
+		set_host_byte(cmd, DID_BAD_TARGET);
 		done(cmd);
 		return 0;
 	}
-- 
2.29.2


  parent reply	other threads:[~2021-04-21 17:48 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-21 17:47 [RFC PATCH 00/42] SCSI result cleanup, part 2 Hannes Reinecke
2021-04-21 17:47 ` [PATCH 01/42] st: return error code in st_scsi_execute() Hannes Reinecke
2021-04-21 20:56   ` Bart Van Assche
2021-04-21 17:47 ` [PATCH 02/42] scsi_ioctl: return error code when blk_rq_map_kern() fails Hannes Reinecke
2021-04-21 21:01   ` Bart Van Assche
2021-04-22  6:29     ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 03/42] scsi_dh_alua: do not interpret DRIVER_ERROR Hannes Reinecke
2021-04-21 17:47 ` [PATCH 04/42] scsi: Fixup calling convention for scsi_mode_sense() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 05/42] scsi: stop using DRIVER_ERROR Hannes Reinecke
2021-04-21 21:30   ` Bart Van Assche
2021-04-22  8:39     ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 06/42] scsi: introduce scsi_build_sense() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 07/42] scsi: Kill DRIVER_SENSE Hannes Reinecke
2021-04-21 19:46   ` Douglas Gilbert
2021-04-21 20:07     ` Hannes Reinecke
2021-04-21 21:06   ` Bart Van Assche
2021-04-22  6:31     ` Hannes Reinecke
2021-04-22 15:46       ` Douglas Gilbert
2021-04-21 17:47 ` [PATCH 08/42] scsi: do not use DRIVER_INVALID Hannes Reinecke
2021-04-21 17:47 ` [PATCH 09/42] scsi_error: use DID_TIME_OUT instead of DRIVER_TIMEOUT Hannes Reinecke
2021-04-21 17:47 ` [PATCH 10/42] xen-scsiback: use DID_ERROR instead of DRIVER_ERROR Hannes Reinecke
2021-04-21 17:47 ` [PATCH 11/42] xen-scsifront: compability status handling Hannes Reinecke
2021-04-21 17:47 ` [PATCH 12/42] scsi: Drop the now obsolete driver_byte definitions Hannes Reinecke
2021-04-21 17:47 ` [PATCH 13/42] scsi: add get_{status,host}_byte() accessor function Hannes Reinecke
2021-04-21 21:09   ` Bart Van Assche
2021-04-22  6:33     ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 14/42] scsi: add scsi_result_is_good() Hannes Reinecke
2021-04-21 21:10   ` Bart Van Assche
2021-04-21 21:58     ` Douglas Gilbert
2021-04-22  8:42       ` Hannes Reinecke
2021-04-22  9:36         ` Finn Thain
2021-04-22 15:56         ` Douglas Gilbert
2021-04-22 16:51           ` Douglas Gilbert
2021-04-22 16:52           ` Bart Van Assche
2021-04-22 17:33             ` Douglas Gilbert
2021-04-26  8:45               ` Hannes Reinecke
2021-04-22  6:34     ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 15/42] NCR5380: use SCSI result accessors Hannes Reinecke
2021-04-21 21:11   ` Bart Van Assche
2021-04-22  6:37     ` Hannes Reinecke
2021-04-22 16:10       ` Bart Van Assche
2021-04-26  8:30         ` Hannes Reinecke
2021-04-22  9:36   ` Finn Thain
2021-04-21 17:47 ` [PATCH 16/42] NCR5380: Fold SCSI message ABORT onto DID_ABORT Hannes Reinecke
2021-04-22  9:35   ` Finn Thain
2021-04-21 17:47 ` [PATCH 17/42] scsi: add translate_msg_byte() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 18/42] dc395: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 22:26   ` Bart Van Assche
2021-04-22  8:52     ` Hannes Reinecke
2021-04-22 16:12       ` Bart Van Assche
2021-04-21 17:47 ` [PATCH 19/42] dc395: translate message bytes Hannes Reinecke
2021-04-21 17:47 ` Hannes Reinecke [this message]
2021-04-21 17:47 ` [PATCH 21/42] qlogicfas408: whitespace cleanup Hannes Reinecke
2021-04-21 17:47 ` [PATCH 22/42] qlogicfas408: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 23/42] nsp32: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 24/42] nsp32: whitespace cleanup Hannes Reinecke
2021-04-21 17:47 ` [PATCH 25/42] nsp32: do not set message byte Hannes Reinecke
2021-04-21 17:47 ` [PATCH 26/42] wd33c93: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 27/42] wd33c93: translate message byte to host byte Hannes Reinecke
2021-04-21 17:47 ` [PATCH 28/42] mesh: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 29/42] mesh: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 30/42] acornscsi: use standard macros to set SCSI result Hannes Reinecke
2021-04-21 17:47 ` [PATCH 31/42] acornscsi: remove acornscsi_reportstatus() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 32/42] acornscsi: translate message byte to host byte Hannes Reinecke
2021-04-21 17:47 ` [PATCH 33/42] aha152x: modify done() to use separate status bytes Hannes Reinecke
2021-04-21 17:47 ` [PATCH 34/42] aha152x: do not set message byte when calling scsi_done() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 35/42] advansys: do not set message byte in SCSI status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 36/42] advansys: use SCSI result accessors Hannes Reinecke
2021-04-21 17:47 ` [PATCH 37/42] fas216: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 38/42] fas216: convert to SCSI Accessors Hannes Reinecke
2021-04-21 17:47 ` [PATCH 39/42] fdomain: drop last argument to fdomain_finish_cmd() Hannes Reinecke
2021-04-21 17:47 ` [PATCH 40/42] fdomain: translate message to host byte status Hannes Reinecke
2021-04-21 17:47 ` [PATCH 41/42] scsi: drop message byte helper Hannes Reinecke
2021-04-21 21:14   ` Bart Van Assche
2021-04-22  6:37     ` Hannes Reinecke
2021-04-21 17:47 ` [PATCH 42/42] scsi: kill message byte Hannes Reinecke
2021-04-21 20:54 ` [RFC PATCH 00/42] SCSI result cleanup, part 2 Bart Van Assche
2021-04-21 22:26 ` Bart Van Assche
2021-04-22  8:49   ` Hannes Reinecke
2021-04-22 16:28     ` 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=20210421174749.11221-21-hare@suse.de \
    --to=hare@suse.de \
    --cc=bvanassche@acm.org \
    --cc=hch@lst.de \
    --cc=james.bottomley@hansenpartnership.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