> On 5/12/2023 3:07 AM, Chaoyong He wrote: > > In the tx descriptor free logic of nfd3, the former logic might force > > cast a negative number into a very big unsigned number, and which will > > cause potential problem in the xmit loop. > > > > The xmit loop will continue in the place where it should break, and > > will overwrite the Tx descriptor which is not free to use by the PMD. > > > > Fixes: 74a640dac864 ("net/nfp: avoid modulo operations for handling > > ring wrapping") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Chaoyong He <chaoyong...@corigine.com> > > Reviewed-by: Niklas Söderlund <niklas.soderl...@corigine.com> > > --- > > drivers/net/nfp/nfp_rxtx.h | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h > > index 5e651518ed..e642bc970a 100644 > > --- a/drivers/net/nfp/nfp_rxtx.h > > +++ b/drivers/net/nfp/nfp_rxtx.h > > @@ -401,10 +401,14 @@ nfp_net_mbuf_alloc_failed(struct nfp_net_rxq > > *rxq) static inline uint32_t nfp_net_nfd3_free_tx_desc(struct > > nfp_net_txq *txq) { > > + uint32_t free_desc; > > + > > if (txq->wr_p >= txq->rd_p) > > - return txq->tx_count - (txq->wr_p - txq->rd_p) - 8; > > + free_desc = txq->tx_count - (txq->wr_p - txq->rd_p); > > else > > - return txq->rd_p - txq->wr_p - 8; > > + free_desc = txq->rd_p - txq->wr_p; > > + > > + return (free_desc > 8) ? (free_desc - 8) : 0; > > } > > > > /* > > > Can you please rebase this patch on top of latest next-net? > > 'nfp_net_nfd3_free_tx_desc()' moved to 'drivers/net/nfp/nfd3/nfp_nfd3.h' > in commit '2344d6272fe9 ("net/nfp: move NFD3 logic to own source file")'
Okay, I'll send out a v2 patch soon.