Hello! When developing applications using MTL, system memory bandwidth has become a critical bottleneck. Therefore, HDR-SPLIT-GPU-DIRECT is a groundbreaking innovation that holds significant value for high-performance applications. However, we have encountered the following issues in our implementation: We tried to test run the header_split.md of Media-Transport-Library version 23.08, but I encountered a situation where the data stream couldn't be received.
Media-Transport-Library build information:
DPDK 23.03 has received the corresponding patches and has been successfully built and installed. The Media-Transport-Library 23.08 has also been successfully built.
IOMMU and Large page deployment:
$cat /proc/cmdlin
BOOT_IMAGE=/boot/vmlinuz-6.8.0-31-generic root=UUID=ed21de70-bfaf-46df-9db9-781ebadf6b3c ro quiet splash intel_iommu=on iommu=pt vfio_iommu_type1_allow_unsafe_interrupts=1 vt.handoff=7
$ grep -i huge /proc/meminfo
sAnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 1024
HugePages_Free: 1024
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 2097152 kB
Network card driver installation:
Network card: Inter E810-C
The network card driver patch was applied successfully, and the driver program was built and installed successfully.
The driver program and DDP version are: ice: Intel(R) Ethernet Connection E800 Series Linux Driver - version Kahawai_1.11.14_20230505;ice 0000:94:00.0: The DDP package was successfully loaded: ICE OS Default Package version 1.3.30.0.
The network card firmware has also been upgraded to E810 Completion.
The Media-Transport-Library was successfully reconfigured again. Based on the information of the local network card and data flow, the parameters of the configuration file "tests/script/hdr_split_json/1080p59_1v.json" were modified (only the receiving configuration was retained).
Start testing the header_split function:
$ sudo ./build/app/RxTxApp --config_file ./tests/script/hdr_split_json/1080p59_1v.json --hdr_split
Log:
st_app_parse_json, using json-c version: 0.17
MT: dev_eal_init(0), port_param: 0000:94:00.0
MT: dev_eal_init, wait eal_init_thread done
EAL: Detected CPU lcores: 64
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Selected IOVA mode 'VA'
EAL: No free 1048576 kB hugepages reported on node 0
EAL: VFIO support initialized
EAL: Using IOMMU type 1 (Type 1)
EAL: Ignore mapping IO port bar(1)
EAL: Ignore mapping IO port bar(4)
EAL: Probe PCI driver: net_ice (8086:1592) device: 0000:94:00.0 (socket 0)
ice_load_pkg_type(): Active package is: 1.3.30.0, ICE OS Default Package (double VLAN mode)
TELEMETRY: No legacy callbacks, legacy socket not created
MT: st version: 23.8.0 Mon Dec 22 09:43:07 2025 b656429 gcc-13.3.0, dpdk version: DPDK 23.03.0
MT: mtl_init(0), socket_id 0
MT: mt_dev_if_init(0), use user ptp source
MT: mt_dev_if_init(0), user request queues tx 0 rx 1, deprecated sessions tx 0 rx 0
MT: dev_config_port(0), tx_q(1 with 512 desc) rx_q (2 with 2048 desc)
MT: mt_mempool_create_by_ops(0), succ at 0x1180afdf00 size 2.156250m n 1024 d 2048 for T_P0_SYS
MT: mt_mempool_create_by_ops(0), succ at 0x1180c8d2c0 size 6.468750m n 3072 d 2048 for R_P0Q0_MBUF
MT: mt_mempool_create_by_ops(0), succ at 0x11818fdf00 size 4.968750m n 3072 d 1536 for R_P0Q1_MBUF
MT: mt_mempool_create_by_ops(0), succ at 0x11820fdf00 size 4.968750m n 3072 d 1536 for R_P0Q1_PAYLOAD
MT: mt_dev_if_init(0), port_id 0 port_type 2 drv_type 1
MT: mt_dev_if_init(0), dev_capa 0x0, offload 0x1181bf:0x19666f queue offload 0x10000:0x100000, rss : 0x7ffc
MT: mt_dev_if_init(0), system_rx_queues_end 1 hdr_split_rx_queues_end 2
MT: mt_dev_if_init(0), sip: 192.168.10.140
MT: mt_dev_if_init(0), netmask: 255.255.255.0
MT: mt_dev_if_init(0), gateway: 0.0.0.0
MT: mt_dev_if_init(0), mac: 6c:b3:11:21:e4:1c
MT: dev_init_lcores, shared memory attached at 0x739c06feb000 nattch 1
MT: dev_start_port(0), enable hdr split for queue 1
MT: dev_start_port(0), rx_defer 0
MT: mt_eth_link_dump(0), link_speed 100g link_status 1 link_duplex 1 link_autoneg 1
MT: dev_rl_shaper_add(0), bps 134217728 on shaper 1
MT: dev_tx_queue_set_rl_rate(0), q 0 link to shaper id 1(134217728)
MT: mt_dev_create(0), feature 0x70, tx pacing ratelimit
MT: mt_sch_mrg_init, succ with data quota 31068 M, nb_tasklets 16
MT: mt_sch_add_quota(0:0), quota 0 total now 0
MT: mt_dev_create, succ, stat period 10s
MT: dev_stat_thread, start
MT: mt_dev_get_tx_queue(0), q 0 with speed 1.073742g bps
MT: mt_mcast_init, report every 10 seconds
MT: mt_dev_get_rx_queue(0), q 0 ip 0.0.0.0 port 0
MT: cni_queues_init(0), rxq 0
MT: mt_sch_register_tasklet(0), tasklet cni registered into slot 0
MT: cni_traffic_thread, start
MT: st_plugins_init, succ
MT: admin_thread, start
MT: config_parse_json, parse kahawai.json with json-c version: 0.17
MT: st22_decoder_register(0), st22_decoder_sample registered, device 1 cap(0x300000000000000:0x70000002b)
MT: st22_encoder_register(0), st22_encoder_sample registered, device 1 cap(0x70000002b:0x300000000000000)
st_plugin_create, succ with st22 sample plugin
MT: st_plugin_register(0), /usr/local/lib/x86_64-linux-gnu/libst_plugin_st22_sample.so registered, version 1
MT: Warn: st_plugin_register, dlopen /usr/local/lib64/libst_plugin_st22_sample.so fail
MT: mt_main_create, succ
MT: mtl_init, succ, tsc_hz 2000000000
MT: mtl_init, simd level avx512_vbmi, flags 0x1d
MT: mt_sch_add_quota(0:1), quota 2160 total now 2160
MT: mt_sch_get(0), succ with quota_mbs 2160
MT: mt_sch_register_tasklet(0), tasklet rvs_pkt_rx registered into slot 1
MT: mt_sch_register_tasklet(0), tasklet rvs_ctl registered into slot 2
MT: rvs_mgr_init(0), succ
MT: rv_attach(0), hdr_split enabled in ops
ice_hdrs_mbuf_set_cb(): RX queue 1 register hdrs mbuf cb at 0x739c06d02a61
MT: dev_rx_queue_create_flow_raw(0), queue 1 succ
MT: mt_dev_get_rx_queue(0), q 1 ip 239.20.2.2 port 20000
MT: rv_init_hw(0), port(l:0,p:0), queue 1 udp 20000
MT: rv_init_hdr_split_frame(0,0), frames (0x1182962640-0x1184bfeff0), mbufs_total 28804, iova 1182962640
MT: mt_mcast_join(0), new group 239.20.2.2
MT: rv_attach(0), 6 frames with size 5184000(810,0), type 0, progressive
MT: rv_attach(0), w 1920 h 1080 fmt ST20_FMT_YUV_422_10BIT packing 0 pt 96 flags 0xa0000 frame time 20.000000ms
MT: mt_sch_add_quota(0:1), quota 1080 total now 3240
MT: st20_rx_create_with_mask, succ on sch 0 session 0
MT: mt_calibrate_tsc, tscHz 2000015146
MT: mt_dev_get_lcore, available lcore 1
MT: sch_tasklet_func(0), start with 3 tasklets
MT: sch_start(0), succ on lcore 1
MT: mt_dev_start, succ
MT: _mt_start, succ, avail ports 1
main, app lunch succ, test time 0s
MT: cni_traffic_thread, stop
MT: rvs_ctl_tasklet_start(0), succ
MT: * * M T D E V S T A T E * *
MT: DEV(0): Avr rate, tx: 0.000096 Mb/s, rx: 0.000000 Mb/s, pkts, tx: 2, rx: 0
MT: CNI(0): eth_rx_rate 0 Mb/s, eth_rx_cnt 0
MT: PTP(0): time 1766381362726366782, 2025-12-22 13:29:22
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
MT: cni_udp_detect_analyses(0), new udp stream:
MT: cni_udp_detect_dump(0), sip: 192.168.10.114, dip: 239.20.2.2, src_port 20000 dst_port 20000, pkt 0
MT: * * M T D E V S T A T E * *
MT: DEV(0): Avr rate, tx: 0.000048 Mb/s, rx: 2177.801560 Mb/s, pkts, tx: 1, rx: 2057200
MT: CNI(0): eth_rx_rate 2177 Mb/s, eth_rx_cnt 2057228
MT: PTP(0): time 1766381372726357432, 2025-12-22 13:29:32
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
MT: * * M T D E V S T A T E * *
MT: DEV(0): Avr rate, tx: 0.000048 Mb/s, rx: 2178.076982 Mb/s, pkts, tx: 1, rx: 2057461
MT: CNI(0): eth_rx_rate 2178 Mb/s, eth_rx_cnt 2057488
MT: PTP(0): time 1766381382726375191, 2025-12-22 13:29:42
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
MT: * * M T D E V S T A T E * *
MT: DEV(0): Avr rate, tx: 0.000048 Mb/s, rx: 2178.051430 Mb/s, pkts, tx: 1, rx: 2057438
MT: CNI(0): eth_rx_rate 2178 Mb/s, eth_rx_cnt 2057464
MT: PTP(0): time 1766381392726280180, 2025-12-22 13:29:52
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
It can be seen from the log: DEV(0): rx: 2178.051430 Mb/s, but RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 packets 0, throughput 0 Mb/s, cpu busy 0.000000.
The breakpoint debugging for receiving packet processing is as follows:

The current breakpoint always has an rv value of 0 each time it is entered.
I suspect that it might be that the network card failed to receive the packet, but I'm not sure.
Moreover, I can't find a solution either.
So I need help and I'm very grateful.
Hello! When developing applications using MTL, system memory bandwidth has become a critical bottleneck. Therefore, HDR-SPLIT-GPU-DIRECT is a groundbreaking innovation that holds significant value for high-performance applications. However, we have encountered the following issues in our implementation: We tried to test run the header_split.md of Media-Transport-Library version 23.08, but I encountered a situation where the data stream couldn't be received.
Media-Transport-Library build information:
DPDK 23.03 has received the corresponding patches and has been successfully built and installed. The Media-Transport-Library 23.08 has also been successfully built.
IOMMU and Large page deployment:
$cat /proc/cmdlin
BOOT_IMAGE=/boot/vmlinuz-6.8.0-31-generic root=UUID=ed21de70-bfaf-46df-9db9-781ebadf6b3c ro quiet splash intel_iommu=on iommu=pt vfio_iommu_type1_allow_unsafe_interrupts=1 vt.handoff=7
$ grep -i huge /proc/meminfo
sAnonHugePages: 0 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 1024
HugePages_Free: 1024
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 2097152 kB
Network card driver installation:
Network card: Inter E810-C
The network card driver patch was applied successfully, and the driver program was built and installed successfully.
The driver program and DDP version are: ice: Intel(R) Ethernet Connection E800 Series Linux Driver - version Kahawai_1.11.14_20230505;ice 0000:94:00.0: The DDP package was successfully loaded: ICE OS Default Package version 1.3.30.0.
The network card firmware has also been upgraded to E810 Completion.
The Media-Transport-Library was successfully reconfigured again. Based on the information of the local network card and data flow, the parameters of the configuration file "tests/script/hdr_split_json/1080p59_1v.json" were modified (only the receiving configuration was retained).
Start testing the header_split function:
$ sudo ./build/app/RxTxApp --config_file ./tests/script/hdr_split_json/1080p59_1v.json --hdr_split
Log:
st_app_parse_json, using json-c version: 0.17
MT: dev_eal_init(0), port_param: 0000:94:00.0
MT: dev_eal_init, wait eal_init_thread done
EAL: Detected CPU lcores: 64
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Selected IOVA mode 'VA'
EAL: No free 1048576 kB hugepages reported on node 0
EAL: VFIO support initialized
EAL: Using IOMMU type 1 (Type 1)
EAL: Ignore mapping IO port bar(1)
EAL: Ignore mapping IO port bar(4)
EAL: Probe PCI driver: net_ice (8086:1592) device: 0000:94:00.0 (socket 0)
ice_load_pkg_type(): Active package is: 1.3.30.0, ICE OS Default Package (double VLAN mode)
TELEMETRY: No legacy callbacks, legacy socket not created
MT: st version: 23.8.0 Mon Dec 22 09:43:07 2025 b656429 gcc-13.3.0, dpdk version: DPDK 23.03.0
MT: mtl_init(0), socket_id 0
MT: mt_dev_if_init(0), use user ptp source
MT: mt_dev_if_init(0), user request queues tx 0 rx 1, deprecated sessions tx 0 rx 0
MT: dev_config_port(0), tx_q(1 with 512 desc) rx_q (2 with 2048 desc)
MT: mt_mempool_create_by_ops(0), succ at 0x1180afdf00 size 2.156250m n 1024 d 2048 for T_P0_SYS
MT: mt_mempool_create_by_ops(0), succ at 0x1180c8d2c0 size 6.468750m n 3072 d 2048 for R_P0Q0_MBUF
MT: mt_mempool_create_by_ops(0), succ at 0x11818fdf00 size 4.968750m n 3072 d 1536 for R_P0Q1_MBUF
MT: mt_mempool_create_by_ops(0), succ at 0x11820fdf00 size 4.968750m n 3072 d 1536 for R_P0Q1_PAYLOAD
MT: mt_dev_if_init(0), port_id 0 port_type 2 drv_type 1
MT: mt_dev_if_init(0), dev_capa 0x0, offload 0x1181bf:0x19666f queue offload 0x10000:0x100000, rss : 0x7ffc
MT: mt_dev_if_init(0), system_rx_queues_end 1 hdr_split_rx_queues_end 2
MT: mt_dev_if_init(0), sip: 192.168.10.140
MT: mt_dev_if_init(0), netmask: 255.255.255.0
MT: mt_dev_if_init(0), gateway: 0.0.0.0
MT: mt_dev_if_init(0), mac: 6c:b3:11:21:e4:1c
MT: dev_init_lcores, shared memory attached at 0x739c06feb000 nattch 1
MT: dev_start_port(0), enable hdr split for queue 1
MT: dev_start_port(0), rx_defer 0
MT: mt_eth_link_dump(0), link_speed 100g link_status 1 link_duplex 1 link_autoneg 1
MT: dev_rl_shaper_add(0), bps 134217728 on shaper 1
MT: dev_tx_queue_set_rl_rate(0), q 0 link to shaper id 1(134217728)
MT: mt_dev_create(0), feature 0x70, tx pacing ratelimit
MT: mt_sch_mrg_init, succ with data quota 31068 M, nb_tasklets 16
MT: mt_sch_add_quota(0:0), quota 0 total now 0
MT: mt_dev_create, succ, stat period 10s
MT: dev_stat_thread, start
MT: mt_dev_get_tx_queue(0), q 0 with speed 1.073742g bps
MT: mt_mcast_init, report every 10 seconds
MT: mt_dev_get_rx_queue(0), q 0 ip 0.0.0.0 port 0
MT: cni_queues_init(0), rxq 0
MT: mt_sch_register_tasklet(0), tasklet cni registered into slot 0
MT: cni_traffic_thread, start
MT: st_plugins_init, succ
MT: admin_thread, start
MT: config_parse_json, parse kahawai.json with json-c version: 0.17
MT: st22_decoder_register(0), st22_decoder_sample registered, device 1 cap(0x300000000000000:0x70000002b)
MT: st22_encoder_register(0), st22_encoder_sample registered, device 1 cap(0x70000002b:0x300000000000000)
st_plugin_create, succ with st22 sample plugin
MT: st_plugin_register(0), /usr/local/lib/x86_64-linux-gnu/libst_plugin_st22_sample.so registered, version 1
MT: Warn: st_plugin_register, dlopen /usr/local/lib64/libst_plugin_st22_sample.so fail
MT: mt_main_create, succ
MT: mtl_init, succ, tsc_hz 2000000000
MT: mtl_init, simd level avx512_vbmi, flags 0x1d
MT: mt_sch_add_quota(0:1), quota 2160 total now 2160
MT: mt_sch_get(0), succ with quota_mbs 2160
MT: mt_sch_register_tasklet(0), tasklet rvs_pkt_rx registered into slot 1
MT: mt_sch_register_tasklet(0), tasklet rvs_ctl registered into slot 2
MT: rvs_mgr_init(0), succ
MT: rv_attach(0), hdr_split enabled in ops
ice_hdrs_mbuf_set_cb(): RX queue 1 register hdrs mbuf cb at 0x739c06d02a61
MT: dev_rx_queue_create_flow_raw(0), queue 1 succ
MT: mt_dev_get_rx_queue(0), q 1 ip 239.20.2.2 port 20000
MT: rv_init_hw(0), port(l:0,p:0), queue 1 udp 20000
MT: rv_init_hdr_split_frame(0,0), frames (0x1182962640-0x1184bfeff0), mbufs_total 28804, iova 1182962640
MT: mt_mcast_join(0), new group 239.20.2.2
MT: rv_attach(0), 6 frames with size 5184000(810,0), type 0, progressive
MT: rv_attach(0), w 1920 h 1080 fmt ST20_FMT_YUV_422_10BIT packing 0 pt 96 flags 0xa0000 frame time 20.000000ms
MT: mt_sch_add_quota(0:1), quota 1080 total now 3240
MT: st20_rx_create_with_mask, succ on sch 0 session 0
MT: mt_calibrate_tsc, tscHz 2000015146
MT: mt_dev_get_lcore, available lcore 1
MT: sch_tasklet_func(0), start with 3 tasklets
MT: sch_start(0), succ on lcore 1
MT: mt_dev_start, succ
MT: _mt_start, succ, avail ports 1
main, app lunch succ, test time 0s
MT: cni_traffic_thread, stop
MT: rvs_ctl_tasklet_start(0), succ
MT: * * M T D E V S T A T E * *
MT: DEV(0): Avr rate, tx: 0.000096 Mb/s, rx: 0.000000 Mb/s, pkts, tx: 2, rx: 0
MT: CNI(0): eth_rx_rate 0 Mb/s, eth_rx_cnt 0
MT: PTP(0): time 1766381362726366782, 2025-12-22 13:29:22
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
MT: cni_udp_detect_analyses(0), new udp stream:
MT: cni_udp_detect_dump(0), sip: 192.168.10.114, dip: 239.20.2.2, src_port 20000 dst_port 20000, pkt 0
MT: * * M T D E V S T A T E * *
MT: DEV(0): Avr rate, tx: 0.000048 Mb/s, rx: 2177.801560 Mb/s, pkts, tx: 1, rx: 2057200
MT: CNI(0): eth_rx_rate 2177 Mb/s, eth_rx_cnt 2057228
MT: PTP(0): time 1766381372726357432, 2025-12-22 13:29:32
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
MT: * * M T D E V S T A T E * *
MT: DEV(0): Avr rate, tx: 0.000048 Mb/s, rx: 2178.076982 Mb/s, pkts, tx: 1, rx: 2057461
MT: CNI(0): eth_rx_rate 2178 Mb/s, eth_rx_cnt 2057488
MT: PTP(0): time 1766381382726375191, 2025-12-22 13:29:42
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
MT: * * M T D E V S T A T E * *

MT: DEV(0): Avr rate, tx: 0.000048 Mb/s, rx: 2178.051430 Mb/s, pkts, tx: 1, rx: 2057438
MT: CNI(0): eth_rx_rate 2178 Mb/s, eth_rx_cnt 2057464
MT: PTP(0): time 1766381392726280180, 2025-12-22 13:29:52
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 pkts 0
MT: RX_VIDEO_SESSION(0,0:app_rx_video_0): throughput 0 Mb/s, cpu busy 0.000000
MT: * * E N D S T A T E * *
It can be seen from the log: DEV(0): rx: 2178.051430 Mb/s, but RX_VIDEO_SESSION(0,0:app_rx_video_0): fps 0.000000 frames 0 packets 0, throughput 0 Mb/s, cpu busy 0.000000.
The breakpoint debugging for receiving packet processing is as follows:
The current breakpoint always has an rv value of 0 each time it is entered.
I suspect that it might be that the network card failed to receive the packet, but I'm not sure.
Moreover, I can't find a solution either.
So I need help and I'm very grateful.