Message ID | 20191017124403.26734-8-nipun.gupta@nxp.com |
---|---|
State | Superseded |
Headers | show |
Series | DPAA and FSLMC driver fixes and cleanup | expand |
17/10/2019 14:44, Nipun Gupta: > From: Radu Bulie <radu-andrei.bulie@nxp.com> > + rte_panic("bman release retry exceeded, low fbpr?\n"); You are not supposed to call rte_panic in a library. Please replace with a smoother abort.
Hi Thomas, > -----Original Message----- > From: Thomas Monjalon <thomas@monjalon.net> > Sent: Thursday, October 24, 2019 4:39 AM > To: Nipun Gupta <nipun.gupta@nxp.com>; Radu-andrei Bulie <radu- > andrei.bulie@nxp.com> > Cc: stable@dpdk.org; dev@dpdk.org; ferruh.yigit@intel.com; Hemant > Agrawal <hemant.agrawal@nxp.com>; Sachin Saxena > <sachin.saxena@nxp.com> > Subject: Re: [dpdk-stable] [PATCH 7/9 v2] mempool/dpaa2: panic on endless > loop in mbuf release > > 17/10/2019 14:44, Nipun Gupta: > > From: Radu Bulie <radu-andrei.bulie@nxp.com> > > + rte_panic("bman release retry exceeded, low > fbpr?\n"); > > You are not supposed to call rte_panic in a library. > Please replace with a smoother abort. Agree. Will add a log and return. > > > >
diff --git a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c index f26c30b00..7e815a1ce 100644 --- a/drivers/mempool/dpaa2/dpaa2_hw_mempool.c +++ b/drivers/mempool/dpaa2/dpaa2_hw_mempool.c @@ -192,7 +192,7 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused, struct qbman_release_desc releasedesc; struct qbman_swp *swp; int ret; - int i, n; + int i, n, retry_count; uint64_t bufs[DPAA2_MBUF_MAX_ACQ_REL]; if (unlikely(!DPAA2_PER_LCORE_DPIO)) { @@ -225,9 +225,13 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused, } /* feed them to bman */ - do { - ret = qbman_swp_release(swp, &releasedesc, bufs, n); - } while (ret == -EBUSY); + retry_count = 0; + while ((ret = qbman_swp_release(swp, &releasedesc, bufs, n)) == + -EBUSY) { + retry_count++; + if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) + rte_panic("bman release retry exceeded, low fbpr?\n"); + } aligned: /* if there are more buffers to free */ @@ -243,10 +247,13 @@ rte_dpaa2_mbuf_release(struct rte_mempool *pool __rte_unused, #endif } - do { - ret = qbman_swp_release(swp, &releasedesc, bufs, - DPAA2_MBUF_MAX_ACQ_REL); - } while (ret == -EBUSY); + retry_count = 0; + while ((ret = qbman_swp_release(swp, &releasedesc, bufs, + DPAA2_MBUF_MAX_ACQ_REL)) == -EBUSY) { + retry_count++; + if (retry_count > DPAA2_MAX_TX_RETRY_COUNT) + rte_panic("bman release retry exceeded, low fbpr?\n"); + } n += DPAA2_MBUF_MAX_ACQ_REL; } }