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")'