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 <bly454@gmail.com>
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 <bly454@gmail.com>
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