Commit 627da8ba authored by Roy Pledge's avatar Roy Pledge Committed by Li Yang

soc/fsl/qbman: Fix drain_mr_fqni()

The drain_mr_fqni() function may be called fron uninterruptable
context so convert the msleep() to an mdelay().  Also ensure that
the valid bit is updated while polling.
Signed-off-by: default avatarRoy Pledge <roy.pledge@nxp.com>
Signed-off-by: default avatarLi Yang <leoyang.li@nxp.com>
parent c5501aa9
...@@ -1164,6 +1164,7 @@ static int drain_mr_fqrni(struct qm_portal *p) ...@@ -1164,6 +1164,7 @@ static int drain_mr_fqrni(struct qm_portal *p)
{ {
const union qm_mr_entry *msg; const union qm_mr_entry *msg;
loop: loop:
qm_mr_pvb_update(p);
msg = qm_mr_current(p); msg = qm_mr_current(p);
if (!msg) { if (!msg) {
/* /*
...@@ -1180,7 +1181,8 @@ static int drain_mr_fqrni(struct qm_portal *p) ...@@ -1180,7 +1181,8 @@ static int drain_mr_fqrni(struct qm_portal *p)
* entries well before the ring has been fully consumed, so * entries well before the ring has been fully consumed, so
* we're being *really* paranoid here. * we're being *really* paranoid here.
*/ */
msleep(1); mdelay(1);
qm_mr_pvb_update(p);
msg = qm_mr_current(p); msg = qm_mr_current(p);
if (!msg) if (!msg)
return 0; return 0;
......
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