Commit 46c97948 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen
Browse files

scsi: usb: Call scsi_done() directly

Conditional statements are faster than indirect calls. Hence call
scsi_done() directly.

Link: https://lore.kernel.org/r/20211007204618.2196847-10-bvanassche@acm.org


Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b9d82b7d
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -393,7 +393,6 @@ static int queuecommand_lck(struct scsi_cmnd *srb,
	}

	/* enqueue the command and wake up the control thread */
	srb->scsi_done = done;
	us->srb = srb;
	complete(&us->cmnd_ready);

+4 −6
Original line number Diff line number Diff line
@@ -256,7 +256,7 @@ static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller)
		return -EBUSY;
	devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL;
	uas_free_unsubmitted_urbs(cmnd);
	cmnd->scsi_done(cmnd);
	scsi_done(cmnd);
	return 0;
}

@@ -653,7 +653,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,
		memcpy(cmnd->sense_buffer, usb_stor_sense_invalidCDB,
		       sizeof(usb_stor_sense_invalidCDB));
		cmnd->result = SAM_STAT_CHECK_CONDITION;
		cmnd->scsi_done(cmnd);
		scsi_done(cmnd);
		return 0;
	}

@@ -661,7 +661,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,

	if (devinfo->resetting) {
		set_host_byte(cmnd, DID_ERROR);
		cmnd->scsi_done(cmnd);
		scsi_done(cmnd);
		goto zombie;
	}

@@ -675,8 +675,6 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,
		return SCSI_MLQUEUE_DEVICE_BUSY;
	}

	cmnd->scsi_done = done;

	memset(cmdinfo, 0, sizeof(*cmdinfo));
	cmdinfo->uas_tag = idx + 1; /* uas-tag == usb-stream-id, so 1 based */
	cmdinfo->state = SUBMIT_STATUS_URB | ALLOC_CMD_URB | SUBMIT_CMD_URB;
@@ -706,7 +704,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,
	 */
	if (err == -ENODEV) {
		set_host_byte(cmnd, DID_ERROR);
		cmnd->scsi_done(cmnd);
		scsi_done(cmnd);
		goto zombie;
	}
	if (err) {
+2 −2
Original line number Diff line number Diff line
@@ -388,7 +388,7 @@ static int usb_stor_control_thread(void * __us)
		if (srb->result == DID_ABORT << 16) {
SkipForAbort:
			usb_stor_dbg(us, "scsi command aborted\n");
			srb = NULL;	/* Don't call srb->scsi_done() */
			srb = NULL;	/* Don't call scsi_done() */
		}

		/*
@@ -417,7 +417,7 @@ static int usb_stor_control_thread(void * __us)
		if (srb) {
			usb_stor_dbg(us, "scsi cmd done, result=0x%x\n",
					srb->result);
			srb->scsi_done(srb);
			scsi_done(srb);
		}
	} /* for (;;) */