[PATCH] net/nfp: fix length comparison for max DMA length

Chaoyong He chaoyong.he at corigine.com
Fri Feb 3 03:23:28 CET 2023


From: Richard Donkin <richard.donkin at corigine.com>

The DMA transfer length is allowed to be as large as
NFDK_TX_MAX_DATA_PER_HEAD. The existing check would not allow a simple-
type descriptor to be created for a packet of size
NFDK_TX_MAX_DATA_PER_HEAD, but it would also not enable gather-type
descriptors to be created correctly later.

Change the limit of simple-type descriptors to include packets of size
NFDK_TX_MAX_DATA_PER_HEAD.

In practice this fixes traffic with packets of size 4096. Previously
such packets would not be transmitted correctly.

Fixes: c73dced48c8c ("net/nfp: add NFDk Tx")
Cc: stable at dpdk.org

Signed-off-by: Richard Donkin <richard.donkin at corigine.com>
Reviewed-by: Chaoyong He <chaoyong.he at corigine.com>
---
 drivers/net/nfp/nfp_rxtx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index 01cffdfde0..fa4cc94a43 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -1214,7 +1214,7 @@ nfp_net_nfdk_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk
 		if ((hw->cap & NFP_NET_CFG_CTRL_LSO_ANY) &&
 				(pkt->ol_flags & RTE_MBUF_F_TX_TCP_SEG)) {
 			type = NFDK_DESC_TX_TYPE_TSO;
-		} else if (!pkt->next && dma_len < NFDK_TX_MAX_DATA_PER_HEAD) {
+		} else if (!pkt->next && dma_len <= NFDK_TX_MAX_DATA_PER_HEAD) {
 			type = NFDK_DESC_TX_TYPE_SIMPLE;
 		} else {
 			type = NFDK_DESC_TX_TYPE_GATHER;
-- 
2.29.3



More information about the stable mailing list