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: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: Selvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
Rasmus Villemoes 2015-01-16 15:39:56 +01:00 committed by Roland Dreier
parent ba64fdca63
commit f3070e7efd

View File

@ -1586,10 +1586,10 @@ mbx_err:
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;
}