Commit 5fc24e60 authored by Jason Gunthorpe's avatar Jason Gunthorpe
Browse files

RDMA/rxe: Fix compile warnings on 32-bit

Move the conditional code into a function, with two varients so it is
harder to make these kinds of mistakes.

 drivers/infiniband/sw/rxe/rxe_resp.c: In function 'atomic_write_reply':
 drivers/infiniband/sw/rxe/rxe_resp.c:794:13: error: unused variable 'payload' [-Werror=unused-variable]
   794 |         int payload = payload_size(pkt);
       |             ^~~~~~~
 drivers/infiniband/sw/rxe/rxe_resp.c:793:24: error: unused variable 'mr' [-Werror=unused-variable]
   793 |         struct rxe_mr *mr = qp->resp.mr;
       |                        ^~
 drivers/infiniband/sw/rxe/rxe_resp.c:791:19: error: unused variable 'dst' [-Werror=unused-variable]
   791 |         u64 src, *dst;
       |                   ^~~
 drivers/infiniband/sw/rxe/rxe_resp.c:791:13: error: unused variable 'src' [-Werror=unused-variable]
   791 |         u64 src, *dst;

Fixes: 034e285f ("RDMA/rxe: Make responder support atomic write on RC service")
Link: https://lore.kernel.org/linux-rdma/Y5s+EVE7eLWQqOwv@nvidia.com/


Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent dbc94a0f
Loading
Loading
Loading
Loading
+40 −32
Original line number Diff line number Diff line
@@ -785,21 +785,14 @@ static enum resp_states atomic_reply(struct rxe_qp *qp,
	return ret;
}

static enum resp_states atomic_write_reply(struct rxe_qp *qp,
#ifdef CONFIG_64BIT
static enum resp_states do_atomic_write(struct rxe_qp *qp,
					struct rxe_pkt_info *pkt)
{
	u64 src, *dst;
	struct resp_res *res = qp->resp.res;
	struct rxe_mr *mr = qp->resp.mr;
	int payload = payload_size(pkt);
	u64 src, *dst;

	if (!res) {
		res = rxe_prepare_res(qp, pkt, RXE_ATOMIC_WRITE_MASK);
		qp->resp.res = res;
	}

	if (!res->replay) {
#ifdef CONFIG_64BIT
	if (mr->state != RXE_MR_STATE_VALID)
		return RESPST_ERR_RKEY_VIOLATION;

@@ -824,14 +817,29 @@ static enum resp_states atomic_write_reply(struct rxe_qp *qp,

	qp->resp.opcode = pkt->opcode;
	qp->resp.status = IB_WC_SUCCESS;

	return RESPST_ACKNOWLEDGE;
}
#else
static enum resp_states do_atomic_write(struct rxe_qp *qp,
					struct rxe_pkt_info *pkt)
{
	return RESPST_ERR_UNSUPPORTED_OPCODE;
}
#endif /* CONFIG_64BIT */

static enum resp_states atomic_write_reply(struct rxe_qp *qp,
					   struct rxe_pkt_info *pkt)
{
	struct resp_res *res = qp->resp.res;

	if (!res) {
		res = rxe_prepare_res(qp, pkt, RXE_ATOMIC_WRITE_MASK);
		qp->resp.res = res;
	}

	if (res->replay)
		return RESPST_ACKNOWLEDGE;
	return do_atomic_write(qp, pkt);
}

static struct sk_buff *prepare_ack_packet(struct rxe_qp *qp,