Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6eb3c9f authored by Chetan Loke's avatar Chetan Loke Committed by James Bottomley
Browse files

[SCSI] qla2xxx: Micro optimization in queuecommand handler



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: default avatarChetan Loke <loke.chetan@gmail.com>
Reviewed-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Reviewed-by: default avatarGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: default avatarChad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 9e336520
Loading
Loading
Loading
Loading
+9 −10
Original line number Original line Diff line number Diff line
@@ -385,9 +385,10 @@ qla2x00_start_scsi(srb_t *sp)
		else
		else
			req->cnt = req->length -
			req->cnt = req->length -
			    (req->ring_index - cnt);
			    (req->ring_index - cnt);
	}
		/* If still no head room then bail out */
		if (req->cnt < (req_cnt + 2))
		if (req->cnt < (req_cnt + 2))
			goto queuing_error;
			goto queuing_error;
	}


	/* Build command packet */
	/* Build command packet */
	req->current_outstanding_cmd = handle;
	req->current_outstanding_cmd = handle;
@@ -1502,9 +1503,9 @@ qla24xx_start_scsi(srb_t *sp)
		else
		else
			req->cnt = req->length -
			req->cnt = req->length -
				(req->ring_index - cnt);
				(req->ring_index - cnt);
	}
		if (req->cnt < (req_cnt + 2))
		if (req->cnt < (req_cnt + 2))
			goto queuing_error;
			goto queuing_error;
	}


	/* Build command packet. */
	/* Build command packet. */
	req->current_outstanding_cmd = handle;
	req->current_outstanding_cmd = handle;
@@ -1717,10 +1718,9 @@ qla24xx_dif_start_scsi(srb_t *sp)
		else
		else
			req->cnt = req->length -
			req->cnt = req->length -
				(req->ring_index - cnt);
				(req->ring_index - cnt);
	}

		if (req->cnt < (req_cnt + 2))
		if (req->cnt < (req_cnt + 2))
			goto queuing_error;
			goto queuing_error;
	}


	status |= QDSS_GOT_Q_SPACE;
	status |= QDSS_GOT_Q_SPACE;


@@ -2343,10 +2343,9 @@ qla82xx_start_scsi(srb_t *sp)
			else
			else
				req->cnt = req->length -
				req->cnt = req->length -
					(req->ring_index - cnt);
					(req->ring_index - cnt);
		}

			if (req->cnt < (req_cnt + 2))
			if (req->cnt < (req_cnt + 2))
				goto queuing_error;
				goto queuing_error;
		}


		ctx = sp->u.scmd.ctx =
		ctx = sp->u.scmd.ctx =
		    mempool_alloc(ha->ctx_mempool, GFP_ATOMIC);
		    mempool_alloc(ha->ctx_mempool, GFP_ATOMIC);