linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chad Dupuis <chad.dupuis@qlogic.com>
To: jbottomley@parallels.com
Cc: giridhar.malavali@qlogic.com, chad.dupuis@qlogic.com,
	andrew.vasquez@qlogic.com, linux-scsi@vger.kernel.org
Subject: [PATCH 02/22] qla2xxx: Micro optimization in queuecommand handler
Date: Tue, 15 May 2012 14:34:09 -0400	[thread overview]
Message-ID: <1337106869-14191-3-git-send-email-chad.dupuis@qlogic.com> (raw)
In-Reply-To: <1337106869-14191-1-git-send-email-chad.dupuis@qlogic.com>

From: Chetan Loke <loke.chetan@gmail.com>

Optimized queuecommand handler's to eliminate double head-room checks.
The checks are moved inside the 1st if-loop otherwise you would end up checking twice when there is
enough head room.

Signed-off-by: Chetan Loke <loke.chetan@gmail.com>
Reviewed-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Reviewed-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_iocb.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c
index eac9509..1ae0d1d 100644
--- a/drivers/scsi/qla2xxx/qla_iocb.c
+++ b/drivers/scsi/qla2xxx/qla_iocb.c
@@ -385,9 +385,10 @@ qla2x00_start_scsi(srb_t *sp)
 		else
 			req->cnt = req->length -
 			    (req->ring_index - cnt);
+		/* If still no head room then bail out */
+		if (req->cnt < (req_cnt + 2))
+			goto queuing_error;
 	}
-	if (req->cnt < (req_cnt + 2))
-		goto queuing_error;
 
 	/* Build command packet */
 	req->current_outstanding_cmd = handle;
@@ -1502,9 +1503,9 @@ qla24xx_start_scsi(srb_t *sp)
 		else
 			req->cnt = req->length -
 				(req->ring_index - cnt);
+		if (req->cnt < (req_cnt + 2))
+			goto queuing_error;
 	}
-	if (req->cnt < (req_cnt + 2))
-		goto queuing_error;
 
 	/* Build command packet. */
 	req->current_outstanding_cmd = handle;
@@ -1717,11 +1718,10 @@ qla24xx_dif_start_scsi(srb_t *sp)
 		else
 			req->cnt = req->length -
 				(req->ring_index - cnt);
+		if (req->cnt < (req_cnt + 2))
+			goto queuing_error;
 	}
 
-	if (req->cnt < (req_cnt + 2))
-		goto queuing_error;
-
 	status |= QDSS_GOT_Q_SPACE;
 
 	/* Build header part of command packet (excluding the OPCODE). */
@@ -2343,11 +2343,10 @@ sufficient_dsds:
 			else
 				req->cnt = req->length -
 					(req->ring_index - cnt);
+			if (req->cnt < (req_cnt + 2))
+				goto queuing_error;
 		}
 
-		if (req->cnt < (req_cnt + 2))
-			goto queuing_error;
-
 		ctx = sp->u.scmd.ctx =
 		    mempool_alloc(ha->ctx_mempool, GFP_ATOMIC);
 		if (!ctx) {
-- 
1.7.7


  parent reply	other threads:[~2012-05-15 18:57 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-15 18:34 [PATCH 00/22] qla2xxx: Updates for scsi "misc" branch Chad Dupuis
2012-05-15 18:34 ` [PATCH 01/22] qla2xxx: Fix typo in qla_init.c Chad Dupuis
2012-05-15 18:34 ` Chad Dupuis [this message]
2012-05-15 18:34 ` [PATCH 03/22] qla2xxx: Fix typo in qla_mbx.c Chad Dupuis
2012-05-15 18:34 ` [PATCH 04/22] qla2xxx: Remove unneeded DPC wakeups from qla82xx_watchdog Chad Dupuis
2012-05-15 18:34 ` [PATCH 05/22] qla2xxx: Detect PEG errors Chad Dupuis
2012-05-15 18:34 ` [PATCH 06/22] qla2xxx: Change "Done" to "Entering" in the debug print statement in qla2x00_port_logout Chad Dupuis
2012-05-15 18:34 ` [PATCH 07/22] qla2xxx: Handle interrupt registration failures more gracefully Chad Dupuis
2012-05-15 18:34 ` [PATCH 08/22] qla2xxx: Add ql_dbg_verbose logging level Chad Dupuis
2012-05-15 18:34 ` [PATCH 09/22] qla2xxx: Stats should be different from physical and virtual ports Chad Dupuis
2012-05-15 18:34 ` [PATCH 10/22] qla2xxx: Fix typo in bus-reset handler Chad Dupuis
2012-05-15 18:34 ` [PATCH 11/22] qla2xxx: Display proper supported speeds for 16G FC adapters Chad Dupuis
2012-05-15 18:34 ` [PATCH 12/22] qla2xxx: Fixups for ISP83xx Chad Dupuis
2012-05-15 18:34 ` [PATCH 13/22] qla2xxx: Remove mirrored field vp_idx from struct fc_port Chad Dupuis
2012-05-15 18:34 ` [PATCH 14/22] qla2xxx: Optimize existing port name server query matching Chad Dupuis
2012-05-15 18:34 ` [PATCH 15/22] qla2xxx: Corrections to log messages Chad Dupuis
2012-05-15 18:34 ` [PATCH 16/22] qla2xxx: Log link up and link down messages to track link flops Chad Dupuis
2012-05-15 18:34 ` [PATCH 17/22] qla2xxx: Avoid losing any fc ports when loop id's are exhausted Chad Dupuis
2012-05-15 18:34 ` [PATCH 18/22] qla2xxx: Don't capture minidump for ISP82xx on flash update from application Chad Dupuis
2012-05-15 18:34 ` [PATCH 19/22] qla2xxx: Display proper firmware version when new minidump template is gathered for ISP82xx Chad Dupuis
2012-05-15 18:34 ` [PATCH 20/22] Revert "qla2xxx: During loopdown perform Diagnostic loopback." Chad Dupuis
2012-05-15 18:34 ` [PATCH 21/22] qla2xxx: Add LLD target-mode infrastructure for >= 24xx series Chad Dupuis
2012-05-15 18:34 ` [PATCH 22/22] tcm_qla2xxx: Add >= 24xx series fabric module for target-core Chad Dupuis
2012-05-18 23:47 ` [PATCH 00/22] qla2xxx: Updates for scsi "misc" branch Nicholas A. Bellinger

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=1337106869-14191-3-git-send-email-chad.dupuis@qlogic.com \
    --to=chad.dupuis@qlogic.com \
    --cc=andrew.vasquez@qlogic.com \
    --cc=giridhar.malavali@qlogic.com \
    --cc=jbottomley@parallels.com \
    --cc=linux-scsi@vger.kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).