Skip to content

hdr split gpu direct data stream couldn't be received #1375

@ydk231912

Description

@ydk231912

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:
Image
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.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions