Browse Source

RDMA/i40iw: Correct STag mask to min of 14 bits

STag index mask is calculated incorrectly, missing
the 14 bits minimum requirement. Add max macro to use
either # of MRs or 14 bits in the mask size calculation.

Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
Signed-off-by: Faisal Latif <faisal.latif@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Chien Tin Tung 9 years ago
parent
commit
8e9f04a7c7
1 changed files with 2 additions and 1 deletions
  1. 2 1
      drivers/infiniband/hw/i40iw/i40iw_hw.c

+ 2 - 1
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;
 }