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: Aleksey Makarov <amakarov@marvell.com> Signed-off-by: Sunil Goutham <sgoutham@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
7304ac4567
commit
1f15462539
@@ -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,13 +270,39 @@ 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:
|
||||
otx2_reply_invalid_msg(&rvu->mbox, devid, req->pcifunc,
|
||||
req->id);
|
||||
return -ENODEV;
|
||||
default:
|
||||
otx2_reply_invalid_msg(&rvu->mbox, devid, req->pcifunc,
|
||||
req->id);
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
||||
static void rvu_mbox_handler(struct work_struct *work)
|
||||
|
Reference in New Issue
Block a user