diff --git a/drivers/infiniband/hw/i40iw/i40iw_hw.c b/drivers/infiniband/hw/i40iw/i40iw_hw.c index 615e115247b0dc8284172f7a7988c152c1e9cb30..3ee0cad96bc688457475a1f727969e7f05336e62 100644 --- a/drivers/infiniband/hw/i40iw/i40iw_hw.c +++ b/drivers/infiniband/hw/i40iw/i40iw_hw.c @@ -107,7 +107,8 @@ u32 i40iw_initialize_hw_resources(struct i40iw_device *iwdev) spin_lock_init(&iwdev->resource_lock); spin_lock_init(&iwdev->qptable_lock); - mrdrvbits = 24 - get_count_order(iwdev->max_mr); + /* stag index mask has a minimum of 14 bits */ + mrdrvbits = 24 - max(get_count_order(iwdev->max_mr), 14); iwdev->mr_stagmask = ~(((1 << mrdrvbits) - 1) << (32 - mrdrvbits)); return 0; }