Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3070e7e authored by Rasmus Villemoes's avatar Rasmus Villemoes Committed by Roland Dreier
Browse files

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: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: default avatarSelvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent ba64fdca
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;
}