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: please checkout DPDK to v23.03 as it is verified. It has known raw flow issues with DPDK v23.08 and v23.11.

cd dpdk
# checkout v23.03 version
git checkout v23.03
git switch -c v23.03
git am $mtl_source_code/patches/dpdk/23.03/*.patch
git am $mtl_source_code/patches/dpdk/23.03/hdr_split/0001-net-ice-support-hdr-split-mbuf-callback.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