Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi: ips: Call scsi_done() directly

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

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

authored by

Bart Van Assche and committed by
Martin K. Petersen
98cc0e69 acd3c42d

+13 -15
+13 -15
drivers/scsi/ips.c
··· 936 936 937 937 while ((scb = ips_removeq_scb_head(&ha->scb_activelist))) { 938 938 scb->scsi_cmd->result = DID_ERROR << 16; 939 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 939 + scsi_done(scb->scsi_cmd); 940 940 ips_freescb(ha, scb); 941 941 } 942 942 ··· 946 946 947 947 while ((scsi_cmd = ips_removeq_wait_head(&ha->scb_waitlist))) { 948 948 scsi_cmd->result = DID_ERROR; 949 - scsi_cmd->scsi_done(scsi_cmd); 949 + scsi_done(scsi_cmd); 950 950 } 951 951 952 952 ha->active = FALSE; ··· 965 965 966 966 while ((scb = ips_removeq_scb_head(&ha->scb_activelist))) { 967 967 scb->scsi_cmd->result = DID_ERROR << 16; 968 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 968 + scsi_done(scb->scsi_cmd); 969 969 ips_freescb(ha, scb); 970 970 } 971 971 ··· 975 975 976 976 while ((scsi_cmd = ips_removeq_wait_head(&ha->scb_waitlist))) { 977 977 scsi_cmd->result = DID_ERROR << 16; 978 - scsi_cmd->scsi_done(scsi_cmd); 978 + scsi_done(scsi_cmd); 979 979 } 980 980 981 981 ha->active = FALSE; ··· 994 994 995 995 while ((scb = ips_removeq_scb_head(&ha->scb_activelist))) { 996 996 scb->scsi_cmd->result = DID_RESET << 16; 997 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 997 + scsi_done(scb->scsi_cmd); 998 998 ips_freescb(ha, scb); 999 999 } 1000 1000 ··· 1064 1064 return (0); 1065 1065 } 1066 1066 1067 - SC->scsi_done = done; 1068 - 1069 1067 DEBUG_VAR(2, "(%s%d): ips_queue: cmd 0x%X (%d %d %d)", 1070 1068 ips_name, 1071 1069 ha->host_num, ··· 1097 1099 ha->ioctl_reset = 1; /* This reset request is from an IOCTL */ 1098 1100 __ips_eh_reset(SC); 1099 1101 SC->result = DID_OK << 16; 1100 - SC->scsi_done(SC); 1102 + scsi_done(SC); 1101 1103 return (0); 1102 1104 } 1103 1105 ··· 2577 2579 case IPS_FAILURE: 2578 2580 if (scb->scsi_cmd) { 2579 2581 scb->scsi_cmd->result = DID_ERROR << 16; 2580 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 2582 + scsi_done(scb->scsi_cmd); 2581 2583 } 2582 2584 2583 2585 ips_freescb(ha, scb); ··· 2585 2587 case IPS_SUCCESS_IMM: 2586 2588 if (scb->scsi_cmd) { 2587 2589 scb->scsi_cmd->result = DID_OK << 16; 2588 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 2590 + scsi_done(scb->scsi_cmd); 2589 2591 } 2590 2592 2591 2593 ips_freescb(ha, scb); ··· 2710 2712 case IPS_FAILURE: 2711 2713 if (scb->scsi_cmd) { 2712 2714 scb->scsi_cmd->result = DID_ERROR << 16; 2713 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 2715 + scsi_done(scb->scsi_cmd); 2714 2716 } 2715 2717 2716 2718 if (scb->bus) ··· 2721 2723 break; 2722 2724 case IPS_SUCCESS_IMM: 2723 2725 if (scb->scsi_cmd) 2724 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 2726 + scsi_done(scb->scsi_cmd); 2725 2727 2726 2728 if (scb->bus) 2727 2729 ha->dcdb_active[scb->bus - 1] &= ··· 3204 3206 case IPS_FAILURE: 3205 3207 if (scb->scsi_cmd) { 3206 3208 scb->scsi_cmd->result = DID_ERROR << 16; 3207 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 3209 + scsi_done(scb->scsi_cmd); 3208 3210 } 3209 3211 3210 3212 ips_freescb(ha, scb); ··· 3212 3214 case IPS_SUCCESS_IMM: 3213 3215 if (scb->scsi_cmd) { 3214 3216 scb->scsi_cmd->result = DID_ERROR << 16; 3215 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 3217 + scsi_done(scb->scsi_cmd); 3216 3218 } 3217 3219 3218 3220 ips_freescb(ha, scb); ··· 3229 3231 ha->dcdb_active[scb->bus - 1] &= ~(1 << scb->target_id); 3230 3232 } 3231 3233 3232 - scb->scsi_cmd->scsi_done(scb->scsi_cmd); 3234 + scsi_done(scb->scsi_cmd); 3233 3235 3234 3236 ips_freescb(ha, scb); 3235 3237 }