summaryrefslogtreecommitdiff
path: root/drivers/net/mlx4/alloc.c
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2007-05-29 23:07:09 (GMT)
committerRoland Dreier <rolandd@cisco.com>2007-05-29 23:07:09 (GMT)
commita2cb4a98f243d01f2c8d5799c764bb96ffa66c44 (patch)
tree8bf4e73ab877936da113969c941a51e6aef8d319 /drivers/net/mlx4/alloc.c
parentd998ccce020e2cfcf11c6b57503532930ede2894 (diff)
downloadlinux-fsl-qoriq-a2cb4a98f243d01f2c8d5799c764bb96ffa66c44.tar.xz
IB/mlx4: Fix last allocated object tracking in bitmap allocator
Set last allocated object to the object after the one just allocated before ORing in the extra top bits. Also handle the case where this wraps around. Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/net/mlx4/alloc.c')
-rw-r--r--drivers/net/mlx4/alloc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/mlx4/alloc.c b/drivers/net/mlx4/alloc.c
index dfbd580..f8d63d3 100644
--- a/drivers/net/mlx4/alloc.c
+++ b/drivers/net/mlx4/alloc.c
@@ -51,8 +51,8 @@ u32 mlx4_bitmap_alloc(struct mlx4_bitmap *bitmap)
if (obj < bitmap->max) {
set_bit(obj, bitmap->table);
+ bitmap->last = (obj + 1) & (bitmap->max - 1);
obj |= bitmap->top;
- bitmap->last = obj + 1;
} else
obj = -1;