Commit 0061e3f5 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: myrb: Call scsi_done() directly

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

Link: https://lore.kernel.org/r/20211007202923.2174984-55-bvanassche@acm.orgSigned-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent ca495999
...@@ -1282,7 +1282,7 @@ static int myrb_pthru_queuecommand(struct Scsi_Host *shost, ...@@ -1282,7 +1282,7 @@ static int myrb_pthru_queuecommand(struct Scsi_Host *shost,
if (nsge > 1) { if (nsge > 1) {
dma_pool_free(cb->dcdb_pool, dcdb, dcdb_addr); dma_pool_free(cb->dcdb_pool, dcdb, dcdb_addr);
scmd->result = (DID_ERROR << 16); scmd->result = (DID_ERROR << 16);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
...@@ -1436,13 +1436,13 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost, ...@@ -1436,13 +1436,13 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
dev_dbg(&shost->shost_gendev, "ldev %u in state %x, skip\n", dev_dbg(&shost->shost_gendev, "ldev %u in state %x, skip\n",
sdev->id, ldev_info ? ldev_info->state : 0xff); sdev->id, ldev_info ? ldev_info->state : 0xff);
scmd->result = (DID_BAD_TARGET << 16); scmd->result = (DID_BAD_TARGET << 16);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
switch (scmd->cmnd[0]) { switch (scmd->cmnd[0]) {
case TEST_UNIT_READY: case TEST_UNIT_READY:
scmd->result = (DID_OK << 16); scmd->result = (DID_OK << 16);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
case INQUIRY: case INQUIRY:
if (scmd->cmnd[1] & 1) { if (scmd->cmnd[1] & 1) {
...@@ -1452,11 +1452,11 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost, ...@@ -1452,11 +1452,11 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
myrb_inquiry(cb, scmd); myrb_inquiry(cb, scmd);
scmd->result = (DID_OK << 16); scmd->result = (DID_OK << 16);
} }
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
case SYNCHRONIZE_CACHE: case SYNCHRONIZE_CACHE:
scmd->result = (DID_OK << 16); scmd->result = (DID_OK << 16);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
case MODE_SENSE: case MODE_SENSE:
if ((scmd->cmnd[2] & 0x3F) != 0x3F && if ((scmd->cmnd[2] & 0x3F) != 0x3F &&
...@@ -1467,25 +1467,25 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost, ...@@ -1467,25 +1467,25 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
myrb_mode_sense(cb, scmd, ldev_info); myrb_mode_sense(cb, scmd, ldev_info);
scmd->result = (DID_OK << 16); scmd->result = (DID_OK << 16);
} }
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
case READ_CAPACITY: case READ_CAPACITY:
if ((scmd->cmnd[1] & 1) || if ((scmd->cmnd[1] & 1) ||
(scmd->cmnd[8] & 1)) { (scmd->cmnd[8] & 1)) {
/* Illegal request, invalid field in CDB */ /* Illegal request, invalid field in CDB */
scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0); scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
lba = get_unaligned_be32(&scmd->cmnd[2]); lba = get_unaligned_be32(&scmd->cmnd[2]);
if (lba) { if (lba) {
/* Illegal request, invalid field in CDB */ /* Illegal request, invalid field in CDB */
scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0); scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
myrb_read_capacity(cb, scmd, ldev_info); myrb_read_capacity(cb, scmd, ldev_info);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
case REQUEST_SENSE: case REQUEST_SENSE:
myrb_request_sense(cb, scmd); myrb_request_sense(cb, scmd);
...@@ -1499,13 +1499,13 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost, ...@@ -1499,13 +1499,13 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
/* Assume good status */ /* Assume good status */
scmd->result = (DID_OK << 16); scmd->result = (DID_OK << 16);
} }
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
case READ_6: case READ_6:
if (ldev_info->state == MYRB_DEVICE_WO) { if (ldev_info->state == MYRB_DEVICE_WO) {
/* Data protect, attempt to read invalid data */ /* Data protect, attempt to read invalid data */
scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06); scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
fallthrough; fallthrough;
...@@ -1519,7 +1519,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost, ...@@ -1519,7 +1519,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
if (ldev_info->state == MYRB_DEVICE_WO) { if (ldev_info->state == MYRB_DEVICE_WO) {
/* Data protect, attempt to read invalid data */ /* Data protect, attempt to read invalid data */
scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06); scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
fallthrough; fallthrough;
...@@ -1533,7 +1533,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost, ...@@ -1533,7 +1533,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
if (ldev_info->state == MYRB_DEVICE_WO) { if (ldev_info->state == MYRB_DEVICE_WO) {
/* Data protect, attempt to read invalid data */ /* Data protect, attempt to read invalid data */
scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06); scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
fallthrough; fallthrough;
...@@ -1546,7 +1546,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost, ...@@ -1546,7 +1546,7 @@ static int myrb_ldev_queuecommand(struct Scsi_Host *shost,
default: default:
/* Illegal request, invalid opcode */ /* Illegal request, invalid opcode */
scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x20, 0); scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x20, 0);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
...@@ -1610,7 +1610,7 @@ static int myrb_queuecommand(struct Scsi_Host *shost, ...@@ -1610,7 +1610,7 @@ static int myrb_queuecommand(struct Scsi_Host *shost,
if (sdev->channel > myrb_logical_channel(shost)) { if (sdev->channel > myrb_logical_channel(shost)) {
scmd->result = (DID_BAD_TARGET << 16); scmd->result = (DID_BAD_TARGET << 16);
scmd->scsi_done(scmd); scsi_done(scmd);
return 0; return 0;
} }
if (sdev->channel == myrb_logical_channel(shost)) if (sdev->channel == myrb_logical_channel(shost))
...@@ -2361,7 +2361,7 @@ static void myrb_handle_scsi(struct myrb_hba *cb, struct myrb_cmdblk *cmd_blk, ...@@ -2361,7 +2361,7 @@ static void myrb_handle_scsi(struct myrb_hba *cb, struct myrb_cmdblk *cmd_blk,
scmd->result = (DID_ERROR << 16); scmd->result = (DID_ERROR << 16);
break; break;
} }
scmd->scsi_done(scmd); scsi_done(scmd);
} }
static void myrb_handle_cmdblk(struct myrb_hba *cb, struct myrb_cmdblk *cmd_blk) static void myrb_handle_cmdblk(struct myrb_hba *cb, struct myrb_cmdblk *cmd_blk)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment