Header Split Guide#
1. Background#
Header split is a hardware-based feature for RX memory copy offload. It can leverage this feature to reduce the memory copy in RX packet processing, thereby improving the performance of high-resolution streaming.
2. Build DPDK with header split patch#
Note: header split is experimental.
To reproduce the verified configuration, set DPDK_VER=23.03 in versions.env before you run the commands below. Restore the pin after you finish.
Note: point $mtl_source_code to the top source code tree of Media Transport Library.
. $mtl_source_code/versions.env
cd dpdk
git checkout v${DPDK_VER}
git switch -c v${DPDK_VER}
git am $mtl_source_code/patches/dpdk/${DPDK_VER}/*.patch
git am $mtl_source_code/patches/dpdk/${DPDK_VER}/hdr_split/*.patch
# build dpdk
rm build -rf
meson setup build
ninja -C build
sudo ninja install -C build
cd ..
3. Update DDP package version with header split feature#
Double check the DDP version is right from the log.
ice_load_pkg_type(): Active package is: 1.3.9.99, ICE Wireless Edge Package (double VLAN mode)
Use below command to update if it’s not latest.
cd /usr/lib/firmware/updates/intel/ice/ddp
cp <latest_ddp_dir>/ice_wireless_edge-1.3.9.99_1.pkg ./
rm ice.pkg
ln -s ice_wireless_edge-1.3.9.99_1.pkg ice.pkg
4. Run#
./tests/tools/RxTxApp/build/RxTxApp --config_file tests/script/hdr_split_json/1080p59_1v.json --hdr_split
Check log to see if header split is enabled.
MT: rv_attach(0), hdr_split enabled in ops
ice_hdrs_mbuf_set_cb(): RX queue 1 register hdrs mbuf cb at 0x7f59f0b2a310
MT: dev_rx_queue_create_flow_raw(1), queue 1 succ