IB/qib: Eliminate divide/mod in converting idx to egr buf pointer
[linux.git] / drivers / infiniband / hw / qib / qib_init.c
index 021636dbeae69ea62d091af071f090b5263c4c2b..21ffa7c0915f041db05128f7b7896a82501cdc69 100644 (file)
@@ -183,6 +183,9 @@ struct qib_ctxtdata *qib_create_ctxtdata(struct qib_pportdata *ppd, u32 ctxt)
                rcd->rcvegrbuf_chunks = (rcd->rcvegrcnt +
                        rcd->rcvegrbufs_perchunk - 1) /
                        rcd->rcvegrbufs_perchunk;
+               BUG_ON(!is_power_of_2(rcd->rcvegrbufs_perchunk));
+               rcd->rcvegrbufs_perchunk_shift =
+                       ilog2(rcd->rcvegrbufs_perchunk);
        }
        return rcd;
 }