Please review/accept the following fixes for drivers/net/memif. This is in regards to https://bugs.dpdk.org/show_bug.cgi?id=1609. RX and TX fixes to correct linking/handling of multiple memif buffers for jumbo frames (>2KB) in mixed traffic scenarios. From fa1f5ab578bb06aa22b356b8ce5cfbdb52dd4a48 Mon Sep 17 00:00:00 2001 From: Mike Bly Date: Thu, 2 Jan 2025 13:00:57 -0800 Subject: [PATCH 1/2] Moving where dst_off is set in memif_rx function Fixes: aa17df86089 ("net/memif: add a Rx fast path") --- drivers/net/memif/rte_eth_memif.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c index 1eb41bb471..29fd890ed1 100644 --- a/drivers/net/memif/rte_eth_memif.c +++ b/drivers/net/memif/rte_eth_memif.c @@ -414,13 +414,12 @@ eth_memif_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) goto no_free_bufs; mbuf = mbuf_head; mbuf->port = mq->in_port; - + dst_off = 0; next_slot2: s0 = cur_slot & mask; d0 = &ring->desc[s0]; src_len = d0->length; - dst_off = 0; src_off = 0; do { -- 2.43.5 From eb1770036ce829e193953af9994d8ae16e75272b Mon Sep 17 00:00:00 2001 From: Mike Bly Date: Thu, 2 Jan 2025 13:20:23 -0800 Subject: [PATCH 2/2] Added missing initialization of memif flags field per memif buffer Fixes: 09c7e63a71f ("net/memif: introduce memory interface PMD") --- drivers/net/memif/rte_eth_memif.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c index 29fd890ed1..57216d7096 100644 --- a/drivers/net/memif/rte_eth_memif.c +++ b/drivers/net/memif/rte_eth_memif.c @@ -709,6 +709,7 @@ eth_memif_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) next_in_chain1: d0 = &ring->desc[slot & mask]; cp_len = rte_pktmbuf_data_len(mbuf); + d0->flags = 0; rte_memcpy((uint8_t *)memif_get_buffer(proc_private, d0), rte_pktmbuf_mtod(mbuf, void *), cp_len); @@ -744,6 +745,7 @@ eth_memif_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) dst_off = 0; dst_len = (type == MEMIF_RING_C2S) ? pmd->run.pkt_buffer_size : d0->length; + d0->flags = 0; next_in_chain2: src_off = 0; -- 2.43.5 -Mike