IB/hfi1: Remove compare callback
authorMitko Haralanov <mitko.haralanov@intel.com>
Tue, 8 Mar 2016 19:15:04 +0000 (11:15 -0800)
committerDoug Ledford <dledford@redhat.com>
Mon, 21 Mar 2016 19:55:23 +0000 (15:55 -0400)
Interval RB trees provide their own searching function,
which also takes care of determining the path through
the tree that should be taken.

This make the compare callback unnecessary.

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Dean Luick <dean.luick@intel.com>
Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com>
Signed-off-by: Jubin John <jubin.john@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/staging/rdma/hfi1/mmu_rb.c
drivers/staging/rdma/hfi1/mmu_rb.h
drivers/staging/rdma/hfi1/user_exp_rcv.c

index c30373df38749d32ea999417c1fbc15af9c90808..5d27fee577b985816edafed7036a1f4f9048291b 100644 (file)
@@ -98,7 +98,7 @@ int hfi1_mmu_rb_register(struct rb_root *root, struct mmu_rb_ops *ops)
        struct mmu_rb_handler *handlr;
        unsigned long flags;
 
-       if (!ops->compare || !ops->invalidate)
+       if (!ops->invalidate)
                return -EINVAL;
 
        handlr = kmalloc(sizeof(*handlr), GFP_KERNEL);
index abed3a69e4675095c8dcd3cddd1f464bf05ae4d4..9c2600981e88f8f00fed9c524ea60114a6564479 100644 (file)
@@ -57,8 +57,6 @@ struct mmu_rb_node {
 };
 
 struct mmu_rb_ops {
-       int (*compare)(struct mmu_rb_node *, unsigned long,
-                      unsigned long);
        int (*insert)(struct rb_root *, struct mmu_rb_node *);
        void (*remove)(struct rb_root *, struct mmu_rb_node *, bool);
        int (*invalidate)(struct rb_root *, struct mmu_rb_node *);
index 1d971c0fedd6c3f770d8aad6b2392f3c48401249..bf670cbf82da36d1ca60f8cb0cff0e60029bb813 100644 (file)
@@ -86,8 +86,6 @@ static void unlock_exp_tids(struct hfi1_ctxtdata *, struct exp_tid_set *,
 static u32 find_phys_blocks(struct page **, unsigned, struct tid_pageset *);
 static int set_rcvarray_entry(struct file *, unsigned long, u32,
                              struct tid_group *, struct page **, unsigned);
-static inline int mmu_addr_cmp(struct mmu_rb_node *, unsigned long,
-                              unsigned long);
 static int mmu_rb_insert(struct rb_root *, struct mmu_rb_node *);
 static void mmu_rb_remove(struct rb_root *, struct mmu_rb_node *, bool);
 static int mmu_rb_invalidate(struct rb_root *, struct mmu_rb_node *);
@@ -98,7 +96,6 @@ static int unprogram_rcvarray(struct file *, u32, struct tid_group **);
 static void clear_tid_node(struct hfi1_filedata *, u16, struct tid_rb_node *);
 
 static struct mmu_rb_ops tid_rb_ops = {
-       .compare = mmu_addr_cmp,
        .insert = mmu_rb_insert,
        .remove = mmu_rb_remove,
        .invalidate = mmu_rb_invalidate
@@ -1016,17 +1013,6 @@ static int mmu_rb_invalidate(struct rb_root *root, struct mmu_rb_node *mnode)
        return 0;
 }
 
-static int mmu_addr_cmp(struct mmu_rb_node *node, unsigned long addr,
-                       unsigned long len)
-{
-       if ((addr + len) <= node->addr)
-               return -1;
-       else if (addr >= node->addr && addr < (node->addr + node->len))
-               return 0;
-       else
-               return 1;
-}
-
 static int mmu_rb_insert(struct rb_root *root, struct mmu_rb_node *node)
 {
        struct hfi1_filedata *fdata =