v8:<br />  - Add checked the size of ZXDH_DL_NET_HDR_SIZE and RTE_PKTMBUF_HEADROOM in<br />    zxdh_xmit_pkts_simple() before submitting. Add static_assert to reject builds with insufficient<br />    default headroom at compile time.<br /> <br />v7:<br />  - Add a new xmit prepare func for xmit_pkts_simple, which will checked the size of<br />    ZXDH_DL_NET_HDR_SIZE and RTE_PKTMBUF_HEADROOM.<br /> <br />v6:<br />  - Remove unnecessary error checking code in submit_to_backend_simple() and<br />    pkt_padding(). Since as the max dl_net_hdr_len is always less than<br />    RTE_PKTMBUF_HEADROOM, rte_pktmbuf_prepend() cannot fail in the<br />    simple path (single-segment mbufs).<br />v5:<br />  - Reorganize patch series, placing interrupt fix as the first patch<br />    and fix condition check to properly enable interrupts.<br />  - Fix zxdh_recv_single_pkts() not compacting rcv_pkts[] on failure,<br />    which could cause use-after-free and mbuf leak.<br />  - Fix tx_bunch() and tx1() missing store barrier before setting AVAIL flag,<br />    preventing data race on weakly-ordered architectures.<br />  - Fix submit_to_backend_simple() writing descriptors for packets that<br />    failed pkt_padding(), causing mbuf leak.<br />v4:<br />  - fix some AI review issues.<br />  - fix queue enable intr bug.<br />v3:<br />  - remove unnecessary NULL check in zxdh_init_queue.<br />  - Split Ring: Bit[31] is unused and reserved, zxdh_queue_notify(): removing the<br />    zxdh_pci_with_feature(hw, ZXDH_F_RING_PACKED) check;<br />  - remove unnecessary double-free in in zxdh_recv_single_pkts();<br />  - used rte_pktmbuf_mtod();<br />  - remove rxq_get_vq(q) macro, use q->vq and apply it consistently;<br />  - Refactoring scatter and mtu check logic in zxdh_dev_mtu_set();<br />  - set txdp->id = avail_idx + i in tx_bunch/tx1.<br />  - add comment documenting zxdh_xmit_enqueue_append() now sets dxp->cookie = NULL for<br />    the head slot and stores cookies per descriptor via dep[idx].cookie.<br />  - add one-line comment noting tx_bunch() is the simple path handles single-segment.<br />  - remove unnecessary Extra initialization and the uint32_t cast.<br />v2:<br />  - zxdh_rxtx.c, pkt_padding(): modifyed the return value of pkt_padding();<br />  - zxdh_rxtx.c, zxdh_recv_single_pkts(): modifyed When zxdh_init_mbuf() fails<br />    the loop does "continue" and free mbufs;<br />  - zxdh_rxtx.c, refill_desc_unwrap(): Add rte_io_wmb() before writing flags<br />    in the refill_que_descs();<br />  - zxdh_queue.h, zxdh_queue_enable_intr(): Remove unnecessary function of zxdh_queue_enable_intr;<br />  - zxdh_ethdev.c, zxdh_init_queue(): changed the hdr_mz NULL check logic;<br />  - zxdh_rxtx.c, zxdh_xmit_pkts_simple()、zxdh_recv_single_pkts(): add stats.bytes count;<br />  - zxdh_rxtx.c, zxdh_init_mbuf():remove  rte_pktmbuf_dump(stdout, rxm, 40);<br />  - zxdh_ethdev.c, zxdh_dev_free_mbufs(): using rte_pktmbuf_free() to free mbufs;<br />  - Splitting into separate patches, structure reorganization and sw_ring removal、<br />    RX recv optimize、Tx xmit optimize、Tx;<br />v1:<br />  This patch optimizes the ZXDH PMD's receive and transmit path for better<br />  performance through several improvements:<br />- Add simple TX/RX burst functions (zxdh_xmit_pkts_simple and<br />  zxdh_recv_single_pkts) for single-segment packet scenarios.<br />- Remove RX software ring (sw_ring) to reduce memory allocation and<br />  copy.<br />- Optimize descriptor management with prefetching and simplified<br />  cleanup.<br />- Reorganize structure fields for better cache locality.<br /> <br />  These changes reduce CPU cycles and memory bandwidth consumption,<br />  resulting in improved packet processing throughput.<br /> <br />Junlong Wang (4):<br />  net/zxdh: fix queue enable intr issues<br />  net/zxdh: optimize queue structure to improve performance<br />  net/zxdh: optimize Rx recv pkts performance<br />  net/zxdh: optimize Tx xmit pkts performance<br /> <br /> drivers/net/zxdh/zxdh_ethdev.c     |  83 ++--<br /> drivers/net/zxdh/zxdh_ethdev_ops.c |  23 +-<br /> drivers/net/zxdh/zxdh_ethdev_ops.h |   4 +<br /> drivers/net/zxdh/zxdh_pci.c        |   2 +-<br /> drivers/net/zxdh/zxdh_queue.c      |  11 +-<br /> drivers/net/zxdh/zxdh_queue.h      | 122 +++---<br /> drivers/net/zxdh/zxdh_rxtx.c       | 591 +++++++++++++++++++++++------<br /> drivers/net/zxdh/zxdh_rxtx.h       |  29 +-<br /> 8 files changed, 604 insertions(+), 261 deletions(-)<br /> <br />--  <br />2.27.0<br />