Commit 1f154625 authored by Aleksey Makarov's avatar Aleksey Makarov Committed by David S. Miller
Browse files

octeontx2-af: Convert mbox msg id check to a macro



With 10's of mailbox messages expected to be handled in future,
checking for message id could become a lengthy switch case. Hence
added a macro to auto generate the switch case for each msg id.

Signed-off-by: default avatarAleksey Makarov <amakarov@marvell.com>
Signed-off-by: default avatarSunil Goutham <sgoutham@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7304ac45
Loading
Loading
Loading
Loading
+38 −6
Original line number Diff line number Diff line
@@ -257,6 +257,12 @@ cpt:
	return 0;
}

static int rvu_mbox_handler_READY(struct rvu *rvu, struct msg_req *req,
				  struct ready_msg_rsp *rsp)
{
	return 0;
}

static int rvu_process_mbox_msg(struct rvu *rvu, int devid,
				struct mbox_msghdr *req)
{
@@ -264,14 +270,40 @@ static int rvu_process_mbox_msg(struct rvu *rvu, int devid,
	if (req->sig != OTX2_MBOX_REQ_SIG)
		goto bad_message;

	if (req->id == MBOX_MSG_READY)
		return 0;

	switch (req->id) {
#define M(_name, _id, _req_type, _rsp_type)				\
	case _id: {							\
		struct _rsp_type *rsp;					\
		int err;						\
									\
		rsp = (struct _rsp_type *)otx2_mbox_alloc_msg(		\
			&rvu->mbox, devid,				\
			sizeof(struct _rsp_type));			\
		if (rsp) {						\
			rsp->hdr.id = _id;				\
			rsp->hdr.sig = OTX2_MBOX_RSP_SIG;		\
			rsp->hdr.pcifunc = req->pcifunc;		\
			rsp->hdr.rc = 0;				\
		}							\
									\
		err = rvu_mbox_handler_ ## _name(rvu,			\
						 (struct _req_type *)req, \
						 rsp);			\
		if (rsp && err)						\
			rsp->hdr.rc = err;				\
									\
		return rsp ? err : -ENOMEM;				\
	}
MBOX_MESSAGES
#undef M
		break;
bad_message:
	default:
		otx2_reply_invalid_msg(&rvu->mbox, devid, req->pcifunc,
				       req->id);
		return -ENODEV;
	}
}

static void rvu_mbox_handler(struct work_struct *work)
{