From: Wenxuan Wu <wenxuanx...@intel.com> Protocol type based buffer split consists of splitting a received packet into several separate segments based on the packet content. It is useful in some scenarios, such as GPU acceleration. The splitting will help to enable true zero copy and hence improve the performance significantly.
This patchset aims to support protocol header split based on current buffer split. When Rx queue is configured with RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT offload and corresponding protocol, packets received will be directly split into different mempools. v8->v9: * Introduce a new api rte_eth_supported_hdrs_get to retrieve supported ptypes mask of a pmd to split. * Fix header protocol split check. * Support header protocol configuration of rxhdrs by default, e.g. ipv4, ipv6, mac, inner_mac, outer_mac, l3, l4. * Refine doc. v7->v8: * Refine ethdev doc. * Fix header protocol split check. v6->v7: * Fix supported header protocol check. * Add rxhdrs commands and parameters. v5->v6: * The header split deprecation notice is sent. * Refine the documents, protocol header based buffer split can actually support multi-segment split. * Add buffer split protocol header capability. * Fix some format issues. v4->v5: * Use protocol and mbuf_offset based buffer split instead of header split. * Use RTE_PTYPE* instead of enum rte_eth_rx_header_split_protocol_type. * Improve the description of rte_eth_rxseg_split.proto. v3->v4: * Use RTE_ETH_RX_HEADER_SPLIT_NONE instead of 0. v2->v3: * Fix a PMD bug. * Add rx queue header split check. * Revise the log and doc. v1->v2: * Add support for all header split protocol types. Wenxuan Wu (4): ethdev: introduce protocol header API ethdev: introduce protocol hdr based buffer split app/testpmd: add rxhdrs commands and parameters net/ice: support buffer split in Rx path app/test-pmd/cmdline.c | 133 ++++++++++++++- app/test-pmd/config.c | 75 +++++++++ app/test-pmd/parameters.c | 15 +- app/test-pmd/testpmd.c | 6 +- app/test-pmd/testpmd.h | 6 + doc/guides/rel_notes/release_22_07.rst | 2 + drivers/net/ice/ice_ethdev.c | 38 ++++- drivers/net/ice/ice_rxtx.c | 220 +++++++++++++++++++++---- drivers/net/ice/ice_rxtx.h | 16 ++ drivers/net/ice/ice_rxtx_vec_common.h | 3 + lib/ethdev/ethdev_driver.h | 18 ++ lib/ethdev/rte_ethdev.c | 61 +++++-- lib/ethdev/rte_ethdev.h | 36 +++- lib/ethdev/version.map | 3 + 14 files changed, 582 insertions(+), 50 deletions(-) -- 2.25.1