提交 f3070e7e 编写于 作者: R Rasmus Villemoes 提交者: Roland Dreier

RDMA/ocrdma: Use unsigned for bit index

In the expressions idx/32 and idx%32, both idx and 32 have signed
type, and unfortunately the C standard prescribes rounding to 0, so
unless gcc can prove that idx is non-negative, these cannot be
implemented as simple shift respectively mask operations. Help gcc by
changing the type of idx to unsigned - this cuts another few
instructions from the generated code.
Signed-off-by: NRasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: NSelvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: NRoland Dreier <roland@purestorage.com>
上级 ba64fdca
......@@ -1586,10 +1586,10 @@ int ocrdma_query_qp(struct ib_qp *ibqp,
return status;
}
static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, int idx)
static void ocrdma_srq_toggle_bit(struct ocrdma_srq *srq, unsigned int idx)
{
int i = idx / 32;
unsigned int mask = (1 << (idx % 32));
unsigned int i = idx / 32;
u32 mask = (1U << (idx % 32));
srq->idx_bit_fields[i] ^= mask;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册