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

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
...@@ -257,6 +257,12 @@ static int rvu_setup_hw_resources(struct rvu *rvu) ...@@ -257,6 +257,12 @@ static int rvu_setup_hw_resources(struct rvu *rvu)
return 0; 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, static int rvu_process_mbox_msg(struct rvu *rvu, int devid,
struct mbox_msghdr *req) struct mbox_msghdr *req)
{ {
...@@ -264,13 +270,39 @@ static int rvu_process_mbox_msg(struct rvu *rvu, int devid, ...@@ -264,13 +270,39 @@ static int rvu_process_mbox_msg(struct rvu *rvu, int devid,
if (req->sig != OTX2_MBOX_REQ_SIG) if (req->sig != OTX2_MBOX_REQ_SIG)
goto bad_message; goto bad_message;
if (req->id == MBOX_MSG_READY) switch (req->id) {
return 0; #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: bad_message:
otx2_reply_invalid_msg(&rvu->mbox, devid, req->pcifunc, default:
req->id); otx2_reply_invalid_msg(&rvu->mbox, devid, req->pcifunc,
return -ENODEV; req->id);
return -ENODEV;
}
} }
static void rvu_mbox_handler(struct work_struct *work) static void rvu_mbox_handler(struct work_struct *work)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment