From: Joe Carnuccio <joe.carnuc...@qlogic.com>

Since the entry call array is sorted in order of entry type opcode,
the search can be terminated as soon as the search key is exceeded.

Signed-off-by: Joe Carnuccio <joe.carnuc...@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kash...@qlogic.com>
---
 drivers/scsi/qla2xxx/qla_tmpl.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_tmpl.c b/drivers/scsi/qla2xxx/qla_tmpl.c
index 252de5d..29271cc 100644
--- a/drivers/scsi/qla2xxx/qla_tmpl.c
+++ b/drivers/scsi/qla2xxx/qla_tmpl.c
@@ -726,7 +726,7 @@ qla27xx_fwdt_entry_other(struct scsi_qla_host *vha,
 }
 
 struct qla27xx_fwdt_entry_call {
-       int type;
+       uint type;
        int (*call)(
            struct scsi_qla_host *,
            struct qla27xx_fwdt_entry *,
@@ -759,15 +759,17 @@ static struct qla27xx_fwdt_entry_call 
ql27xx_fwdt_entry_call_list[] = {
        { -1                            , qla27xx_fwdt_entry_other }
 };
 
-static inline int (*qla27xx_find_entry(int type))
+static inline int (*qla27xx_find_entry(uint type))
        (struct scsi_qla_host *, struct qla27xx_fwdt_entry *, void *, ulong *)
 {
        struct qla27xx_fwdt_entry_call *list = ql27xx_fwdt_entry_call_list;
 
-       while (list->type != -1 && list->type != type)
+       while (list->type < type)
                list++;
 
-       return list->call;
+       if (list->type == type)
+               return list->call;
+       return qla27xx_fwdt_entry_other;
 }
 
 static inline void *
-- 
1.7.7

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to