scsi: mesh: Call scsi_done() directly
authorBart Van Assche <bvanassche@acm.org>
Thu, 7 Oct 2021 20:28:45 +0000 (13:28 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sun, 17 Oct 2021 01:29:15 +0000 (21:29 -0400)
Conditional statements are faster than indirect calls. Hence call
scsi_done() directly.

Link: https://lore.kernel.org/r/20211007202923.2174984-51-bvanassche@acm.org
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mesh.c

index 78b72bc..73a3e85 100644 (file)
@@ -342,15 +342,6 @@ static inline void mesh_flush_io(volatile struct mesh_regs __iomem *mr)
 }
 
 
-/*
- * Complete a SCSI command
- */
-static void mesh_completed(struct mesh_state *ms, struct scsi_cmnd *cmd)
-{
-       (*cmd->scsi_done)(cmd);
-}
-
-
 /* Called with  meshinterrupt disabled, initialize the chipset
  * and eventually do the initial bus reset. The lock must not be
  * held since we can schedule.
@@ -613,7 +604,7 @@ static void mesh_done(struct mesh_state *ms, int start_next)
 #endif
                }
                cmd->SCp.this_residual -= ms->data_ptr;
-               mesh_completed(ms, cmd);
+               scsi_done(cmd);
        }
        if (start_next) {
                out_8(&ms->mesh->sequence, SEQ_ENBRESEL);
@@ -996,7 +987,7 @@ static void handle_reset(struct mesh_state *ms)
                if ((cmd = tp->current_req) != NULL) {
                        set_host_byte(cmd, DID_RESET);
                        tp->current_req = NULL;
-                       mesh_completed(ms, cmd);
+                       scsi_done(cmd);
                }
                ms->tgts[tgt].sdtr_state = do_sdtr;
                ms->tgts[tgt].sync_params = ASYNC_PARAMS;
@@ -1005,7 +996,7 @@ static void handle_reset(struct mesh_state *ms)
        while ((cmd = ms->request_q) != NULL) {
                ms->request_q = (struct scsi_cmnd *) cmd->host_scribble;
                set_host_byte(cmd, DID_RESET);
-               mesh_completed(ms, cmd);
+               scsi_done(cmd);
        }
        ms->phase = idle;
        ms->msgphase = msg_none;
@@ -1634,7 +1625,6 @@ static int mesh_queue_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *
 {
        struct mesh_state *ms;
 
-       cmd->scsi_done = done;
        cmd->host_scribble = NULL;
 
        ms = (struct mesh_state *) cmd->device->host->hostdata;