├── VERSION ├── tests ├── validation │ ├── common │ │ ├── __init__.py │ │ ├── mtl_manager │ │ │ └── __init__.py │ │ ├── ffmpeg_handler │ │ │ ├── __init__.py │ │ │ └── mtl_st30p.py │ │ └── integrity │ │ │ └── requirements.txt │ ├── tests │ │ ├── __init__.py │ │ ├── dual │ │ │ ├── __init__.py │ │ │ ├── ffmpeg │ │ │ │ └── __init__.py │ │ │ ├── st20p │ │ │ │ ├── __init__.py │ │ │ │ ├── fps │ │ │ │ │ └── __init__.py │ │ │ │ ├── pacing │ │ │ │ │ └── __init__.py │ │ │ │ ├── packing │ │ │ │ │ └── __init__.py │ │ │ │ ├── integrity │ │ │ │ │ └── __init__.py │ │ │ │ ├── interlace │ │ │ │ │ └── __init__.py │ │ │ │ ├── resolutions │ │ │ │ │ └── __init__.py │ │ │ │ └── test_mode │ │ │ │ │ └── __init__.py │ │ │ ├── st30p │ │ │ │ ├── __init__.py │ │ │ │ ├── integrity │ │ │ │ │ └── __init__.py │ │ │ │ ├── st30p_format │ │ │ │ │ └── __init__.py │ │ │ │ ├── st30p_ptime │ │ │ │ │ └── __init__.py │ │ │ │ ├── test_mode │ │ │ │ │ └── __init__.py │ │ │ │ └── st30p_sampling │ │ │ │ │ └── __init__.py │ │ │ ├── gstreamer │ │ │ │ ├── __init__.py │ │ │ │ ├── anc_format │ │ │ │ │ └── __init__.py │ │ │ │ ├── audio_format │ │ │ │ │ └── __init__.py │ │ │ │ ├── video_format │ │ │ │ │ └── __init__.py │ │ │ │ └── video_resolution │ │ │ │ │ └── __init__.py │ │ │ └── st40 │ │ │ │ ├── test_mode │ │ │ │ └── __init__.py │ │ │ │ ├── type_mode │ │ │ │ └── __init__.py │ │ │ │ └── test_format_dual │ │ │ │ └── __init__.py │ │ ├── invalid │ │ │ └── __init__.py │ │ └── single │ │ │ ├── __init__.py │ │ │ ├── dma │ │ │ └── __init__.py │ │ │ ├── ffmpeg │ │ │ └── __init__.py │ │ │ ├── ptp │ │ │ ├── __init__.py │ │ │ └── test_mode │ │ │ │ ├── __init__.py │ │ │ │ ├── mixed │ │ │ │ └── __init__.py │ │ │ │ └── video │ │ │ │ └── __init__.py │ │ │ ├── st20p │ │ │ ├── __init__.py │ │ │ ├── fps │ │ │ │ └── __init__.py │ │ │ ├── format │ │ │ │ └── __init__.py │ │ │ ├── integrity │ │ │ │ └── __init__.py │ │ │ ├── interlace │ │ │ │ └── __init__.py │ │ │ ├── pacing │ │ │ │ └── __init__.py │ │ │ ├── packing │ │ │ │ └── __init__.py │ │ │ ├── test_mode │ │ │ │ └── __init__.py │ │ │ └── resolutions │ │ │ │ └── __init__.py │ │ │ ├── st22p │ │ │ ├── __init__.py │ │ │ ├── codec │ │ │ │ └── __init__.py │ │ │ ├── fps │ │ │ │ └── __init__.py │ │ │ ├── interlace │ │ │ │ └── __init__.py │ │ │ ├── quality │ │ │ │ └── __init__.py │ │ │ └── test_mode │ │ │ │ └── __init__.py │ │ │ ├── st30p │ │ │ ├── __init__.py │ │ │ ├── integrity │ │ │ │ └── __init__.py │ │ │ ├── test_mode │ │ │ │ └── __init__.py │ │ │ ├── st30p_channel │ │ │ │ └── __init__.py │ │ │ ├── st30p_format │ │ │ │ └── __init__.py │ │ │ ├── st30p_ptime │ │ │ │ └── __init__.py │ │ │ └── st30p_sampling │ │ │ │ └── __init__.py │ │ │ ├── st41 │ │ │ ├── __init__.py │ │ │ ├── dit │ │ │ │ └── __init__.py │ │ │ ├── fps │ │ │ │ └── __init__.py │ │ │ ├── type_mode │ │ │ │ └── __init__.py │ │ │ └── payload_type │ │ │ │ └── __init__.py │ │ │ ├── xdp │ │ │ ├── __init__.py │ │ │ ├── redundant │ │ │ │ └── __init__.py │ │ │ ├── test_mode │ │ │ │ └── __init__.py │ │ │ └── test_standard │ │ │ │ └── __init__.py │ │ │ ├── gstreamer │ │ │ ├── __init__.py │ │ │ ├── audio_format │ │ │ │ └── __init__.py │ │ │ ├── video_format │ │ │ │ └── __init__.py │ │ │ └── video_resolution │ │ │ │ └── __init__.py │ │ │ ├── performance │ │ │ └── __init__.py │ │ │ ├── rss_mode │ │ │ ├── __init__.py │ │ │ ├── audio │ │ │ │ └── __init__.py │ │ │ └── video │ │ │ │ └── __init__.py │ │ │ ├── udp │ │ │ ├── librist │ │ │ │ └── __init__.py │ │ │ └── sample │ │ │ │ ├── __init__.py │ │ │ │ └── test_sessions_cnt.py │ │ │ ├── virtio_user │ │ │ └── __init__.py │ │ │ ├── kernel_socket │ │ │ ├── __init__.py │ │ │ ├── kernel_lo │ │ │ │ └── __init__.py │ │ │ ├── pmd_kernel │ │ │ │ ├── __init__.py │ │ │ │ ├── mixed │ │ │ │ │ └── __init__.py │ │ │ │ └── video │ │ │ │ │ └── __init__.py │ │ │ ├── kernel_lo_st20p │ │ │ │ └── __init__.py │ │ │ └── kernel_lo_st22p │ │ │ │ └── __init__.py │ │ │ └── rx_timing │ │ │ ├── mixed │ │ │ └── __init__.py │ │ │ └── video │ │ │ └── __init__.py │ ├── mtl_engine │ │ ├── __init__.py │ │ ├── const.py │ │ ├── ip_pools.py │ │ └── ramdisk.py │ ├── pyproject.toml │ ├── configs │ │ ├── .gitignore │ │ └── examples │ │ │ ├── topology_config.yaml │ │ │ └── test_config.yaml │ ├── setup.cfg │ └── pytest.ini ├── tools │ ├── RxTxApp │ │ ├── src │ │ │ ├── experimental │ │ │ │ ├── meson.build │ │ │ │ └── rx_st20r_app.h │ │ │ ├── legacy │ │ │ │ ├── meson.build │ │ │ │ ├── rx_st22_app.h │ │ │ │ ├── tx_audio_app.h │ │ │ │ ├── tx_st22_app.h │ │ │ │ ├── rx_audio_app.h │ │ │ │ ├── tx_video_app.h │ │ │ │ └── rx_video_app.h │ │ │ ├── args.h │ │ │ ├── meson.build │ │ │ ├── tx_ancillary_app.h │ │ │ ├── rx_ancillary_app.h │ │ │ ├── tx_fastmetadata_app.h │ │ │ ├── rx_fastmetadata_app.h │ │ │ ├── rx_st30p_app.h │ │ │ ├── tx_st22p_app.h │ │ │ ├── tx_st20p_app.h │ │ │ ├── rx_st22p_app.h │ │ │ ├── rx_st20p_app.h │ │ │ ├── tx_st30p_app.h │ │ │ └── fmt.c │ │ ├── meson_options.txt │ │ └── script │ │ │ ├── loop_json │ │ │ ├── random_ip.sh │ │ │ ├── change_port.sh │ │ │ ├── 1080p_16v_rtp_tx_only.json │ │ │ └── 1080p_32v_tx_only.json │ │ │ ├── redundant_json │ │ │ ├── README │ │ │ ├── tx.json │ │ │ └── hdr_split_tx.json │ │ │ ├── kernel_socket_json │ │ │ ├── ufd_client.json │ │ │ └── ufd_server.json │ │ │ ├── dpdk_af_xdp_json │ │ │ ├── ufd_client.json │ │ │ ├── ufd_server.json │ │ │ ├── setup.sh │ │ │ └── rx.json │ │ │ ├── loop_test.sh │ │ │ ├── perf_json │ │ │ └── 1080p_32v_rx_only.json │ │ │ ├── multi_port_test.sh │ │ │ ├── afxdp_test.sh │ │ │ ├── hdr_split_test.sh │ │ │ ├── st2110_test.sh │ │ │ └── audio_json │ │ │ ├── rx_shared_queue_750v.json │ │ │ └── tx_shared_queue_750v.json │ ├── latency_measurement │ │ └── ffmpeg_based_latency_solution_diagram.jpg │ └── gstreamer_tools │ │ └── gst_anc_generator.h ├── meson_options.txt └── integration_tests │ ├── noctx │ ├── testcases │ │ └── st20p_user_timestamp_tests.cpp │ ├── core │ │ ├── constants.hpp │ │ ├── strategy.cpp │ │ ├── session.hpp │ │ ├── strategy.hpp │ │ ├── handler_base.hpp │ │ └── session.cpp │ └── meson.build │ ├── st20 │ └── meson.build │ ├── ufd_test.h │ ├── meson.build │ └── log.h ├── .clang-format ├── tools ├── sch_smi_emulate │ ├── .gitignore │ ├── Makefile │ └── README ├── readpcap │ ├── .gitignore │ ├── Makefile │ └── README └── ebpf │ ├── .gitignore │ ├── udp_monitor.h │ └── log.h ├── rust ├── .gitignore ├── examples │ └── version.rs ├── imtl-sys │ ├── wrapper.h │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ └── lib.rs ├── src │ └── imtl │ │ ├── lib.rs │ │ └── version.rs └── Cargo.toml ├── manager ├── .dockerignore └── meson_options.txt ├── ecosystem ├── ffmpeg_plugin │ ├── .gitignore │ └── ffmpeg_st22_flow.png ├── obs_mtl │ ├── linux-mtl │ │ ├── data │ │ │ └── locale │ │ │ │ ├── zh-CN.ini │ │ │ │ └── en-US.ini │ │ └── linux-mtl.h │ └── README.md ├── gstreamer_plugin │ └── build.sh └── librist │ └── build_librist_mtl.sh ├── patches ├── dpdk │ ├── 22.03 │ │ ├── 0002-Change-to-enable-PTP.patch │ │ ├── 0005-update-VF-rate-limit.patch │ │ ├── 0004-eanble-PF-ICE-rate-limit.patch │ │ ├── 0008-net-ice-support-256-queues.patch │ │ ├── 0001-build-enable-IEEE1588-PTP-option.patch │ │ ├── 0007-pcapng-add-ns-timestamp-for-copy-api.patch │ │ ├── 0003-net-ice-support-max-burst-size-configuration.patch │ │ ├── 0009-net-iavf-refine-queue-rate-limit-configure.patch │ │ ├── 0006-net-iavf-support-max-burst-size-configuration.patch │ │ └── windows │ │ │ ├── 0001-Add-DDP-package-load-support-in-windows.patch │ │ │ ├── 0003-Mingw-compiler-do-have-same-implementation.patch │ │ │ ├── 0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch │ │ │ ├── 0009-Windows-dsa-driver-need-set-to-reset-status-first.patch │ │ │ ├── 0002-Change-list-remove-and-add-position-to-avoid-race-co.patch │ │ │ ├── 0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch │ │ │ ├── 0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch │ │ │ ├── 0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch │ │ │ ├── 0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch │ │ │ └── 0011-Disable-affinity-binding-for-windows-do-have-a-perfo.patch │ ├── 22.11 │ │ ├── 0006-Change-to-enable-PTP.patch │ │ ├── 0002-net-af_xdp-parse-numa-node-id-from-sysfs.patch │ │ ├── 0003-net-iavf-refine-queue-rate-limit-configure.patch │ │ ├── windows │ │ │ ├── 0001-Add-DDP-package-load-support-in-windows.patch │ │ │ ├── 0003-Mingw-compiler-do-have-same-implementation.patch │ │ │ ├── 0010-Windows-version-currently-no-BPF-support.patch │ │ │ ├── 0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch │ │ │ ├── 0009-Windows-dsa-driver-need-set-to-reset-status-first.patch │ │ │ ├── 0002-Change-list-remove-and-add-position-to-avoid-race-co.patch │ │ │ ├── 0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch │ │ │ ├── 0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch │ │ │ ├── 0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch │ │ │ ├── 0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch │ │ │ └── 0011-Remove-affinity-binding-for-windows-will-have-perfor.patch │ │ └── 0004-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch │ ├── 23.03 │ │ ├── 0005-Change-to-enable-PTP.patch │ │ ├── 0004-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ │ ├── 0002-net-iavf-refine-queue-rate-limit-configure.patch │ │ ├── windows │ │ │ ├── 0011-Fix-list-dir-glob-expassion-in-msys2.patch │ │ │ ├── 0001-Add-DDP-package-load-support-in-windows.patch │ │ │ ├── 0003-Mingw-compiler-do-have-same-implementation.patch │ │ │ ├── 0009-Windows-version-currently-no-BPF-support.patch │ │ │ ├── 0012-Use-alarm-to-workaround-vf-uio-no-intr-issue.patch │ │ │ ├── 0006-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch │ │ │ ├── 0008-Windows-dsa-driver-need-set-to-reset-status-first.patch │ │ │ ├── 0002-Change-list-remove-and-add-position-to-avoid-race-co.patch │ │ │ ├── 0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch │ │ │ ├── 0007-Windows-need-set-the-timer-resolution-to-maximum-to-.patch │ │ │ └── 0013-Disable-build-test_pcapng.patch │ │ └── 0003-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch │ ├── 23.07 │ │ ├── 0005-Change-to-enable-PTP.patch │ │ ├── 0001-pcapng-add-ns-timestamp-for-copy-api.patch │ │ ├── 0004-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ │ ├── 0002-net-iavf-refine-queue-rate-limit-configure.patch │ │ └── windows │ │ │ ├── 0001-Add-DDP-package-load-support-in-windows.patch │ │ │ ├── 0003-Mingw-compiler-do-have-same-implementation.patch │ │ │ ├── 0009-Remove-affinity-binding-for-windows-will-have.patch │ │ │ ├── 0005-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch │ │ │ ├── 0007-Windows-dsa-driver-need-set-to-reset-status-first.patch │ │ │ ├── 0002-Change-list-remove-and-add-position-to-avoid-race-co.patch │ │ │ ├── 0006-Windows-need-set-the-timer-resolution-to-maximum-to-.patch │ │ │ ├── 0008-Windows-version-currently-no-BPF-support.patch │ │ │ ├── 0012-Disable-build-test_pcapng.patch │ │ │ └── 0010-Fix-list-dir-glob-expassion-in-msys2.patch │ ├── 23.11 │ │ ├── 0005-Change-to-enable-PTP.patch │ │ ├── 0004-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ │ ├── 0002-net-iavf-refine-queue-rate-limit-configure.patch │ │ ├── windows │ │ │ ├── 0011-Use-MinGW-pthread-implementations.patch │ │ │ ├── 0010-Fix-list-dir-glob-expassion-in-msys2.patch │ │ │ ├── 0001-Add-DDP-package-load-support-in-windows.patch │ │ │ ├── 0003-Mingw-compiler-do-have-same-implementation.patch │ │ │ ├── 0005-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch │ │ │ ├── 0002-Change-list-remove-and-add-position-to-avoid-race-co.patch │ │ │ └── 0006-Windows-need-set-the-timer-resolution-to-maximum-to-.patch │ │ ├── 0001-e810-set-max-ring-desc-to-8160-which-e810-max-allowe.patch │ │ ├── 0003-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch │ │ └── tsn │ │ │ └── 0001-igc-optimize-LaunchTime-Tx-Qbv-configuration-and-PTP.patch │ ├── 22.07 │ │ ├── 0001-pcapng-add-ns-timestamp-for-copy-api.patch │ │ ├── 0003-net-iavf-refine-queue-rate-limit-configure.patch │ │ ├── windows │ │ │ ├── 0001-Add-DDP-package-load-support-in-windows.patch │ │ │ ├── 0003-Mingw-compiler-do-have-same-implementation.patch │ │ │ ├── 0010-Windows-version-currently-no-BPF-support.patch │ │ │ ├── 0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch │ │ │ ├── 0009-Windows-dsa-driver-need-set-to-reset-status-first.patch │ │ │ ├── 0002-Change-list-remove-and-add-position-to-avoid-race-co.patch │ │ │ ├── 0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch │ │ │ ├── 0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch │ │ │ ├── 0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch │ │ │ └── 0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch │ │ └── 0009-ice-fix-ice_interrupt_handler-panic-when-stop.patch │ ├── 21.08 │ │ ├── 0002-temp-fix-to-enable-multicast-rx-on-ice.patch │ │ ├── windows │ │ │ └── 0006-Bind-thread-to-dedicate-core-in-windows-version.patch │ │ └── 0006-net-iavf-add-capability-for-runtime-rx-tx-queue-setu.patch │ └── 21.05 │ │ └── 0001-temp-fix-to-enable-multicast-rx-on-ice.patch └── ice_drv │ ├── 1.12.6 │ ├── 0001-vf-support-kahawai-runtime-rl-queue.patch │ ├── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ └── 0003-version-update-to-Kahawai_1.12.6_20230821.patch │ ├── 1.11.17.1 │ ├── 0001-vf-support-kahawai-runtime-rl-queue.patch │ ├── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ └── 0003-version-update-to-Kahawai_1.11.17.1_20230728.patch │ ├── 1.16.3 │ ├── 0003-vf-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VS.patch │ ├── 0004-version-update-to-Kahawai_1.16.3_20250327.patch │ └── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ ├── 2.2.8 │ ├── 0004-version-update-to-Kahawai_2.2.8.patch │ ├── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ └── 0003-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VSI.patch │ ├── 1.9.11 │ ├── 0004-version-update-to-kahawai.patch │ ├── 0001-ice-linux-fix-incorrect-memcpy-size.patch │ └── 0003-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ ├── 1.11.14 │ ├── 0003-version-update-to-kahawai-1.11.14.patch │ └── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ ├── 1.12.7 │ ├── 0003-version-update-to-Kahawai_1.12.7_20231116.patch │ └── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ ├── 1.13.7 │ ├── 0004-version-update-to-Kahawai_1.13.7_20240220.patch │ ├── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ └── 0003-vf-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VS.patch │ └── 1.14.9 │ ├── 0004-version-update-to-Kahawai_1.14.9_20240613.patch │ ├── 0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch │ └── 0003-vf-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VS.patch ├── doc ├── png │ ├── netuio.png │ ├── tasklet.png │ ├── instance.png │ ├── tx_pacing.png │ ├── virt2phy.png │ ├── tx_zero_copy.png │ ├── rx_dma_offload.png │ ├── software_stack.png │ ├── desktop-streaming-mtl.png │ ├── mtl-appliance-use-case.png │ ├── compliance │ │ ├── vero_1080p50_analysis.png │ │ ├── vero_1080p50_summary.png │ │ ├── vero_2160p50_analysis.png │ │ ├── vero_2160p50_summary.png │ │ ├── pharbrix_1080p50_analyser.png │ │ ├── pharbrix_2160p50_analyser.png │ │ ├── vero_1080p50_vrx_per_frame.png │ │ ├── vero_2160p50_vrx_per_frame.png │ │ ├── vero_1080p50_cinst_per_frame.png │ │ └── vero_2160p50_cinst_per_frame.png │ └── yuview_yuv422rfc4175be10_layout.png ├── doxygen │ ├── setup.png │ ├── EssenceStreams.png │ ├── streamsOverview.png │ ├── api.md │ ├── detailedArchitecture.png │ ├── overallArchitecture.png │ ├── unicastArchitecture.png │ ├── build-doc.sh │ ├── multicastArchitecture.png │ └── softwareDeploymentModel.png ├── chunks │ └── _build_install_ice_driver.md ├── doxygen.md └── sphinx │ └── Makefile ├── .textlintrc ├── python ├── swig │ ├── .gitignore │ ├── setup.py │ └── pymtl.i └── example │ └── version.py ├── .github ├── linters │ ├── actionlint.yaml │ ├── .hadolint.yaml │ ├── .clang-format │ └── .python-lint ├── dependabot.yml └── workflows │ ├── upl_gtest.json │ ├── upl_gtest_template.json │ └── dependency-review.yml ├── CODEOWNERS ├── app ├── v4l2_to_ip │ └── meson.build ├── meson_options.txt ├── sample │ └── msvc │ │ └── imtl_sample │ │ ├── imtl_sample.vcxproj.user │ │ └── imtl_sample.vcxproj.filters ├── tools │ ├── meson.build │ └── log.h └── udp │ ├── ufd_client.json │ ├── ufd_server.json │ ├── meson.build │ └── README.md ├── gpu_direct ├── meson_options.txt ├── run_tests.sh ├── subprojects │ └── gtest.wrap └── README.md ├── lib └── src │ ├── udp │ ├── meson.build │ └── ufd_main.h │ ├── st2110 │ ├── experimental │ │ └── meson.build │ ├── pipeline │ │ └── meson.build │ ├── st_tx_audio_session.h │ ├── st_tx_ancillary_session.h │ ├── st_rx_audio_session.h │ ├── st_rx_ancillary_session.h │ ├── st_tx_fastmetadata_session.h │ ├── st_rx_fastmetadata_session.h │ ├── st_ancillary_transmitter.h │ ├── st_main.h │ ├── st_convert.h │ ├── st_fastmetadata_transmitter.h │ ├── st_avx2.h │ ├── st_audio_transmitter.h │ ├── meson.build │ └── st_video_transmitter.h │ ├── dev │ └── meson.build │ ├── datapath │ ├── meson.build │ └── mt_shared_rss.h │ ├── mt_admin.h │ ├── mt_config.h │ ├── mt_arp.h │ ├── mt_flow.h │ ├── meson.build │ ├── mt_stat.h │ ├── mt_quirk.h │ └── mt_cni.h ├── script ├── dos2unix.sh ├── build_python.sh ├── if_filter_delete.sh ├── build_obs_plugin.sh ├── build_ebpf_xdp.sh ├── build_st22_avcodec_plugin.sh └── lcore_stat_dump.sh ├── plugins ├── meson_options.txt ├── sample │ ├── meson.build │ └── convert_plugin_sample.h └── log.h ├── ld_preload ├── meson_options.txt ├── preload_platform.h ├── meson.build └── udp │ └── meson.build ├── security.md ├── versions.env ├── .dockerignore ├── .pre-commit-config.yaml ├── meson_options.txt ├── docker └── docker-compose.yml ├── include └── meson.build ├── config ├── legacy │ ├── 4k_rx_1port_1v.json │ ├── 8k_rx_1port_1v.json │ ├── test_rx_1port_1v.json │ ├── 4k_tx_1port_1v.json │ ├── 8k_tx_1port_1v.json │ └── test_tx_1port_1v.json ├── tx_1v.json ├── rx_1v.json ├── tx_1v_user_pacing.json └── test.sh ├── format-coding.sh └── .markdown-lint.yml /VERSION: -------------------------------------------------------------------------------- 1 | 25.02.0.DEV 2 | -------------------------------------------------------------------------------- /tests/validation/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | .github/linters/.clang-format -------------------------------------------------------------------------------- /tests/validation/mtl_engine/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/invalid/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/common/mtl_manager/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/ffmpeg/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st30p/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/dma/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/ffmpeg/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/ptp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st22p/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st30p/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st41/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/xdp/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/common/ffmpeg_handler/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/gstreamer/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/fps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/pacing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/packing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/gstreamer/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/performance/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/rss_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/fps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st22p/codec/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st22p/fps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st41/dit/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st41/fps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/udp/librist/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/udp/sample/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/virtio_user/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tools/sch_smi_emulate/.gitignore: -------------------------------------------------------------------------------- 1 | sch_smi_emulate 2 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/integrity/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/interlace/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/resolutions/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st20p/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st30p/integrity/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st30p/st30p_format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st30p/st30p_ptime/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st30p/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st40/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st40/type_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/kernel_socket/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/ptp/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/rss_mode/audio/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/rss_mode/video/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/rx_timing/mixed/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/rx_timing/video/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/integrity/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/interlace/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/pacing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/packing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st22p/interlace/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st22p/quality/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st22p/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st30p/integrity/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st30p/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st41/type_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/xdp/redundant/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/xdp/test_mode/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rust/.gitignore: -------------------------------------------------------------------------------- 1 | # generated file 2 | Cargo.lock 3 | target 4 | -------------------------------------------------------------------------------- /tests/validation/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.black] 2 | line-length=120 -------------------------------------------------------------------------------- /tests/validation/tests/dual/gstreamer/anc_format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/gstreamer/audio_format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/gstreamer/video_format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st30p/st30p_sampling/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/dual/st40/test_format_dual/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/ptp/test_mode/mixed/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/ptp/test_mode/video/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st20p/resolutions/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st30p/st30p_channel/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st30p/st30p_format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st30p/st30p_ptime/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st30p/st30p_sampling/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/st41/payload_type/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/xdp/test_standard/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tools/readpcap/.gitignore: -------------------------------------------------------------------------------- 1 | *.pcap 2 | *.csv 3 | readpcap 4 | -------------------------------------------------------------------------------- /manager/.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | 3 | README.md 4 | build/ -------------------------------------------------------------------------------- /tests/validation/tests/dual/gstreamer/video_resolution/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/gstreamer/audio_format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/gstreamer/video_format/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/gstreamer/video_resolution/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/kernel_socket/kernel_lo/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/kernel_socket/pmd_kernel/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/kernel_socket/kernel_lo_st20p/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/kernel_socket/kernel_lo_st22p/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/kernel_socket/pmd_kernel/mixed/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/validation/tests/single/kernel_socket/pmd_kernel/video/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ecosystem/ffmpeg_plugin/.gitignore: -------------------------------------------------------------------------------- 1 | # generated file 2 | FFmpeg/ 3 | openh264/ 4 | -------------------------------------------------------------------------------- /tests/validation/configs/.gitignore: -------------------------------------------------------------------------------- 1 | /test_config.yaml 2 | /topology_config.yaml 3 | -------------------------------------------------------------------------------- /patches/dpdk/22.03/0002-Change-to-enable-PTP.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0002-Change-to-enable-PTP.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/0005-update-VF-rate-limit.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0005-update-VF-rate-limit.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/0006-Change-to-enable-PTP.patch: -------------------------------------------------------------------------------- 1 | ../22.07/0008-Change-to-enable-PTP.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/0005-Change-to-enable-PTP.patch: -------------------------------------------------------------------------------- 1 | ../22.07/0008-Change-to-enable-PTP.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/0005-Change-to-enable-PTP.patch: -------------------------------------------------------------------------------- 1 | ../22.07/0008-Change-to-enable-PTP.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/0005-Change-to-enable-PTP.patch: -------------------------------------------------------------------------------- 1 | ../22.07/0008-Change-to-enable-PTP.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/0004-eanble-PF-ICE-rate-limit.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0004-eanble-PF-ICE-rate-limit.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/0008-net-ice-support-256-queues.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0008-net-ice-support-256-queues.patch -------------------------------------------------------------------------------- /tests/validation/common/integrity/requirements.txt: -------------------------------------------------------------------------------- 1 | opencv-python~=4.11.0 2 | pytesseract~=0.3.13 3 | -------------------------------------------------------------------------------- /doc/png/netuio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/netuio.png -------------------------------------------------------------------------------- /doc/png/tasklet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/tasklet.png -------------------------------------------------------------------------------- /tools/ebpf/.gitignore: -------------------------------------------------------------------------------- 1 | # generated file 2 | et 3 | *.skel.h 4 | vmlinux.h 5 | *.o 6 | lcore_monitor 7 | udp_monitor -------------------------------------------------------------------------------- /doc/doxygen/setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/setup.png -------------------------------------------------------------------------------- /doc/png/instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/instance.png -------------------------------------------------------------------------------- /doc/png/tx_pacing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/tx_pacing.png -------------------------------------------------------------------------------- /doc/png/virt2phy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/virt2phy.png -------------------------------------------------------------------------------- /patches/dpdk/22.03/0001-build-enable-IEEE1588-PTP-option.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0001-build-enable-IEEE1588-PTP-option.patch -------------------------------------------------------------------------------- /doc/png/tx_zero_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/tx_zero_copy.png -------------------------------------------------------------------------------- /patches/dpdk/22.03/0007-pcapng-add-ns-timestamp-for-copy-api.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0007-pcapng-add-ns-timestamp-for-copy-api.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/0001-pcapng-add-ns-timestamp-for-copy-api.patch: -------------------------------------------------------------------------------- 1 | ../22.03/0007-pcapng-add-ns-timestamp-for-copy-api.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/0001-pcapng-add-ns-timestamp-for-copy-api.patch: -------------------------------------------------------------------------------- 1 | ../23.03/0001-pcapng-add-ns-timestamp-for-copy-api.patch -------------------------------------------------------------------------------- /.textlintrc: -------------------------------------------------------------------------------- 1 | { 2 | "filters": { 3 | "comments": true 4 | }, 5 | "rules": { 6 | "terminology": true 7 | } 8 | } -------------------------------------------------------------------------------- /doc/png/rx_dma_offload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/rx_dma_offload.png -------------------------------------------------------------------------------- /doc/png/software_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/software_stack.png -------------------------------------------------------------------------------- /patches/ice_drv/1.12.6/0001-vf-support-kahawai-runtime-rl-queue.patch: -------------------------------------------------------------------------------- 1 | ../1.11.17.1/0001-vf-support-kahawai-runtime-rl-queue.patch -------------------------------------------------------------------------------- /python/swig/.gitignore: -------------------------------------------------------------------------------- 1 | # generated file 2 | *.c 3 | *.so 4 | __pycache__ 5 | pymtl.py 6 | build 7 | dist 8 | pymtl.egg-info 9 | -------------------------------------------------------------------------------- /patches/dpdk/22.11/0002-net-af_xdp-parse-numa-node-id-from-sysfs.patch: -------------------------------------------------------------------------------- 1 | ../22.07/0002-net-af_xdp-parse-numa-node-id-from-sysfs.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/0004-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | ../22.11/0005-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/0004-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | ../22.11/0005-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/0004-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | ../22.11/0005-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch -------------------------------------------------------------------------------- /patches/ice_drv/1.11.17.1/0001-vf-support-kahawai-runtime-rl-queue.patch: -------------------------------------------------------------------------------- 1 | ../1.11.14/0001-vf-support-kahawai-runtime-rl-queue.patch -------------------------------------------------------------------------------- /.github/linters/actionlint.yaml: -------------------------------------------------------------------------------- 1 | self-hosted-runner: 2 | labels: 3 | - dpdk 4 | - e810 5 | - e810-dell 6 | - e830 7 | -------------------------------------------------------------------------------- /doc/doxygen/EssenceStreams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/EssenceStreams.png -------------------------------------------------------------------------------- /doc/doxygen/streamsOverview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/streamsOverview.png -------------------------------------------------------------------------------- /patches/dpdk/22.03/0003-net-ice-support-max-burst-size-configuration.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0003-net-ice-support-max-burst-size-configuration.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/0009-net-iavf-refine-queue-rate-limit-configure.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0009-net-iavf-refine-queue-rate-limit-configure.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/0003-net-iavf-refine-queue-rate-limit-configure.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0009-net-iavf-refine-queue-rate-limit-configure.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/0003-net-iavf-refine-queue-rate-limit-configure.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0009-net-iavf-refine-queue-rate-limit-configure.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/0002-net-iavf-refine-queue-rate-limit-configure.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0009-net-iavf-refine-queue-rate-limit-configure.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/0002-net-iavf-refine-queue-rate-limit-configure.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0009-net-iavf-refine-queue-rate-limit-configure.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/0002-net-iavf-refine-queue-rate-limit-configure.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0009-net-iavf-refine-queue-rate-limit-configure.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/windows/0011-Use-MinGW-pthread-implementations.patch: -------------------------------------------------------------------------------- 1 | ../../23.07/windows/0013-Use-MinGW-pthread-implementations.patch -------------------------------------------------------------------------------- /doc/png/desktop-streaming-mtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/desktop-streaming-mtl.png -------------------------------------------------------------------------------- /doc/png/mtl-appliance-use-case.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/mtl-appliance-use-case.png -------------------------------------------------------------------------------- /patches/dpdk/22.03/0006-net-iavf-support-max-burst-size-configuration.patch: -------------------------------------------------------------------------------- 1 | ../21.11/0006-net-iavf-support-max-burst-size-configuration.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0011-Fix-list-dir-glob-expassion-in-msys2.patch: -------------------------------------------------------------------------------- 1 | ../../22.11/windows/0012-Fix-list-dir-glob-expassion-in-msys2.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/windows/0010-Fix-list-dir-glob-expassion-in-msys2.patch: -------------------------------------------------------------------------------- 1 | ../../23.07/windows/0010-Fix-list-dir-glob-expassion-in-msys2.patch -------------------------------------------------------------------------------- /patches/ice_drv/1.11.17.1/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | ../1.11.14/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch -------------------------------------------------------------------------------- /patches/ice_drv/1.12.6/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | ../1.11.17.1/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch -------------------------------------------------------------------------------- /doc/doxygen/api.md: -------------------------------------------------------------------------------- 1 | API 2 | === 3 | 4 | The public API headers are grouped by topics: 5 | 6 | - **device,session**: 7 | [API] (@ref mtl_api.h) 8 | -------------------------------------------------------------------------------- /doc/doxygen/detailedArchitecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/detailedArchitecture.png -------------------------------------------------------------------------------- /doc/doxygen/overallArchitecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/overallArchitecture.png -------------------------------------------------------------------------------- /doc/doxygen/unicastArchitecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/unicastArchitecture.png -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0001-Add-DDP-package-load-support-in-windows.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0001-Add-DDP-package-load-support-in-windows.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0001-Add-DDP-package-load-support-in-windows.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0001-Add-DDP-package-load-support-in-windows.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0001-Add-DDP-package-load-support-in-windows.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0001-Add-DDP-package-load-support-in-windows.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0001-Add-DDP-package-load-support-in-windows.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0001-Add-DDP-package-load-support-in-windows.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0001-Add-DDP-package-load-support-in-windows.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0001-Add-DDP-package-load-support-in-windows.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/windows/0001-Add-DDP-package-load-support-in-windows.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0001-Add-DDP-package-load-support-in-windows.patch -------------------------------------------------------------------------------- /tests/validation/setup.cfg: -------------------------------------------------------------------------------- 1 | [flake8] 2 | ignore = E501,E203,W503 3 | max-line-length=120 4 | exclude = 5 | .venv 6 | .vscode 7 | logs 8 | -------------------------------------------------------------------------------- /doc/doxygen/build-doc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | doxygen Kahawai 7 | -------------------------------------------------------------------------------- /doc/doxygen/multicastArchitecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/multicastArchitecture.png -------------------------------------------------------------------------------- /doc/doxygen/softwareDeploymentModel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/doxygen/softwareDeploymentModel.png -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0003-Mingw-compiler-do-have-same-implementation.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0003-Mingw-compiler-do-have-same-implementation.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0010-Windows-version-currently-no-BPF-support.patch: -------------------------------------------------------------------------------- 1 | ../../22.03/windows/0010-Windows-version-currently-no-BPF-support.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0010-Windows-version-currently-no-BPF-support.patch: -------------------------------------------------------------------------------- 1 | ../../22.03/windows/0010-Windows-version-currently-no-BPF-support.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0003-Mingw-compiler-do-have-same-implementation.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0009-Windows-version-currently-no-BPF-support.patch: -------------------------------------------------------------------------------- 1 | ../../22.03/windows/0010-Windows-version-currently-no-BPF-support.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0003-Mingw-compiler-do-have-same-implementation.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0003-Mingw-compiler-do-have-same-implementation.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/0004-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch: -------------------------------------------------------------------------------- 1 | ../22.07/0004-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/0003-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch: -------------------------------------------------------------------------------- 1 | ../22.07/0004-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0012-Use-alarm-to-workaround-vf-uio-no-intr-issue.patch: -------------------------------------------------------------------------------- 1 | ../../22.11/windows/0013-Use-alarm-to-workaround-vf-uio-no-intr-issue.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/0001-e810-set-max-ring-desc-to-8160-which-e810-max-allowe.patch: -------------------------------------------------------------------------------- 1 | ../23.07/0006-e810-set-max-ring-desc-to-8160-which-e810-max-allowe.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/0003-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch: -------------------------------------------------------------------------------- 1 | ../23.07/0003-net-ice-revert-PF-ICE-rate-limit-to-non-queue-group-.patch -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: monthly 7 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | # global-owner 5 | * @Sakoram @DawidWesierski4 @Falron98 6 | -------------------------------------------------------------------------------- /app/v4l2_to_ip/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | v4l2_to_ip_sources = files('v4l2_to_ip.c') 5 | -------------------------------------------------------------------------------- /doc/png/compliance/vero_1080p50_analysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_1080p50_analysis.png -------------------------------------------------------------------------------- /doc/png/compliance/vero_1080p50_summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_1080p50_summary.png -------------------------------------------------------------------------------- /doc/png/compliance/vero_2160p50_analysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_2160p50_analysis.png -------------------------------------------------------------------------------- /doc/png/compliance/vero_2160p50_summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_2160p50_summary.png -------------------------------------------------------------------------------- /doc/png/yuview_yuv422rfc4175be10_layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/yuview_yuv422rfc4175be10_layout.png -------------------------------------------------------------------------------- /ecosystem/ffmpeg_plugin/ffmpeg_st22_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/ecosystem/ffmpeg_plugin/ffmpeg_st22_flow.png -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0009-Remove-affinity-binding-for-windows-will-have.patch: -------------------------------------------------------------------------------- 1 | ../../23.03/windows/0010-Remove-affinity-binding-for-windows-will-have.patch -------------------------------------------------------------------------------- /patches/ice_drv/1.16.3/0003-vf-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VS.patch: -------------------------------------------------------------------------------- 1 | ../1.14.9/0003-vf-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VS.patch -------------------------------------------------------------------------------- /rust/examples/version.rs: -------------------------------------------------------------------------------- 1 | use imtl::version; 2 | 3 | fn main() { 4 | let v = version::version(); 5 | println!("current imtl version is {}", v); 6 | } 7 | -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0006-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0008-Windows-dsa-driver-need-set-to-reset-status-first.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0005-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0007-Windows-dsa-driver-need-set-to-reset-status-first.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0009-Windows-dsa-driver-need-set-to-reset-status-first.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/tsn/0001-igc-optimize-LaunchTime-Tx-Qbv-configuration-and-PTP.patch: -------------------------------------------------------------------------------- 1 | ../../23.07/tsn/0001-igc-optimize-LaunchTime-Tx-Qbv-configuration-and-PTP.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/windows/0005-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0007-Enable-descriptor-prefetch-for-CBDMA-version-3.4.patch -------------------------------------------------------------------------------- /tests/validation/common/ffmpeg_handler/mtl_st30p.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2025 Intel Corporation 3 | # Media Communications Mesh 4 | -------------------------------------------------------------------------------- /doc/png/compliance/pharbrix_1080p50_analyser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/pharbrix_1080p50_analyser.png -------------------------------------------------------------------------------- /doc/png/compliance/pharbrix_2160p50_analyser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/pharbrix_2160p50_analyser.png -------------------------------------------------------------------------------- /doc/png/compliance/vero_1080p50_vrx_per_frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_1080p50_vrx_per_frame.png -------------------------------------------------------------------------------- /doc/png/compliance/vero_2160p50_vrx_per_frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_2160p50_vrx_per_frame.png -------------------------------------------------------------------------------- /gpu_direct/meson_options.txt: -------------------------------------------------------------------------------- 1 | # Add a new option for running unit tests 2 | option('enable_tests', type: 'boolean', value: false, description: 'Enable running unit tests') -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch -------------------------------------------------------------------------------- /patches/dpdk/22.07/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0005-To-change-for-windows-trained-pad_interval-pass-in-v.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0006-Add-Windows-10-May-2019-and-newer-version-1GB-huge-p.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch -------------------------------------------------------------------------------- /patches/dpdk/22.11/windows/0011-Remove-affinity-binding-for-windows-will-have-perfor.patch: -------------------------------------------------------------------------------- 1 | ../../22.07/windows/0011-Remove-affinity-binding-for-windows-will-have-perfor.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0004-Mingw-do-have-pthread-implementation-change-to-adapt.patch -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0007-Windows-need-set-the-timer-resolution-to-maximum-to-.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0006-Windows-need-set-the-timer-resolution-to-maximum-to-.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0002-Change-list-remove-and-add-position-to-avoid-race-co.patch -------------------------------------------------------------------------------- /patches/dpdk/23.11/windows/0006-Windows-need-set-the-timer-resolution-to-maximum-to-.patch: -------------------------------------------------------------------------------- 1 | ../../21.11/windows/0008-Windows-need-set-the-timer-resolution-to-maximum-to-.patch -------------------------------------------------------------------------------- /tools/sch_smi_emulate/Makefile: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | all: 5 | gcc sch_smi_emulate.c -o sch_smi_emulate 6 | -------------------------------------------------------------------------------- /doc/png/compliance/vero_1080p50_cinst_per_frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_1080p50_cinst_per_frame.png -------------------------------------------------------------------------------- /doc/png/compliance/vero_2160p50_cinst_per_frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/doc/png/compliance/vero_2160p50_cinst_per_frame.png -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/experimental/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2024 Intel Corporation 3 | 4 | sources += files('rx_st20r_app.c') 5 | -------------------------------------------------------------------------------- /lib/src/udp/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | sources += files( 5 | 'udp_rxq.c', 'udp_main.c', 'ufd_main.c', 6 | ) -------------------------------------------------------------------------------- /lib/src/st2110/experimental/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | sources += files( 5 | 'st20_redundant_combined_rx.c', 6 | ) 7 | -------------------------------------------------------------------------------- /.github/linters/.hadolint.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | ########################## 3 | ## Hadolint config file ## 4 | ########################## 5 | ignored: 6 | - DL3008 # Ignore pinned versions check for APT -------------------------------------------------------------------------------- /.github/linters/.clang-format: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: GPL-2.0 2 | --- 3 | BasedOnStyle: Google 4 | DerivePointerAlignment: false 5 | ColumnLimit: 90 6 | AllowShortFunctionsOnASingleLine: None 7 | -------------------------------------------------------------------------------- /tools/readpcap/Makefile: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | all: 5 | gcc readpcap.c -o readpcap -lpcap 6 | gcc readpcap_31.c -o readpcap_31 -lpcap 7 | -------------------------------------------------------------------------------- /rust/imtl-sys/wrapper.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include -------------------------------------------------------------------------------- /script/dos2unix.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2023 Intel Corporation 5 | 6 | set -e 7 | 8 | echo "dos2unix check" 9 | find . -regex '.*' -exec dos2unix {} \; 10 | -------------------------------------------------------------------------------- /tests/tools/latency_measurement/ffmpeg_based_latency_solution_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenVisualCloud/Media-Transport-Library/HEAD/tests/tools/latency_measurement/ffmpeg_based_latency_solution_diagram.jpg -------------------------------------------------------------------------------- /app/meson_options.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | option('enable_asan', type: 'boolean', value: false, description: 'enable/disable address sanitizer, debug usage only') -------------------------------------------------------------------------------- /app/sample/msvc/imtl_sample/imtl_sample.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/tools/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | conv_sources = files('convert_app.c', 'convert_app_args.c') 5 | 6 | lcore_mgr_sources = files('lcore_shmem_mgr.c') 7 | -------------------------------------------------------------------------------- /manager/meson_options.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | option('enable_asan', type: 'boolean', value: false, description: 'enable/disable address sanitizer, debug usage only') -------------------------------------------------------------------------------- /plugins/meson_options.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | option('enable_asan', type: 'boolean', value: false, description: 'enable/disable address sanitizer, debug usage only') -------------------------------------------------------------------------------- /tools/sch_smi_emulate/README: -------------------------------------------------------------------------------- 1 | 1. Usage: emulate a busy task on CPU. 2 | 2. Build: 3 | make 4 | 3. Run: eg run a work which sleep 100 ms then work 100 us on cpu 29 5 | numactl -C 29 ./sch_smi_emulate --sleep_ms 100 --work_us 100 -------------------------------------------------------------------------------- /ld_preload/meson_options.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | option('enable_asan', type: 'boolean', value: false, description: 'enable/disable address sanitizer, debug usage only') -------------------------------------------------------------------------------- /python/example/version.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | """Module of MTL version example.""" 5 | 6 | import pymtl as mtl 7 | 8 | print(f"mtl_version: {mtl.mtl_version()}") 9 | -------------------------------------------------------------------------------- /tests/meson_options.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | option('enable_asan', type: 'boolean', value: false, description: 'enable/disable address sanitizer, debug usage only') 5 | -------------------------------------------------------------------------------- /doc/chunks/_build_install_ice_driver.md: -------------------------------------------------------------------------------- 1 | 2 | ```bash 3 | cd src 4 | make 5 | sudo make install 6 | # sudo rmmod irdma 2>/dev/null 7 | sudo rmmod ice 8 | sudo modprobe ice 9 | cd - 10 | ``` 11 | -------------------------------------------------------------------------------- /plugins/sample/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | plugins_st22_sample_sources = files('st22_plugin_sample.c') 5 | plugins_convert_sample_sources = files('convert_plugin_sample.c') -------------------------------------------------------------------------------- /lib/src/dev/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | sources += files( 5 | 'mt_dev.c', 6 | ) 7 | 8 | if mtl_has_xdp_backend 9 | sources += files('mt_af_xdp.c') 10 | endif 11 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/meson_options.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | option('enable_asan', type: 'boolean', value: false, description: 'enable/disable address sanitizer, debug usage only') -------------------------------------------------------------------------------- /lib/src/datapath/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | sources += files( 5 | 'mt_queue.c', 6 | 'mt_shared_queue.c', 7 | 'mt_shared_rss.c', 8 | 'mt_dp_socket.c', 9 | ) 10 | -------------------------------------------------------------------------------- /rust/src/imtl/lib.rs: -------------------------------------------------------------------------------- 1 | #![crate_name = "imtl"] 2 | #![crate_type = "lib"] 3 | 4 | pub extern crate imtl_sys as sys; 5 | 6 | pub mod mtl; 7 | pub mod netdev; 8 | pub mod session; 9 | pub mod version; 10 | pub mod video; 11 | pub mod audio; 12 | -------------------------------------------------------------------------------- /tests/validation/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | log_file=pytest.log 3 | markers= 4 | smoke: mark test as part of the smoke test suite 5 | nightly: mark test as part of the nightly test suite 6 | dual: mark test as part of the dual host test suite 7 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/legacy/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2024 Intel Corporation 3 | 4 | sources += files('tx_audio_app.c', 'rx_audio_app.c', 5 | 'tx_video_app.c', 'rx_video_app.c', 6 | 'tx_st22_app.c', 'rx_st22_app.c', 7 | ) 8 | -------------------------------------------------------------------------------- /tests/validation/mtl_engine/const.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright(c) 2024-2025 Intel Corporation 3 | 4 | LOG_FOLDER = "logs" 5 | TESTCMD_LVL = 24 # Custom logging level for test commands 6 | FRAMES_CAPTURE = 4 # Number of frames to capture for compliance tests 7 | -------------------------------------------------------------------------------- /tests/integration_tests/noctx/testcases/st20p_user_timestamp_tests.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2025 Intel Corporation 3 | */ 4 | 5 | #include "core/constants.hpp" 6 | #include "core/test_fixture.hpp" 7 | #include "handlers/st20p_handler.hpp" 8 | #include "strategies/st20p_strategies.hpp" -------------------------------------------------------------------------------- /rust/imtl-sys/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "imtl-sys" 3 | version = "0.1.1" 4 | edition = "2021" 5 | 6 | [lib] 7 | name = "imtl_sys" 8 | path = "src/lib.rs" 9 | 10 | [dependencies] 11 | 12 | [dev-dependencies] 13 | rand = "0.8.5" 14 | 15 | [build-dependencies] 16 | bindgen = "0.69.4" 17 | pkg-config = "0.3.30" 18 | -------------------------------------------------------------------------------- /script/build_python.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2023 Intel Corporation 5 | 6 | set -e 7 | 8 | cd python/swig 9 | swig -python -I/usr/local/include -o pymtl_wrap.c pymtl.i 10 | python3 setup.py build_ext --inplace 11 | sudo python3 setup.py install 12 | cd ../../ 13 | -------------------------------------------------------------------------------- /gpu_direct/run_tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Downloading fff.library" 4 | wget https://raw.githubusercontent.com/meekrosoft/fff/refs/heads/master/fff.h -O ./tests/fff.h 5 | 6 | echo "Compiling the library" 7 | meson setup build -Denable_tests=true && cd build || exit 8 | 9 | echo "Running the tests" 10 | meson test 11 | -------------------------------------------------------------------------------- /tests/integration_tests/noctx/core/constants.hpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2025 Intel Corporation 3 | */ 4 | 5 | #pragma once 6 | 7 | #ifndef SESSION_SKIP_PORT 8 | #define SESSION_SKIP_PORT -1 9 | #endif 10 | 11 | #ifndef VIDEO_CLOCK_HZ 12 | #define VIDEO_CLOCK_HZ 90000 13 | #endif 14 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/loop_json/random_ip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | set -e 7 | 8 | SUB1=$((RANDOM % 256)) 9 | SUB2=$((RANDOM % 256)) 10 | 11 | echo "Change IP to $SUB1.$SUB2" 12 | 13 | sed -i 's/.168.17./.'"$SUB1"'.'"${SUB2}"'./g' ./*.json 14 | -------------------------------------------------------------------------------- /tools/readpcap/README: -------------------------------------------------------------------------------- 1 | 1. Usage: analyze the interval(ns) between two packets in one frame. 2 | 2. Dependency: 3 | ubuntu: apt-get install libpcap-dev 4 | centos: yum install libpcap-devel 5 | 3. Build: 6 | make 7 | 4. Run: 8 | e.g. Dump the pkt interval(ns) for frame 3 in the pcap file to a csv file. 9 | ./readpcap 4k.pcap 3 > 4k.csv -------------------------------------------------------------------------------- /lib/src/mt_admin.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_ADMIN_HEAD_H_ 6 | #define _MT_LIB_ADMIN_HEAD_H_ 7 | 8 | #include "mt_main.h" 9 | 10 | int mt_admin_init(struct mtl_main_impl* impl); 11 | int mt_admin_uinit(struct mtl_main_impl* impl); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /lib/src/mt_config.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_CONFIG_HEAD_H_ 6 | #define _MT_LIB_CONFIG_HEAD_H_ 7 | 8 | #include "mt_main.h" 9 | 10 | int mt_config_init(struct mtl_main_impl* impl); 11 | int mt_config_uinit(struct mtl_main_impl* impl); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/loop_json/change_port.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | set -e 7 | 8 | echo "Change P interface to 0000:af:00.0" 9 | sed -i 's/0000:af:01.0/0000:af:00.0/g' ./*.json 10 | echo "Change R interface to 0000:af:00.1" 11 | sed -i 's/0000:af:01.1/0000:af:00.1/g' ./*.json 12 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/args.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | 7 | #ifndef _ST_APP_ARGS_HEAD_H_ 8 | #define _ST_APP_ARGS_HEAD_H_ 9 | 10 | int st_app_parse_args(struct st_app_context* ctx, struct mtl_init_params* p, int argc, 11 | char** argv); 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /lib/src/st2110/pipeline/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | sources += files( 5 | 'st_plugin.c', 6 | 'st22_pipeline_tx.c', 7 | 'st22_pipeline_rx.c', 8 | 'st20_pipeline_tx.c', 9 | 'st20_pipeline_rx.c', 10 | 'st30_pipeline_tx.c', 11 | 'st30_pipeline_rx.c', 12 | 'st40_pipeline_tx.c', 13 | 'st40_pipeline_rx.c', 14 | ) 15 | -------------------------------------------------------------------------------- /lib/src/st2110/st_tx_audio_session.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_TX_AUDIO_SESSION_HEAD_H_ 6 | #define _ST_LIB_TX_AUDIO_SESSION_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | #define ST_TX_AUDIO_PREFIX "TA_" 11 | 12 | int st_tx_audio_sessions_sch_uinit(struct mtl_sch_impl* sch); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /lib/src/st2110/st_tx_ancillary_session.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_TX_ANCILLARY_SESSION_HEAD_H_ 6 | #define _ST_LIB_TX_ANCILLARY_SESSION_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | #define ST_TX_ANCILLARY_PREFIX "TC_" 11 | 12 | int st_tx_ancillary_sessions_sch_uinit(struct mtl_sch_impl* sch); 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /lib/src/st2110/st_rx_audio_session.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_RX_AUDIO_SESSION_HEAD_H_ 6 | #define _ST_LIB_RX_AUDIO_SESSION_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | #define ST_RX_AUDIO_BURST_SIZE (128) 11 | 12 | #define ST_RX_AUDIO_PREFIX "RA_" 13 | 14 | int st_rx_audio_sessions_sch_uinit(struct mtl_sch_impl* sch); 15 | 16 | #endif -------------------------------------------------------------------------------- /ecosystem/obs_mtl/linux-mtl/data/locale/zh-CN.ini: -------------------------------------------------------------------------------- 1 | MTLInput="MTL 接收端" 2 | MTLOutput="MTL 发送端" 3 | Width="宽" 4 | Height="高" 5 | FPS="帧率" 6 | Port="网卡端口" 7 | Lcores="绑核(cpuset)" 8 | InterfaceIP="设置网卡IP" 9 | IP="RTP会话IP" 10 | UdpPort="UDP端口" 11 | TransportFormat="传输格式" 12 | VideoFormat="视频格式" 13 | PayloadType="RTP有效负载(载荷)类型" 14 | FramebuffCnt="帧缓冲数量" 15 | Start="开始" 16 | Stop="停止" 17 | Started="已开始" 18 | Stopped="已停止" 19 | LogLevel="日志等级" -------------------------------------------------------------------------------- /security.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation. 4 | 5 | ## Reporting a Vulnerability 6 | 7 | Please report any security vulnerabilities in this project utilizing the guidelines [here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html). 8 | -------------------------------------------------------------------------------- /lib/src/st2110/st_rx_ancillary_session.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_RX_ANCILLARY_SESSION_HEAD_H_ 6 | #define _ST_LIB_RX_ANCILLARY_SESSION_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | #define ST_RX_ANCILLARY_BURST_SIZE (128) 11 | 12 | #define ST_RX_ANCILLARY_PREFIX "RC_" 13 | 14 | int st_rx_ancillary_sessions_sch_uinit(struct mtl_sch_impl* sch); 15 | 16 | #endif -------------------------------------------------------------------------------- /tests/validation/configs/examples/topology_config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | metadata: 3 | version: '2.4' 4 | hosts: 5 | - name: host 6 | instantiate: true 7 | role: sut 8 | network_interfaces: 9 | - pci_device: 8086:1592 10 | interface_index: 0 11 | connections: 12 | - ip_address: 127.0.0.1 13 | connection_type: SSHConnection 14 | connection_options: 15 | port: 22 16 | username: user 17 | password: user 18 | key_path: None 19 | -------------------------------------------------------------------------------- /versions.env: -------------------------------------------------------------------------------- 1 | DPDK_VER=25.11 2 | ICE_VER=2.2.8 3 | ICE_DMID=859252 4 | ONE_API_GPU_VER=1.22.3 5 | LIBRIST_COMMIT_VER=9f09a3defd6e59839aae3e3b7b5411213fa04b8a 6 | RUST_HOOK_CARGO_VER=0.5.5 7 | FFMPEG_VERSION=7.0 8 | 9 | DPDK_REPO=https://github.com/dpdk/dpdk/archive/refs/tags/v${DPDK_VER}.tar.gz 10 | ICE_REPO=https://downloadmirror.intel.com/${ICE_DMID}/ice-${ICE_VER}.tar.gz 11 | ONE_API_REPO=https://github.com/oneapi-src/level-zero/archive/refs/tags/v${ONE_API_GPU_VER}.tar.gz 12 | -------------------------------------------------------------------------------- /lib/src/st2110/st_tx_fastmetadata_session.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * SPDX-FileCopyrightText: Copyright (c) 2024 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_TX_FASTMETADATA_SESSION_HEAD_H_ 6 | #define _ST_LIB_TX_FASTMETADATA_SESSION_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | #define ST_TX_FASTMETADATA_PREFIX "TF_" 11 | 12 | int st_tx_fastmetadata_sessions_sch_uinit(struct mtl_sch_impl* sch); 13 | 14 | #endif /* _ST_LIB_TX_FASTMETADATA_SESSION_HEAD_H_ */ 15 | -------------------------------------------------------------------------------- /script/if_filter_delete.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2023 Intel Corporation 5 | 6 | set -e 7 | 8 | if [ $# -lt 1 ]; then 9 | echo "Please specify the network interface" 10 | exit 0 11 | fi 12 | 13 | if_name=$1 14 | 15 | echo "Start to delete all filters for $if_name" 16 | for rule in $(ethtool -n "$if_name" | grep 'Filter:' | awk '{print $2}'); do 17 | echo "Delete filter $rule" 18 | ethtool -N "$if_name" delete "$rule" 19 | done 20 | -------------------------------------------------------------------------------- /tests/integration_tests/st20/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | 3 | st20_sources = files( 4 | 'st20_after_start.cpp', 5 | 'st20_common.cpp', 6 | 'st20_detect.cpp', 7 | 'st20_digest.cpp', 8 | 'st20_dump.cpp', 9 | 'st20_ext_frame.cpp', 10 | 'st20_fps.cpp', 11 | 'st20_linesize_digest.cpp', 12 | 'st20_meta.cpp', 13 | 'st20_create.cpp', 14 | 'st20_uframe.cpp', 15 | 'st20_update_source.cpp', 16 | 'st20_user_pacing.cpp', 17 | ) 18 | -------------------------------------------------------------------------------- /doc/doxygen.md: -------------------------------------------------------------------------------- 1 | # Doxygen Guide for APIs 2 | 3 | ## 1. Install the doxygen tools 4 | 5 | ### 1.1. Ubuntu/Debian 6 | 7 | ```bash 8 | sudo apt-get install doxygen 9 | ``` 10 | 11 | ### 1.2. CentOS 12 | 13 | ```bash 14 | sudo yum install doxygen 15 | ``` 16 | 17 | ## 2. Build 18 | 19 | Just run below command in the top tree of this project, then check doxygen/HTML/index.html for the doxygen documents. 20 | 21 | ```bash 22 | cd doc/doxygen 23 | rm doc/html/ -rf 24 | source build-doc.sh 25 | ``` 26 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .dockerignore 2 | .git/ 3 | .gitignore 4 | .github/ 5 | .clang-format 6 | .vscode/ 7 | .cache/ 8 | 9 | CODEOWNERS 10 | LICENSE 11 | README.md 12 | doc 13 | 14 | *.log 15 | *.patch 16 | *.diff 17 | *.yuv 18 | *.pcapng 19 | *.pcap 20 | *.raw 21 | *.dat 22 | *.json 23 | !kahawai.json 24 | html/ 25 | test.* 26 | build/ 27 | core* 28 | out* 29 | assets/ 30 | *.pkg 31 | *.jxs 32 | *.mkv 33 | *.zip 34 | *.gz 35 | *.tar 36 | mtl_system_status_* 37 | *.pyc 38 | *.mp4 39 | tests/tools/RxTxApp/build 40 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/gitleaks/gitleaks 3 | rev: v8.16.3 4 | hooks: 5 | - id: gitleaks 6 | - repo: https://github.com/jumanjihouse/pre-commit-hooks 7 | rev: 3.0.0 8 | hooks: 9 | - id: shellcheck 10 | - repo: https://github.com/pocc/pre-commit-hooks 11 | rev: v1.3.5 12 | hooks: 13 | - id: cpplint 14 | - repo: https://github.com/pre-commit/pre-commit-hooks 15 | rev: v4.4.0 16 | hooks: 17 | - id: end-of-file-fixer 18 | - id: trailing-whitespace 19 | -------------------------------------------------------------------------------- /ecosystem/obs_mtl/linux-mtl/data/locale/en-US.ini: -------------------------------------------------------------------------------- 1 | MTLInput="MTL RX" 2 | MTLOutput="MTL TX" 3 | Width="Width" 4 | Height="Height" 5 | FPS="FPS" 6 | Port="NIC port" 7 | Lcores="Lcores(cpuset)" 8 | InterfaceIP="Assign NIC IP" 9 | IP="Session IP" 10 | UdpPort="UDP port" 11 | TransportFormat="Transport Format" 12 | VideoFormat="Video Format" 13 | PayloadType="Payload Type" 14 | FramebuffCnt="Total Framebuffers" 15 | Start="Start" 16 | Stop="Stop" 17 | Started="Started" 18 | Stopped="Stopped" 19 | LogLevel="Log Level" -------------------------------------------------------------------------------- /rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "imtl-rs" 3 | version = "0.1.4" 4 | edition = "2021" 5 | 6 | [lib] 7 | name = "imtl" 8 | path = "src/imtl/lib.rs" 9 | 10 | [dependencies] 11 | derive_builder = "0.20.0" 12 | bitflags = "2.5.0" 13 | anyhow = "1.0.82" 14 | crossbeam-utils = "0.8.19" 15 | 16 | [dependencies.imtl-sys] 17 | path = "imtl-sys" 18 | version = "^0.1.0" 19 | 20 | [dev-dependencies] 21 | ctrlc = "3.4.4" 22 | memmap2 = "0.9.4" 23 | clap = { version = "4.5.4", features = ["derive"] } 24 | sdl2 = "0.36.0" 25 | -------------------------------------------------------------------------------- /tests/validation/configs/examples/test_config.yaml: -------------------------------------------------------------------------------- 1 | session_id: 0 2 | build: /path/to/mtl 3 | mtl_path: /path/to/mtl 4 | media_path: /mnt/media 5 | ramdisk: 6 | media: 7 | mountpoint: /mnt/ramdisk/media 8 | size_gib: 32 9 | pcap: 10 | mountpoint: /mnt/ramdisk/pcap 11 | size_gib: 768 12 | compliance: false 13 | capture_cfg: 14 | enable: false 15 | pcap_dir: /mnt/ramdisk/pcap 16 | ebu_server: 17 | ebu_ip: ebu_ip 18 | user: user 19 | password: password 20 | proxy: false 21 | interface_type: VF 22 | -------------------------------------------------------------------------------- /tools/ebpf/udp_monitor.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 2 | * Copyright(c) 2024 Intel Corporation 3 | */ 4 | 5 | #ifndef __UDP_MONITOR_HEAD_H 6 | #define __UDP_MONITOR_HEAD_H 7 | 8 | struct udp_pkt_tuple { 9 | __be32 src_ip; 10 | __be32 dst_ip; 11 | union { 12 | __be32 ports; 13 | struct { 14 | __be16 src_port; 15 | __be16 dst_port; 16 | }; 17 | }; 18 | }; 19 | 20 | struct udp_pkt_entry { 21 | struct udp_pkt_tuple tuple; 22 | __u32 len; 23 | }; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /lib/src/st2110/st_rx_fastmetadata_session.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * SPDX-FileCopyrightText: Copyright (c) 2024 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_RX_FASTMETADATA_SESSION_HEAD_H_ 6 | #define _ST_LIB_RX_FASTMETADATA_SESSION_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | #define ST_RX_FASTMETADATA_BURST_SIZE (128) 11 | 12 | #define ST_RX_FASTMETADATA_PREFIX "RF_" 13 | 14 | int st_rx_fastmetadata_sessions_sch_uinit(struct mtl_sch_impl* sch); 15 | 16 | #endif /* _ST_LIB_RX_FASTMETADATA_SESSION_HEAD_H_ */ -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/redundant_json/README: -------------------------------------------------------------------------------- 1 | 1. Start tx. 2 | ./build/app/RxTxApp --config_file tests/script/redundant_json/tx.json 3 | 2. Start rx, BDF is hardcode now, chang it according to your setup. 4 | ./build/app/RxSt20RedundantSample 5 | 3. Run sch_smi_emulate on the rx lcore to simulate the frame drop in one lcore, the lcore number can be get from the rx log. 6 | numactl -C 28 ./sch_smi_emulate --sleep_ms 100 --work_us 100000 7 | 4. Check the rx fps and confirm it still can get all frame even if one rx session is in missing frames status. -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/legacy/rx_st22_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "../app_base.h" 11 | #include "../log.h" 12 | #include "../player.h" 13 | 14 | #ifndef _RX_APP_ST22_HEAD_H_ 15 | #define _RX_APP_ST22_HEAD_H_ 16 | 17 | int st22_app_rx_sessions_init(struct st_app_context* ctx); 18 | int st22_app_rx_sessions_uinit(struct st_app_context* ctx); 19 | 20 | #endif -------------------------------------------------------------------------------- /meson_options.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | option('enable_asan', type: 'boolean', value: false, description: 'enable/disable address sanitizer, debug usage only') 5 | option('enable_usdt', type: 'boolean', value: true, description: 'enable/disable USDT(User Statically-Defined Tracing) support') 6 | 7 | option('enable_tap', type: 'boolean', value: false, description: 'enable/disable Windows TAP') 8 | option('dpdk_root_dir', type: 'string', value: '..\dpdk', description: 'dpdk source code root dir, for Windows') -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/kernel_socket_json/ufd_client.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "port": "kernel:enp24s0f0", 5 | } 6 | ], 7 | "nb_udp_sockets": "64", 8 | "nb_nic_queues": "8", 9 | "nic_shared_tx_queues": false, 10 | "nic_shared_rx_queues": false, 11 | "udp_lcore": false, 12 | "rss": false, 13 | "nic_queue_rate_limit_g": "2", 14 | "log_level": "info", 15 | "rx_ring_count": "1024", 16 | "rx_poll_sleep_us": "0", 17 | "wake_thresh_count": "32", 18 | "wake_timeout_us": "1000", 19 | } -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | sources = files('rxtx_app.c', 'args.c', 'parse_json.c', 'fmt.c', 5 | 'tx_st20p_app.c', 'rx_st20p_app.c', 6 | 'tx_st22p_app.c', 'rx_st22p_app.c', 7 | 'tx_ancillary_app.c', 'rx_ancillary_app.c', 8 | 'tx_fastmetadata_app.c', 'rx_fastmetadata_app.c', 9 | 'tx_st30p_app.c', 'rx_st30p_app.c', 10 | ) 11 | 12 | if app_has_sdl2 13 | sources += files('player.c') 14 | endif 15 | 16 | subdir('legacy') 17 | subdir('experimental') 18 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/kernel_socket_json/ufd_server.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "port": "kernel:enp175s0f0np0", 5 | } 6 | ], 7 | "nb_udp_sockets": "64", 8 | "nb_nic_queues": "8", 9 | "nic_shared_tx_queues": false, 10 | "nic_shared_rx_queues": false, 11 | "udp_lcore": false, 12 | "rss": false, 13 | "nic_queue_rate_limit_g": "2", 14 | "log_level": "info", 15 | "rx_ring_count": "1024", 16 | "rx_poll_sleep_us": "0", 17 | "wake_thresh_count": "32", 18 | "wake_timeout_us": "1000", 19 | } -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/tx_ancillary_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "app_base.h" 11 | #include "log.h" 12 | 13 | #ifndef _TX_APP_ANC_HEAD_H_ 14 | #define _TX_APP_ANC_HEAD_H_ 15 | int st_app_tx_anc_sessions_init(struct st_app_context* ctx); 16 | 17 | int st_app_tx_anc_sessions_uinit(struct st_app_context* ctx); 18 | int st_app_tx_anc_sessions_stop(struct st_app_context* ctx); 19 | #endif -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/dpdk_af_xdp_json/ufd_client.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "port": "dpdk_af_xdp:enp175s0f1np1", 5 | } 6 | ], 7 | "nb_udp_sockets": "64", 8 | "nb_nic_queues": "8", 9 | "nic_shared_tx_queues": false, 10 | "nic_shared_rx_queues": false, 11 | "udp_lcore": false, 12 | "rss": false, 13 | "nic_queue_rate_limit_g": "2", 14 | "log_level": "info", 15 | "rx_ring_count": "1024", 16 | "rx_poll_sleep_us": "0", 17 | "wake_thresh_count": "32", 18 | "wake_timeout_us": "1000", 19 | } -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/dpdk_af_xdp_json/ufd_server.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "port": "dpdk_af_xdp:enp175s0f0np0", 5 | } 6 | ], 7 | "nb_udp_sockets": "64", 8 | "nb_nic_queues": "8", 9 | "nic_shared_tx_queues": false, 10 | "nic_shared_rx_queues": false, 11 | "udp_lcore": false, 12 | "rss": false, 13 | "nic_queue_rate_limit_g": "2", 14 | "log_level": "info", 15 | "rx_ring_count": "1024", 16 | "rx_poll_sleep_us": "0", 17 | "wake_thresh_count": "32", 18 | "wake_timeout_us": "1000", 19 | } -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/rx_ancillary_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "app_base.h" 11 | #include "log.h" 12 | 13 | #ifndef _RX_APP_ANC_HEAD_H_ 14 | #define _RX_APP_ANC_HEAD_H_ 15 | 16 | int st_app_rx_anc_sessions_init(struct st_app_context* ctx); 17 | 18 | int st_app_rx_anc_sessions_uinit(struct st_app_context* ctx); 19 | 20 | int st_app_rx_anc_sessions_result(struct st_app_context* ctx); 21 | 22 | #endif -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/legacy/tx_audio_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "../app_base.h" 11 | #include "../log.h" 12 | 13 | #ifndef _TX_APP_AUDIO_HEAD_H_ 14 | #define _TX_APP_AUDIO_HEAD_H_ 15 | int st_app_tx_audio_sessions_init(struct st_app_context* ctx); 16 | 17 | int st_app_tx_audio_sessions_uinit(struct st_app_context* ctx); 18 | 19 | int st_app_tx_audio_sessions_stop(struct st_app_context* ctx); 20 | #endif -------------------------------------------------------------------------------- /lib/src/mt_arp.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_ARP_HEAD_H_ 6 | #define _MT_LIB_ARP_HEAD_H_ 7 | 8 | #include "mt_main.h" 9 | 10 | int mt_arp_parse(struct mtl_main_impl* impl, struct rte_arp_hdr* hdr, enum mtl_port port); 11 | 12 | int mt_arp_init(struct mtl_main_impl* impl); 13 | int mt_arp_uinit(struct mtl_main_impl* impl); 14 | 15 | int mt_arp_get_mac(struct mtl_main_impl* impl, uint8_t dip[MTL_IP_ADDR_LEN], 16 | struct rte_ether_addr* ea, enum mtl_port port, int timeout_ms); 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /python/swig/setup.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | """Module of MTL python binding setup.""" 5 | 6 | from setuptools import Extension, setup 7 | 8 | pymtl_module = Extension( 9 | "_pymtl", 10 | sources=["pymtl_wrap.c"], 11 | # include_dirs=['/path/to/include'], 12 | # library_dirs=['/path/to/lib'], 13 | libraries=["mtl"], 14 | ) 15 | 16 | setup( 17 | name="pymtl", 18 | version="0.1", 19 | description="Python bindings for libmtl using SWIG", 20 | ext_modules=[pymtl_module], 21 | py_modules=["pymtl"], 22 | ) 23 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/legacy/tx_st22_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #define _GNU_SOURCE 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include "../app_base.h" 12 | #include "../log.h" 13 | 14 | #ifndef _TX_APP_ST22_HEAD_H_ 15 | #define _TX_APP_ST22_HEAD_H_ 16 | 17 | int st22_app_tx_sessions_init(struct st_app_context* ctx); 18 | int st22_app_tx_sessions_stop(struct st_app_context* ctx); 19 | int st22_app_tx_sessions_uinit(struct st_app_context* ctx); 20 | 21 | #endif -------------------------------------------------------------------------------- /tests/validation/mtl_engine/ip_pools.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | logger = logging.getLogger(__name__) 4 | 5 | rx: list[str] = [] 6 | rx_multicast: list[str] = [] 7 | tx: list[str] = [] 8 | 9 | 10 | def init(session_id: int, pool_size: int = 8) -> None: 11 | if pool_size > 128: 12 | logger.warning(f"Pool size was too big ({pool_size} > 128). Set to 128.") 13 | pool_size = 128 14 | for i in range(pool_size): 15 | rx.append(f"192.168.{session_id}.{i}") 16 | rx_multicast.append(f"239.0.{session_id}.{i}") 17 | tx.append(f"192.168.{session_id}.{pool_size + i}") 18 | -------------------------------------------------------------------------------- /app/udp/ufd_client.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "port": "0000:af:01.1", 5 | "ip": "192.168.85.60", 6 | "netmask": "255.255.254.0", 7 | } 8 | ], 9 | "nb_udp_sockets": "64", 10 | "nb_nic_queues": "8", 11 | "nic_shared_tx_queues": false, 12 | "nic_shared_rx_queues": false, 13 | "udp_lcore": false, 14 | "rss": false, 15 | "nic_queue_rate_limit_g": "2", 16 | "log_level": "info", 17 | "rx_ring_count": "1024", 18 | "rx_poll_sleep_us": "0", 19 | "wake_thresh_count": "32", 20 | "wake_timeout_us": "1000", 21 | } -------------------------------------------------------------------------------- /app/udp/ufd_server.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "port": "0000:af:01.0", 5 | "ip": "192.168.85.80", 6 | "netmask": "255.255.254.0", 7 | } 8 | ], 9 | "nb_udp_sockets": "64", 10 | "nb_nic_queues": "8", 11 | "nic_shared_tx_queues": false, 12 | "nic_shared_rx_queues": false, 13 | "udp_lcore": false, 14 | "rss": false, 15 | "nic_queue_rate_limit_g": "2", 16 | "log_level": "info", 17 | "rx_ring_count": "1024", 18 | "rx_poll_sleep_us": "0", 19 | "wake_thresh_count": "32", 20 | "wake_timeout_us": "1000", 21 | } -------------------------------------------------------------------------------- /tests/integration_tests/noctx/core/strategy.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2025 Intel Corporation 3 | */ 4 | 5 | #include "strategy.hpp" 6 | 7 | FrameTestStrategy::FrameTestStrategy(Handlers* parent, bool enable_tx_modifier, 8 | bool enable_rx_modifier) 9 | : parent(parent), 10 | idx_tx(0), 11 | idx_rx(0), 12 | expect_fps(0.0), 13 | enable_tx_modifier(enable_tx_modifier), 14 | enable_rx_modifier(enable_rx_modifier) { 15 | } 16 | 17 | FrameTestStrategy::~FrameTestStrategy() { 18 | parent = nullptr; 19 | } 20 | -------------------------------------------------------------------------------- /ld_preload/preload_platform.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2023 Intel Corporation 3 | */ 4 | 5 | #include 6 | 7 | #ifndef _MT_UDP_PRELOAD_PLATFORM_H_ 8 | #define _MT_UDP_PRELOAD_PLATFORM_H_ 9 | 10 | #ifdef WINDOWSENV /* Windows */ 11 | #include 12 | #include 13 | #else /* Linux */ 14 | #include 15 | #include 16 | #include 17 | #endif 18 | 19 | #ifdef WINDOWSENV 20 | typedef unsigned long int nfds_t; 21 | 22 | static inline pid_t getpid() { 23 | return GetCurrentProcessId(); 24 | } 25 | #endif 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /lib/src/st2110/st_ancillary_transmitter.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_ANCILLARY_TRANSMITTER_HEAD_H_ 6 | #define _ST_LIB_ANCILLARY_TRANSMITTER_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | int st_ancillary_transmitter_init(struct mtl_main_impl* impl, struct mtl_sch_impl* sch, 11 | struct st_tx_ancillary_sessions_mgr* mgr, 12 | struct st_ancillary_transmitter_impl* trs); 13 | int st_ancillary_transmitter_uinit(struct st_ancillary_transmitter_impl* trs); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/tx_fastmetadata_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * SPDX-FileCopyrightText: Copyright (c) 2024 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "app_base.h" 11 | #include "log.h" 12 | 13 | #ifndef _TX_APP_FMD_HEAD_H_ 14 | #define _TX_APP_FMD_HEAD_H_ 15 | int st_app_tx_fmd_sessions_init(struct st_app_context* ctx); 16 | 17 | int st_app_tx_fmd_sessions_uinit(struct st_app_context* ctx); 18 | int st_app_tx_fmd_sessions_stop(struct st_app_context* ctx); 19 | #endif /* _TX_APP_FMD_HEAD_H_ */ -------------------------------------------------------------------------------- /lib/src/st2110/st_main.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_ST_MAIN_H_ 6 | #define _MT_LIB_ST_MAIN_H_ 7 | 8 | #include "../dev/mt_dev.h" 9 | #include "../mt_dma.h" 10 | #include "../mt_main.h" 11 | #include "../mt_mcast.h" 12 | #include "../mt_sch.h" 13 | #include "../mt_simd.h" 14 | #include "../mt_util.h" 15 | 16 | static inline enum st21_tx_pacing_way st_tx_pacing_way(struct mtl_main_impl* impl, 17 | enum mtl_port port) { 18 | return mt_if(impl, port)->tx_pacing_way; 19 | } 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /lib/src/mt_flow.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2023 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_FLOW_HEAD_H_ 6 | #define _MT_LIB_FLOW_HEAD_H_ 7 | 8 | #include "mt_main.h" 9 | 10 | int mt_flow_init(struct mtl_main_impl* impl); 11 | int mt_flow_uinit(struct mtl_main_impl* impl); 12 | 13 | struct mt_rx_flow_rsp* mt_rx_flow_create(struct mtl_main_impl* impl, enum mtl_port port, 14 | uint16_t q, struct mt_rxq_flow* flow); 15 | int mt_rx_flow_free(struct mtl_main_impl* impl, enum mtl_port port, 16 | struct mt_rx_flow_rsp* rsp); 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /lib/src/st2110/st_convert.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_FRAME_CONVERT_HEAD_H_ 6 | #define _ST_LIB_FRAME_CONVERT_HEAD_H_ 7 | 8 | #include 9 | #include 10 | 11 | struct st_frame_converter { 12 | enum st_frame_fmt src_fmt; 13 | enum st_frame_fmt dst_fmt; 14 | int (*convert_func)(struct st_frame* src, struct st_frame* dst); 15 | }; 16 | 17 | int st_frame_get_converter(enum st_frame_fmt src_fmt, enum st_frame_fmt dst_fmt, 18 | struct st_frame_converter* converter); 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /app/udp/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | upd_server_sample_sources = files('udp_server_sample.c', '../sample/sample_util.c') 5 | upd_client_sample_sources = files('udp_client_sample.c', '../sample/sample_util.c') 6 | 7 | ufd_server_sample_sources = files('ufd_server_sample.c', '../sample/sample_util.c') 8 | ufd_client_sample_sources = files('ufd_client_sample.c', '../sample/sample_util.c') 9 | 10 | usocket_server_sample_sources = files('usocket_server_sample.c', '../sample/sample_util.c') 11 | usocket_client_sample_sources = files('usocket_client_sample.c', '../sample/sample_util.c') -------------------------------------------------------------------------------- /docker/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | imtl: 5 | image: mtl:latest 6 | ulimits: 7 | memlock: 8 | soft: -1 9 | hard: -1 10 | devices: 11 | - "/dev/vfio:/dev/vfio" # or add /dev/vfio/vfio and /dev/vfio/ 12 | volumes: 13 | - "/var/run/imtl:/var/run/imtl" # For connection with MTL Manager 14 | # For kernel / AF_XDP backend 15 | # network_mode: host 16 | cap_add: 17 | - SYS_NICE 18 | - IPC_LOCK 19 | # For kernel / AF_XDP backend 20 | # - NET_RAW 21 | # - CAP_BPF 22 | 23 | # For Adjtime 24 | # - SYS_TIME -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/rx_fastmetadata_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * SPDX-FileCopyrightText: Copyright (c) 2024 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "app_base.h" 11 | #include "log.h" 12 | 13 | #ifndef _RX_APP_FMD_HEAD_H_ 14 | #define _RX_APP_FMD_HEAD_H_ 15 | 16 | int st_app_rx_fmd_sessions_init(struct st_app_context* ctx); 17 | 18 | int st_app_rx_fmd_sessions_uinit(struct st_app_context* ctx); 19 | 20 | int st_app_rx_fmd_sessions_result(struct st_app_context* ctx); 21 | 22 | #endif /* _RX_APP_FMD_HEAD_H_ */ -------------------------------------------------------------------------------- /doc/sphinx/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # Copyright 2025 Intel Corporation 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | 5 | # Minimal makefile for Sphinx documentation 6 | 7 | SPHINXOPTS ?= --conf-dir . 8 | SPHINXBUILD ?= sphinx-build 9 | SOURCEDIR = ../../ 10 | BUILDDIR = ../_build 11 | 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/rx_st30p_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2024 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "app_base.h" 11 | #include "log.h" 12 | 13 | #ifndef _RX_APP_ST30P_HEAD_H_ 14 | #define _RX_APP_ST30P_HEAD_H_ 15 | 16 | int st_app_rx_st30p_sessions_init(struct st_app_context* ctx); 17 | int st_app_rx_st30p_sessions_uinit(struct st_app_context* ctx); 18 | int st_app_rx_st30p_sessions_stat(struct st_app_context* ctx); 19 | int st_app_rx_st30p_sessions_result(struct st_app_context* ctx); 20 | 21 | #endif -------------------------------------------------------------------------------- /rust/imtl-sys/build.rs: -------------------------------------------------------------------------------- 1 | extern crate bindgen; 2 | 3 | use std::env; 4 | use std::path::PathBuf; 5 | 6 | fn main() { 7 | pkg_config::Config::new().probe("mtl").unwrap(); 8 | println!("cargo:rerun-if-changed=build.rs"); 9 | 10 | let bindings = bindgen::Builder::default() 11 | .header("wrapper.h") 12 | .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) 13 | .generate() 14 | .expect("Unable to generate bindings"); 15 | 16 | let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); 17 | bindings 18 | .write_to_file(out_path.join("mtl_bindings.rs")) 19 | .expect("Couldn't write bindings!"); 20 | } 21 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/tx_st22p_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #define _GNU_SOURCE 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "app_base.h" 13 | #include "log.h" 14 | #include "player.h" 15 | 16 | #ifndef _TX_APP_ST22P_HEAD_H_ 17 | #define _TX_APP_ST22P_HEAD_H_ 18 | int st_app_tx_st22p_sessions_init(struct st_app_context* ctx); 19 | 20 | int st_app_tx_st22p_sessions_stop(struct st_app_context* ctx); 21 | 22 | int st_app_tx_st22p_sessions_uinit(struct st_app_context* ctx); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /lib/src/st2110/st_fastmetadata_transmitter.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * SPDX-FileCopyrightText: Copyright (c) 2024 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_FASTMETADATA_TRANSMITTER_HEAD_H_ 6 | #define _ST_LIB_FASTMETADATA_TRANSMITTER_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | int st_fastmetadata_transmitter_init(struct mtl_main_impl* impl, struct mtl_sch_impl* sch, 11 | struct st_tx_fastmetadata_sessions_mgr* mgr, 12 | struct st_fastmetadata_transmitter_impl* trs); 13 | int st_fastmetadata_transmitter_uinit(struct st_fastmetadata_transmitter_impl* trs); 14 | 15 | #endif 16 | -------------------------------------------------------------------------------- /tests/integration_tests/ufd_test.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2023 Intel Corporation 3 | */ 4 | 5 | #pragma once 6 | 7 | #include 8 | 9 | #include "test_util.h" 10 | 11 | /* include "struct sockaddr_in" define before include mudp_sockfd_api */ 12 | // clang-format off 13 | #ifdef WINDOWSENV 14 | #include 15 | #endif 16 | #include 17 | #include 18 | // clang-format on 19 | 20 | struct utest_ctx { 21 | struct mufd_init_params init_params; 22 | uint8_t mcast_ip_addr[MTL_IP_ADDR_LEN]; 23 | bool dhcp; 24 | }; 25 | 26 | struct utest_ctx* utest_get_ctx(void); 27 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/legacy/rx_audio_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "../app_base.h" 11 | #include "../log.h" 12 | 13 | #ifndef _RX_APP_AUDIO_HEAD_H_ 14 | #define _RX_APP_AUDIO_HEAD_H_ 15 | 16 | int st_app_rx_audio_sessions_init(struct st_app_context* ctx); 17 | 18 | int st_app_rx_audio_sessions_uinit(struct st_app_context* ctx); 19 | 20 | int st_app_rx_audio_sessions_result(struct st_app_context* ctx); 21 | 22 | int st_app_rx_audio_sessions_stat(struct st_app_context* ctx); 23 | 24 | #endif -------------------------------------------------------------------------------- /ld_preload/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | project('mtl_preload', 'c', default_options: ['buildtype=release'], 5 | version: run_command(find_program('cat'), files('../VERSION'), check: true).stdout().strip(),) 6 | 7 | #detect os 8 | exec_env = host_machine.system() 9 | set_variable('is_windows', exec_env == 'windows') 10 | 11 | # allow experimental api 12 | add_global_arguments('-DALLOW_EXPERIMENTAL_API', language : 'c') 13 | 14 | cc = meson.get_compiler('c') 15 | 16 | mtl_dep = dependency('mtl', required : true) 17 | libdl_dep = cc.find_library('dl', required : true) 18 | 19 | # build udp preload 20 | subdir('udp') 21 | -------------------------------------------------------------------------------- /tests/integration_tests/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | sources = files('tests.cpp', 'st_test.cpp', 'st22_test.cpp', 'st30_test.cpp', 5 | 'st40_test.cpp', 'dma_test.cpp', 'cvt_test.cpp', 'st22p_test.cpp', 6 | 'st20p_test.cpp', 'test_util.cpp', 'sch_test.cpp', 'st30p_test.cpp') 7 | 8 | subdir('st20') 9 | sources += st20_sources 10 | 11 | subdir('noctx') 12 | sources += noctx_sources 13 | test_inc = include_directories('.', 'noctx', 'st20') 14 | 15 | ufd_sources = files('ufd_test.cpp', 'ufd_loop_test.cpp', 'test_util.cpp') 16 | 17 | upl_sources = files('upl_test.cpp', 'upl_loop_test.cpp', 'test_util.cpp') -------------------------------------------------------------------------------- /tests/integration_tests/noctx/core/session.hpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2025 Intel Corporation 3 | */ 4 | 5 | #pragma once 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | /** 13 | * @brief Helper that owns the background threads used by TX/RX handlers. 14 | */ 15 | class Session { 16 | public: 17 | void addThread(std::function&)> func, bool isRx); 18 | bool isRunning() const; 19 | void stop(); 20 | ~Session(); 21 | 22 | private: 23 | std::vector threads_; 24 | std::atomic stopFlagRx{false}; 25 | std::atomic stopFlagTx{false}; 26 | }; 27 | -------------------------------------------------------------------------------- /lib/src/st2110/st_avx2.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_AVX2_H_ 6 | #define _ST_LIB_AVX2_H_ 7 | 8 | #include "st_main.h" 9 | 10 | int st20_rfc4175_422be10_to_422le10_avx2(struct st20_rfc4175_422_10_pg2_be* pg_be, 11 | struct st20_rfc4175_422_10_pg2_le* pg_le, 12 | uint32_t w, uint32_t h); 13 | 14 | int st20_rfc4175_422le10_to_422be10_avx2(struct st20_rfc4175_422_10_pg2_le* pg_le, 15 | struct st20_rfc4175_422_10_pg2_be* pg_be, 16 | uint32_t w, uint32_t h); 17 | 18 | #endif -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/tx_st20p_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #define _GNU_SOURCE 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "app_base.h" 13 | #include "log.h" 14 | #include "player.h" 15 | 16 | #ifndef _TX_APP_ST20P_HEAD_H_ 17 | #define _TX_APP_ST20P_HEAD_H_ 18 | 19 | int st_app_tx_st20p_sessions_init(struct st_app_context* ctx); 20 | 21 | int st_app_tx_st20p_sessions_stop(struct st_app_context* ctx); 22 | 23 | int st_app_tx_st20p_sessions_uinit(struct st_app_context* ctx); 24 | 25 | int st_app_tx_st20p_io_stat(struct st_app_context* ctx); 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /app/tools/log.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | /* Header for tools log usage */ 6 | #include 7 | 8 | #ifndef _ST_APP_TOOLS_LOG_HEAD_H_ 9 | #define _ST_APP_TOOLS_LOG_HEAD_H_ 10 | 11 | /* log define */ 12 | #ifdef DEBUG 13 | #define dbg(...) \ 14 | do { \ 15 | printf(__VA_ARGS__); \ 16 | } while (0) 17 | #else 18 | #define dbg(...) \ 19 | do { \ 20 | } while (0) 21 | #endif 22 | #define info(...) \ 23 | do { \ 24 | printf(__VA_ARGS__); \ 25 | } while (0) 26 | #define err(...) \ 27 | do { \ 28 | printf(__VA_ARGS__); \ 29 | } while (0) 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /script/build_obs_plugin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | set -e 7 | 8 | function usage() { 9 | echo "Usage: $0 [debug]" 10 | exit 0 11 | } 12 | 13 | buildtype=release 14 | 15 | if [ -n "$1" ]; then 16 | case $1 in 17 | "debug") 18 | buildtype=debug 19 | ;; 20 | "plain") 21 | buildtype=plain 22 | ;; 23 | *) 24 | usage 25 | ;; 26 | esac 27 | fi 28 | 29 | WORKSPACE=$PWD 30 | OBS_PLUGIN_BUILD_DIR=${WORKSPACE}/build/obs_plugin 31 | 32 | # build obs plugin 33 | pushd ecosystem/obs_mtl/linux-mtl 34 | meson "${OBS_PLUGIN_BUILD_DIR}" -Dbuildtype="$buildtype" 35 | popd 36 | pushd "${OBS_PLUGIN_BUILD_DIR}" 37 | ninja 38 | sudo ninja install 39 | popd 40 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/rx_st22p_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "app_base.h" 11 | #include "log.h" 12 | #include "player.h" 13 | 14 | #ifndef _RX_APP_ST22P_HEAD_H_ 15 | #define _RX_APP_ST22P_HEAD_H_ 16 | 17 | int st_app_rx_st22p_sessions_init(struct st_app_context* ctx); 18 | int st_app_rx_st22p_sessions_uinit(struct st_app_context* ctx); 19 | int st_app_rx_st22p_sessions_stat(struct st_app_context* ctx); 20 | int st_app_rx_st22p_sessions_result(struct st_app_context* ctx); 21 | int st_app_rx_st22p_sessions_pcap(struct st_app_context* ctx); 22 | 23 | #endif -------------------------------------------------------------------------------- /.github/workflows/upl_gtest.json: -------------------------------------------------------------------------------- 1 | { 2 | "nb_udp_sockets" : "32", 3 | "nb_nic_queues" : "32", 4 | "nic_shared_queues": false, 5 | "udp_lcore": false, 6 | "nic_queue_rate_limit_g": "2", 7 | "log_level" : "error", 8 | "rx_ring_count" : "1024", 9 | "rx_poll_sleep_us" : "10", 10 | "wake_thresh_count" : "32", 11 | "wake_timeout_us" : "1000", 12 | "interfaces": [ 13 | { 14 | "port": "REPLACE_BY_CICD_TEST_PORT_P", 15 | "ip": "192.168.2.80", 16 | "netmask": "255.255.255.0" 17 | }, 18 | { 19 | "port": "REPLACE_BY_CICD_TEST_PORT_R", 20 | "ip": "192.168.2.81", 21 | "netmask": "255.255.255.0" 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /lib/src/st2110/st_audio_transmitter.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_AUDIO_TRANSMITTER_HEAD_H_ 6 | #define _ST_LIB_AUDIO_TRANSMITTER_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | int st_audio_transmitter_init(struct mtl_main_impl* impl, struct mtl_sch_impl* sch, 11 | struct st_tx_audio_sessions_mgr* mgr, 12 | struct st_audio_transmitter_impl* trs); 13 | int st_audio_transmitter_uinit(struct st_audio_transmitter_impl* trs); 14 | 15 | int st_audio_queue_fatal_error(struct mtl_main_impl* impl, 16 | struct st_tx_audio_sessions_mgr* mgr, enum mtl_port port); 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /lib/src/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | sources = files( 5 | 'mt_main.c', 6 | 'mt_sch.c', 7 | 'mt_cni.c', 8 | 'mt_ptp.c', 9 | 'mt_arp.c', 10 | 'mt_dhcp.c', 11 | 'mt_mcast.c', 12 | 'mt_util.c', 13 | 'mt_dma.c', 14 | 'mt_admin.c', 15 | 'mt_config.c', 16 | 'mt_socket.c', 17 | 'mt_stat.c', 18 | 'mt_rtcp.c', 19 | 'mt_flow.c', 20 | 'mt_instance.c', 21 | 'mt_log.c', 22 | 'mt_pcap.c', 23 | ) 24 | 25 | if is_windows 26 | if get_option('enable_tap') == true 27 | sources += files('mt_tap.c') 28 | endif 29 | sources += files('../windows/win_posix.c') 30 | endif 31 | 32 | subdir('datapath') 33 | subdir('dev') 34 | subdir('st2110') 35 | subdir('udp') 36 | 37 | -------------------------------------------------------------------------------- /script/build_ebpf_xdp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2025 Intel Corporation 5 | 6 | set -e 7 | 8 | script_name=$(basename "${BASH_SOURCE[0]}") 9 | script_path=$(readlink -qe "${BASH_SOURCE[0]}") 10 | script_folder=${script_path/$script_name/} 11 | cd "${script_folder}" 12 | 13 | (return 0 2>/dev/null) && sourced=1 || sourced=0 14 | 15 | if [ "$sourced" -eq 0 ]; then 16 | cd "${script_folder}" 17 | 18 | if [ ! -d "xdp-tools" ]; then 19 | echo "Clone XDP source code" 20 | git clone --recurse-submodules https://github.com/xdp-project/xdp-tools.git 21 | fi 22 | 23 | cd xdp-tools 24 | ./configure 25 | make 26 | sudo make install 27 | cd lib/libbpf/src 28 | make 29 | sudo make install 30 | fi 31 | -------------------------------------------------------------------------------- /.github/workflows/upl_gtest_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "nb_udp_sockets" : "32", 3 | "nb_nic_queues" : "32", 4 | "nic_shared_queues": false, 5 | "udp_lcore": false, 6 | "nic_queue_rate_limit_g": "2", 7 | "log_level" : "error", 8 | "rx_ring_count" : "1024", 9 | "rx_poll_sleep_us" : "10", 10 | "wake_thresh_count" : "32", 11 | "wake_timeout_us" : "1000", 12 | "interfaces": [ 13 | { 14 | "port": "REPLACE_BY_CICD_TEST_PORT_1", 15 | "ip": "192.168.2.80", 16 | "netmask": "255.255.255.0" 17 | }, 18 | { 19 | "port": "REPLACE_BY_CICD_TEST_PORT_2", 20 | "ip": "192.168.2.81", 21 | "netmask": "255.255.255.0" 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /gpu_direct/subprojects/gtest.wrap: -------------------------------------------------------------------------------- 1 | [wrap-file] 2 | directory = googletest-1.15.0 3 | source_url = https://github.com/google/googletest/archive/refs/tags/v1.15.0.tar.gz 4 | source_filename = gtest-1.15.0.tar.gz 5 | source_hash = 7315acb6bf10e99f332c8a43f00d5fbb1ee6ca48c52f6b936991b216c586aaad 6 | patch_filename = gtest_1.15.0-1_patch.zip 7 | patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.15.0-1/get_patch 8 | patch_hash = 5f8e484c48fdc1029c7fd08807bd2615f8c9d16f90df6d81984f4f292752c925 9 | source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/gtest_1.15.0-1/gtest-1.15.0.tar.gz 10 | wrapdb_version = 1.15.0-1 11 | 12 | [provide] 13 | gtest = gtest_dep 14 | gtest_main = gtest_main_dep 15 | gmock = gmock_dep 16 | gmock_main = gmock_main_dep 17 | -------------------------------------------------------------------------------- /lib/src/st2110/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | sources += files( 5 | 'st_tx_video_session.c', 6 | 'st_video_transmitter.c', 7 | 'st_rx_video_session.c', 8 | 'st_tx_audio_session.c', 9 | 'st_audio_transmitter.c', 10 | 'st_rx_audio_session.c', 11 | 'st_tx_ancillary_session.c', 12 | 'st_rx_ancillary_session.c', 13 | 'st_ancillary_transmitter.c', 14 | 'st_ancillary.c', 15 | 'st_tx_fastmetadata_session.c', 16 | 'st_rx_fastmetadata_session.c', 17 | 'st_fastmetadata_transmitter.c', 18 | 'st_avx2.c', 19 | 'st_avx512.c', 20 | 'st_avx512_vbmi.c', 21 | 'st_convert.c', 22 | 'st_fmt.c', 23 | 'st_rx_timing_parser.c', 24 | ) 25 | 26 | subdir('pipeline') 27 | subdir('experimental') -------------------------------------------------------------------------------- /ecosystem/obs_mtl/README.md: -------------------------------------------------------------------------------- 1 | # obs-mtl 2 | 3 | obs source plugin for Media Transport Library 4 | 5 | ## Build and Use 6 | 7 | ### build Media Transport Library library 8 | 9 | refer to: [build guide](../../doc/build.md) 10 | 11 | ### build & install obs-studio 12 | 13 | refer to: 14 | 15 | ### build linux-mtl 16 | 17 | ```bash 18 | cd linux-mtl 19 | meson setup build 20 | meson complile -C build 21 | sudo meson install -C build 22 | ``` 23 | 24 | ### open obs-studio 25 | 26 | ```bash 27 | obs 28 | ``` 29 | 30 | ### add input source 31 | 32 | ## TODO 33 | 34 | ### output plugin - high 35 | 36 | ### auto detect vfio-pci NIC ports - middle 37 | 38 | ### auto detect NIC numa to provide usable lcores - low 39 | -------------------------------------------------------------------------------- /tests/integration_tests/log.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | /* Header for ST test log usage */ 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | /* log define */ 12 | #ifdef DEBUG 13 | #define dbg(...) \ 14 | do { \ 15 | printf(__VA_ARGS__); \ 16 | } while (0) 17 | #else 18 | #define dbg(...) \ 19 | do { \ 20 | } while (0) 21 | #endif 22 | #define info(...) \ 23 | do { \ 24 | printf(__VA_ARGS__); \ 25 | } while (0) 26 | #define warn(...) \ 27 | do { \ 28 | printf(__VA_ARGS__); \ 29 | } while (0) 30 | #define err(...) \ 31 | do { \ 32 | printf(__VA_ARGS__); \ 33 | } while (0) 34 | -------------------------------------------------------------------------------- /lib/src/mt_stat.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_STAT_HEAD_H_ 6 | #define _MT_LIB_STAT_HEAD_H_ 7 | 8 | #include "mt_main.h" 9 | 10 | int mt_stat_init(struct mtl_main_impl* impl); 11 | int mt_stat_uinit(struct mtl_main_impl* impl); 12 | 13 | int mt_stat_register(struct mtl_main_impl* impl, mt_stat_cb_t cb, void* priv, char* name); 14 | int mt_stat_unregister(struct mtl_main_impl* impl, mt_stat_cb_t cb, void* priv); 15 | 16 | static inline uint64_t mt_stat_dump_period_us(struct mtl_main_impl* impl) { 17 | return impl->stat_mgr.dump_period_us; 18 | } 19 | 20 | static inline double mt_stat_dump_period_s(struct mtl_main_impl* impl) { 21 | return (double)mt_stat_dump_period_us(impl) / US_PER_S; 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/rx_st20p_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "app_base.h" 11 | #include "log.h" 12 | #include "player.h" 13 | 14 | #ifndef _RX_APP_ST20P_HEAD_H_ 15 | #define _RX_APP_ST20P_HEAD_H_ 16 | 17 | int st_app_rx_st20p_sessions_init(struct st_app_context* ctx); 18 | int st_app_rx_st20p_sessions_uinit(struct st_app_context* ctx); 19 | int st_app_rx_st20p_sessions_stat(struct st_app_context* ctx); 20 | int st_app_rx_st20p_sessions_result(struct st_app_context* ctx); 21 | int st_app_rx_st20p_sessions_pcap(struct st_app_context* ctx); 22 | int st_app_rx_st20p_io_stat(struct st_app_context* ctx); 23 | 24 | #endif -------------------------------------------------------------------------------- /python/swig/pymtl.i: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BSD-3-Clause 2 | // Copyright 2023 Intel Corporation 3 | 4 | // Usage: swig -python -I/usr/local/include -o pymtl_wrap.c pymtl.i 5 | 6 | %module pymtl 7 | 8 | %include 9 | 10 | %begin %{ 11 | #define SWIG_PYTHON_CAST_MODE 12 | #define __MTL_PYTHON_BUILD__ 13 | %} 14 | 15 | %{ 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | %} 23 | 24 | %define __MTL_PYTHON_BUILD__ 25 | %enddef 26 | 27 | %include 28 | %include 29 | %include 30 | %include 31 | %include 32 | %include 33 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/experimental/rx_st20r_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "../app_base.h" 11 | #include "../fmt.h" 12 | #include "../log.h" 13 | #include "../player.h" 14 | 15 | #ifndef _RX_APP_ST20R_HEAD_H_ 16 | #define _RX_APP_ST20R_HEAD_H_ 17 | 18 | int st_app_rx_st20r_sessions_init(struct st_app_context* ctx); 19 | 20 | int st_app_rx_st20r_sessions_uinit(struct st_app_context* ctx); 21 | 22 | int st_app_rx_st20r_sessions_stat(struct st_app_context* ctx); 23 | 24 | int st_app_rx_st20r_sessions_result(struct st_app_context* ctx); 25 | 26 | int st_app_rx_st20r_sessions_pcap(struct st_app_context* ctx); 27 | 28 | #endif -------------------------------------------------------------------------------- /tests/integration_tests/noctx/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2025 Intel Corporation 3 | 4 | noctx_sources = files( 5 | 'core/session.cpp', 6 | 'core/handler_base.cpp', 7 | 'core/strategy.cpp', 8 | 'core/test_fixture.cpp', 9 | 'handlers/st20p_handler.cpp', 10 | 'handlers/st30p_handler.cpp', 11 | 'handlers/st40p_handler.cpp', 12 | 'strategies/st20p_strategies.cpp', 13 | 'strategies/st30p_strategies.cpp', 14 | 'strategies/st40p_strategies.cpp', 15 | 'testcases/st30p_redundant_tests.cpp', 16 | 'testcases/st30p_user_pacing_tests.cpp', 17 | 'testcases/st20p_redundant_tests.cpp', 18 | 'testcases/st20p_user_pacing_tests.cpp', 19 | 'testcases/st20p_user_timestamp_tests.cpp', 20 | 'testcases/st40p_user_pacing_tests.cpp', 21 | ) 22 | -------------------------------------------------------------------------------- /.github/linters/.python-lint: -------------------------------------------------------------------------------- 1 | [MASTER] 2 | 3 | # Use multiple processes to speed up Pylint. 4 | jobs=0 5 | 6 | # Todo: remove all below define to use defaul pylint settings 7 | 8 | [MESSAGES CONTROL] 9 | 10 | # Disable duplicate-code and missing-function-docstring 11 | disable=duplicate-code, 12 | missing-function-docstring, 13 | import-error, 14 | consider-using-with 15 | 16 | [DESIGN] 17 | 18 | # Maximum number of statements in function / method body 19 | max-statements=100 20 | # Maximum number of locals for function / method body 21 | max-locals=30 22 | # Maximum number of return / yield for function / method body 23 | max-returns=10 24 | # Maximum number of characters on a single line. 25 | max-line-length=120 26 | # Maximum number of branch for function / method body 27 | max-branches=16 28 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/tx_st30p_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2024 Intel Corporation 3 | */ 4 | 5 | #define _GNU_SOURCE 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "app_base.h" 13 | #include "log.h" 14 | #include "player.h" 15 | 16 | #ifndef _TX_APP_ST30P_HEAD_H_ 17 | #define _TX_APP_ST30P_HEAD_H_ 18 | 19 | #define ST_APP_TX_ST30P_DEFAULT_PACKET_TIME (10 * NS_PER_MS) /* 10ms */ 20 | 21 | int st_app_tx_st30p_sessions_init(struct st_app_context* ctx); 22 | 23 | int st_app_tx_st30p_sessions_stop(struct st_app_context* ctx); 24 | 25 | int st_app_tx_st30p_sessions_uinit(struct st_app_context* ctx); 26 | 27 | int st_app_tx_st30p_io_stat(struct st_app_context* ctx); 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/legacy/tx_video_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #define _GNU_SOURCE 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include "../app_base.h" 13 | #include "../log.h" 14 | #include "../player.h" 15 | 16 | #ifndef _TX_APP_VIDEO_HEAD_H_ 17 | #define _TX_APP_VIDEO_HEAD_H_ 18 | int st_app_tx_video_sessions_init(struct st_app_context* ctx); 19 | 20 | int st_app_tx_video_sessions_stop(struct st_app_context* ctx); 21 | 22 | int st_app_tx_video_sessions_uinit(struct st_app_context* ctx); 23 | 24 | int st_app_tx_video_sessions_result(struct st_app_context* ctx); 25 | 26 | int st_app_tx_videos_io_stat(struct st_app_context* ctx); 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /tools/ebpf/log.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2023 Intel Corporation 3 | */ 4 | 5 | /* Header for log usage */ 6 | #include 7 | 8 | #ifndef _EBPF_LOG_HEAD_H_ 9 | #define _EBPF_LOG_HEAD_H_ 10 | 11 | /* log define */ 12 | #ifdef DEBUG 13 | #define dbg(...) \ 14 | do { \ 15 | printf(__VA_ARGS__); \ 16 | } while (0) 17 | #else 18 | #define dbg(...) \ 19 | do { \ 20 | } while (0) 21 | #endif 22 | #define info(...) \ 23 | do { \ 24 | printf(__VA_ARGS__); \ 25 | } while (0) 26 | #define warn(...) \ 27 | do { \ 28 | printf(__VA_ARGS__); \ 29 | } while (0) 30 | #define err(...) \ 31 | do { \ 32 | printf(__VA_ARGS__); \ 33 | } while (0) 34 | 35 | #endif -------------------------------------------------------------------------------- /plugins/log.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | /* Header for log usage */ 6 | #include 7 | 8 | #ifndef _ST_PLUGIN_LOG_HEAD_H_ 9 | #define _ST_PLUGIN_LOG_HEAD_H_ 10 | 11 | /* log define */ 12 | #ifdef DEBUG 13 | #define dbg(...) \ 14 | do { \ 15 | printf(__VA_ARGS__); \ 16 | } while (0) 17 | #else 18 | #define dbg(...) \ 19 | do { \ 20 | } while (0) 21 | #endif 22 | #define info(...) \ 23 | do { \ 24 | printf(__VA_ARGS__); \ 25 | } while (0) 26 | #define warn(...) \ 27 | do { \ 28 | printf(__VA_ARGS__); \ 29 | } while (0) 30 | #define err(...) \ 31 | do { \ 32 | printf(__VA_ARGS__); \ 33 | } while (0) 34 | 35 | #endif -------------------------------------------------------------------------------- /tests/integration_tests/noctx/core/strategy.hpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2025 Intel Corporation 3 | */ 4 | 5 | #pragma once 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | class Handlers; 13 | 14 | class FrameTestStrategy { 15 | public: 16 | FrameTestStrategy(Handlers* parent = nullptr, bool enable_tx_modifier = false, 17 | bool enable_rx_modifier = false); 18 | virtual ~FrameTestStrategy(); 19 | 20 | virtual void txTestFrameModifier(void* frame, size_t frame_size) { 21 | } 22 | virtual void rxTestFrameModifier(void* frame, size_t frame_size) { 23 | } 24 | 25 | Handlers* parent; 26 | uint32_t idx_tx; 27 | uint32_t idx_rx; 28 | double expect_fps; 29 | bool enable_tx_modifier; 30 | bool enable_rx_modifier; 31 | }; 32 | -------------------------------------------------------------------------------- /patches/ice_drv/2.2.8/0004-version-update-to-Kahawai_2.2.8.patch: -------------------------------------------------------------------------------- 1 | From 12c829262855f516656c41d7232302656ecb711e Mon Sep 17 00:00:00 2001 2 | From: Szumski Tomasz 3 | Date: Fri, 11 Jul 2025 13:37:08 +0200 4 | Subject: [PATCH 4/4] version: update to Kahawai_2.2.8 5 | 6 | --- 7 | src/ice_main.c | 2 +- 8 | 1 file changed, 1 insertion(+), 1 deletion(-) 9 | 10 | diff --git a/src/ice_main.c b/src/ice_main.c 11 | index 4033e5e..7213063 100644 12 | --- a/src/ice_main.c 13 | +++ b/src/ice_main.c 14 | @@ -35,7 +35,7 @@ 15 | #define DRV_VERSION_MINOR 2 16 | #define DRV_VERSION_BUILD 8 17 | 18 | -#define DRV_VERSION "2.2.8" 19 | +#define DRV_VERSION "Kahawai_2.2.8" 20 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 21 | #ifdef ICE_ADD_PROBES 22 | #define DRV_VERSION_EXTRA "_probes" 23 | -- 24 | 2.34.1 25 | 26 | -------------------------------------------------------------------------------- /patches/dpdk/23.03/windows/0013-Disable-build-test_pcapng.patch: -------------------------------------------------------------------------------- 1 | From 5b50b9706f4d10770c8a743116757a520375a1bf Mon Sep 17 00:00:00 2001 2 | From: Ric Li 3 | Date: Mon, 13 May 2024 15:02:09 +0800 4 | Subject: [PATCH] Disable build test_pcapng 5 | 6 | Signed-off-by: Ric Li 7 | --- 8 | app/test/meson.build | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/app/test/meson.build b/app/test/meson.build 12 | index b9b5432496..d995318bc4 100644 13 | --- a/app/test/meson.build 14 | +++ b/app/test/meson.build 15 | @@ -431,7 +431,7 @@ endif 16 | if dpdk_conf.has('RTE_HAS_LIBPCAP') 17 | ext_deps += pcap_dep 18 | if dpdk_conf.has('RTE_LIB_PCAPNG') 19 | - test_sources += 'test_pcapng.c' 20 | +# test_sources += 'test_pcapng.c' 21 | endif 22 | endif 23 | 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0008-Windows-version-currently-no-BPF-support.patch: -------------------------------------------------------------------------------- 1 | From 1410565d4dfb6b08dc4ee072f2407018caf72418 Mon Sep 17 00:00:00 2001 2 | From: Ric Li 3 | Date: Wed, 30 Aug 2023 15:01:15 +0800 4 | Subject: [PATCH] Windows version currently no BPF support 5 | 6 | Signed-off-by: Ric Li 7 | --- 8 | app/test/meson.build | 1 - 9 | 1 file changed, 1 deletion(-) 10 | 11 | diff --git a/app/test/meson.build b/app/test/meson.build 12 | index b89cf0368f..42895b56ef 100644 13 | --- a/app/test/meson.build 14 | +++ b/app/test/meson.build 15 | @@ -15,7 +15,6 @@ test_sources = files( 16 | 'test_barrier.c', 17 | 'test_bitops.c', 18 | 'test_bitmap.c', 19 | - 'test_bpf.c', 20 | 'test_byteorder.c', 21 | 'test_cksum.c', 22 | 'test_cksum_perf.c', 23 | -- 24 | 2.34.1 25 | 26 | -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0012-Disable-build-test_pcapng.patch: -------------------------------------------------------------------------------- 1 | From 83079e78b7fe96d6104532ff22fdb3b9fd67a74d Mon Sep 17 00:00:00 2001 2 | From: Ric Li 3 | Date: Mon, 13 May 2024 15:00:01 +0800 4 | Subject: [PATCH] Disable build test_pcapng 5 | 6 | Signed-off-by: Ric Li 7 | --- 8 | app/test/meson.build | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/app/test/meson.build b/app/test/meson.build 12 | index b89cf0368f..52cbab40fb 100644 13 | --- a/app/test/meson.build 14 | +++ b/app/test/meson.build 15 | @@ -439,7 +439,7 @@ endif 16 | if dpdk_conf.has('RTE_HAS_LIBPCAP') 17 | ext_deps += pcap_dep 18 | if dpdk_conf.has('RTE_LIB_PCAPNG') 19 | - test_sources += 'test_pcapng.c' 20 | +# test_sources += 'test_pcapng.c' 21 | endif 22 | endif 23 | 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/legacy/rx_video_app.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "../app_base.h" 11 | #include "../fmt.h" 12 | #include "../log.h" 13 | #include "../player.h" 14 | 15 | #ifndef _RX_APP_VIDEO_HEAD_H_ 16 | #define _RX_APP_VIDEO_HEAD_H_ 17 | 18 | int st_app_rx_video_sessions_init(struct st_app_context* ctx); 19 | 20 | int st_app_rx_video_sessions_uinit(struct st_app_context* ctx); 21 | 22 | int st_app_rx_video_sessions_stat(struct st_app_context* ctx); 23 | 24 | int st_app_rx_video_sessions_result(struct st_app_context* ctx); 25 | 26 | int st_app_rx_video_sessions_pcap(struct st_app_context* ctx); 27 | 28 | int st_app_rx_videos_io_stat(struct st_app_context* ctx); 29 | 30 | #endif -------------------------------------------------------------------------------- /tests/tools/gstreamer_tools/gst_anc_generator.h: -------------------------------------------------------------------------------- 1 | #ifndef __GST_ANC_GENERATOR_H__ 2 | #define __GST_ANC_GENERATOR_H__ 3 | 4 | #include 5 | #include 6 | 7 | G_BEGIN_DECLS 8 | 9 | #define GST_TYPE_ANC_GENERATOR (gst_anc_generator_get_type()) 10 | G_DECLARE_FINAL_TYPE(GstAncGenerator, gst_anc_generator, GST, ANC_GENERATOR, GstBaseSrc) 11 | 12 | struct _GstAncGenerator { 13 | GstBaseSrc element; 14 | GstPad* srcpad; 15 | 16 | /* Number of frames to generate (0 = infinite) */ 17 | guint num_frames; 18 | guint framerate_num; 19 | guint framerate_den; 20 | 21 | guint frames_generated; 22 | GstClockTime running_time; 23 | }; 24 | 25 | struct _GstAncGeneratorClass { 26 | GstElementClass parent_class; 27 | }; 28 | 29 | GType gst_anc_generator_get_type(void); 30 | 31 | G_END_DECLS 32 | 33 | #endif /* __GST_ANC_GENERATOR_H__ */ 34 | -------------------------------------------------------------------------------- /ecosystem/gstreamer_plugin/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | BUILD_DIR="builddir" 6 | DEBUG=false 7 | 8 | SCRIPT_NAME=$(basename "${BASH_SOURCE[0]}") 9 | SCRIPT_PATH=$(readlink -qe "${BASH_SOURCE[0]}") 10 | SCRIPT_FOLDER=${SCRIPT_PATH/$SCRIPT_NAME/} 11 | cd "${SCRIPT_FOLDER}" || exit 1 12 | 13 | # Parse command-line arguments 14 | for arg in "$@"; do 15 | case "$arg" in 16 | --debug) 17 | DEBUG=true 18 | shift 19 | ;; 20 | *) 21 | shift 22 | ;; 23 | esac 24 | done 25 | 26 | if [ -d "$BUILD_DIR" ]; then 27 | echo "Removing existing build directory..." 28 | rm -rf "$BUILD_DIR" || { 29 | echo "Failed to remove existing build directory" 30 | exit 1 31 | } 32 | fi 33 | 34 | if [ "$DEBUG" = true ]; then 35 | meson setup --buildtype=debug "$BUILD_DIR" 36 | else 37 | meson setup "$BUILD_DIR" 38 | fi 39 | 40 | meson compile -C "$BUILD_DIR" 41 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/src/fmt.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #include "fmt.h" 6 | 7 | #include "log.h" 8 | 9 | int user_get_pgroup(enum user_pg_fmt fmt, struct user_pgroup* pg) { 10 | int i; 11 | 12 | for (i = 0; i < ARRAY_SIZE(user_pgroups); i++) { 13 | if (fmt == user_pgroups[i].fmt) { 14 | *pg = user_pgroups[i]; 15 | return 0; 16 | } 17 | } 18 | 19 | err("%s, invalid fmt: %d\n", __func__, fmt); 20 | return -1; 21 | } 22 | 23 | void convert_uyvy10b_to_uyvy8b(uint8_t* yuv_8b, uint8_t const* yuv_10b, int pg_count) { 24 | struct st20_rfc4175_422_8_pg2_le* pg_8 = (struct st20_rfc4175_422_8_pg2_le*)yuv_8b; 25 | struct st20_rfc4175_422_10_pg2_be* pg_10 = (struct st20_rfc4175_422_10_pg2_be*)yuv_10b; 26 | 27 | st20_rfc4175_422be10_to_422le8(pg_10, pg_8, pg_count, 2); 28 | } 29 | -------------------------------------------------------------------------------- /include/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2022 Intel Corporation 3 | 4 | mtl_header_files = files('mtl_api.h', 'st_api.h', 'st_convert_api.h', 'st_convert_internal.h', 5 | 'st_pipeline_api.h', 'st20_api.h', 'st30_api.h', 'st40_api.h', 'st41_api.h', 6 | 'mudp_api.h', 'mudp_sockfd_api.h', 'mudp_sockfd_internal.h', 'mtl_lcore_shm_api.h', 7 | 'mtl_sch_api.h', 'st30_pipeline_api.h', 'st40_pipeline_api.h') 8 | 9 | if is_windows 10 | mtl_header_files += files('mudp_win.h') 11 | endif 12 | 13 | install_headers(mtl_header_files, subdir : meson.project_name()) 14 | 15 | # experimental features 16 | mtl_experimental_header_files = files('experimental/st20_combined_api.h') 17 | 18 | experimental_header_install_path = meson.project_name() + '/experimental' 19 | 20 | install_headers(mtl_experimental_header_files, subdir : experimental_header_install_path) 21 | -------------------------------------------------------------------------------- /config/legacy/4k_rx_1port_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.1", 5 | "ip": "192.168.84.189" 6 | } 7 | ], 8 | "rx_sessions": [ 9 | { 10 | "ip": [ 11 | "239.168.84.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "video": [ 17 | { 18 | "replicas": 1, 19 | "type": "frame", 20 | "pacing": "gap", 21 | "start_port": 20000, 22 | "payload_type": 112, 23 | "tr_offset": "default", 24 | "video_format": "i2160p59", 25 | "pg_format": "YUV_422_10bit", 26 | "display": false 27 | } 28 | ] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /config/legacy/8k_rx_1port_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.1", 5 | "ip": "192.168.84.189" 6 | } 7 | ], 8 | "rx_sessions": [ 9 | { 10 | "ip": [ 11 | "239.168.84.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "video": [ 17 | { 18 | "replicas": 1, 19 | "type": "frame", 20 | "pacing": "gap", 21 | "start_port": 20000, 22 | "payload_type": 112, 23 | "tr_offset": "default", 24 | "video_format": "i4320p59", 25 | "pg_format": "YUV_422_10bit", 26 | "display": false 27 | } 28 | ] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /ecosystem/obs_mtl/linux-mtl/linux-mtl.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _LINUX_MTL_HEAD_H_ 6 | #define _LINUX_MTL_HEAD_H_ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | #define timeval2ns(tv) \ 22 | (((uint64_t)tv.tv_sec * 1000000000) + ((uint64_t)tv.tv_usec * 1000)) 23 | 24 | #define blog(level, msg, ...) blog(level, "mtl-input: " msg, ##__VA_ARGS__) 25 | 26 | enum st_frame_fmt obs_to_mtl_format(enum video_format fmt); 27 | enum st_fps obs_to_mtl_fps(uint32_t fps_num, uint32_t fps_den); 28 | 29 | #endif -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/dpdk_af_xdp_json/setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | set -e 7 | 8 | AFXDP_PORT_0=enp175s0f0np0 9 | AFXDP_PORT_1=enp175s0f1np1 10 | 11 | echo "Config ${AFXDP_PORT_0}" 12 | sudo nmcli dev set ${AFXDP_PORT_0} managed no 13 | sudo ifconfig ${AFXDP_PORT_0} 192.168.108.101/24 14 | echo 2 | sudo tee /sys/class/net/${AFXDP_PORT_0}/napi_defer_hard_irqs 15 | echo 200000 | sudo tee /sys/class/net/${AFXDP_PORT_0}/gro_flush_timeout 16 | echo "Config ${AFXDP_PORT_1}" 17 | sudo nmcli dev set ${AFXDP_PORT_1} managed no 18 | sudo ifconfig ${AFXDP_PORT_1} 192.168.108.102/24 19 | echo 2 | sudo tee /sys/class/net/${AFXDP_PORT_1}/napi_defer_hard_irqs 20 | echo 200000 | sudo tee /sys/class/net/${AFXDP_PORT_1}/gro_flush_timeout 21 | 22 | echo "Disable rp_filter" 23 | sudo sysctl -w net.ipv4.conf.all.rp_filter=0 24 | -------------------------------------------------------------------------------- /config/legacy/test_rx_1port_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.1", 5 | "ip": "192.168.84.189" 6 | } 7 | ], 8 | "rx_sessions": [ 9 | { 10 | "ip": [ 11 | "239.168.84.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "video": [ 17 | { 18 | "replicas": 1, 19 | "type": "frame", 20 | "pacing": "gap", 21 | "start_port": 20000, 22 | "payload_type": 112, 23 | "tr_offset": "default", 24 | "video_format": "i1080p59", 25 | "pg_format": "YUV_422_10bit", 26 | "display": false 27 | } 28 | ] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /patches/ice_drv/1.9.11/0004-version-update-to-kahawai.patch: -------------------------------------------------------------------------------- 1 | From 47571c5a3f99a0a356487725b6dceb9dfa7c2938 Mon Sep 17 00:00:00 2001 2 | From: "Du, Frank" 3 | Date: Wed, 3 Aug 2022 08:53:44 +0800 4 | Subject: [PATCH 4/4] version: update to kahawai 5 | 6 | Signed-off-by: Du, Frank 7 | --- 8 | src/ice_main.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_main.c b/src/ice_main.c 12 | index 6aaddd0..92603a7 100644 13 | --- a/src/ice_main.c 14 | +++ b/src/ice_main.c 15 | @@ -29,7 +29,7 @@ 16 | #define DRV_VERSION_MINOR 9 17 | #define DRV_VERSION_BUILD 11 18 | 19 | -#define DRV_VERSION "1.9.11" 20 | +#define DRV_VERSION "Kahawai_1.9.11_20230221" 21 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 22 | #ifdef ICE_ADD_PROBES 23 | #define DRV_VERSION_EXTRA "_probes" 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /tests/validation/tests/single/udp/sample/test_sessions_cnt.py: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright(c) 2024-2025 Intel Corporation 3 | 4 | import pytest 5 | from common.nicctl import InterfaceSetup 6 | from mtl_engine import udp_app 7 | 8 | 9 | @pytest.mark.parametrize("sessions_cnt", [1, 2, 5, 7]) 10 | def test_udp_sessions_cnt( 11 | hosts, 12 | build, 13 | setup_interfaces: InterfaceSetup, 14 | test_time, 15 | sessions_cnt, 16 | test_config, 17 | prepare_ramdisk, 18 | ): 19 | host = list(hosts.values())[0] 20 | interfaces_list = setup_interfaces.get_interfaces_list_single( 21 | test_config.get("interface_type", "VF") 22 | ) 23 | 24 | udp_app.execute_test_sample( 25 | build=build, 26 | nic_port_list=interfaces_list, 27 | test_time=test_time, 28 | sessions_cnt=sessions_cnt, 29 | host=host, 30 | ) 31 | -------------------------------------------------------------------------------- /lib/src/udp/ufd_main.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_UFD_MAIN_H_ 6 | #define _MT_LIB_UFD_MAIN_H_ 7 | 8 | #include "../mt_main.h" 9 | 10 | /* include "struct sockaddr_in" define before include mudp_sockfd_api */ 11 | // clang-format off 12 | #ifdef WINDOWSENV 13 | #include "mudp_win.h" 14 | #endif 15 | #include "mudp_sockfd_api.h" 16 | #include "mudp_sockfd_internal.h" 17 | // clang-format on 18 | 19 | struct ufd_slot { 20 | mudp_handle handle; 21 | int idx; 22 | void* opaque; 23 | }; 24 | 25 | struct ufd_mt_ctx { 26 | struct mufd_init_params init_params; 27 | struct mtl_main_impl* mt; 28 | bool alloc_with_rte; 29 | pid_t parent_pid; 30 | 31 | int slot_last_idx; 32 | struct ufd_slot** slots; /* slots with init_params.slots_nb_max */ 33 | pthread_mutex_t slots_lock; /* lock slots */ 34 | }; 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /patches/dpdk/21.08/0002-temp-fix-to-enable-multicast-rx-on-ice.patch: -------------------------------------------------------------------------------- 1 | From 0d367990c9a248845c870e30a6dd6a15cdfb4e29 Mon Sep 17 00:00:00 2001 2 | From: Ping Yu 3 | Date: Thu, 16 Sep 2021 15:24:27 +0800 4 | Subject: [PATCH] temp fix to enable multicast rx on ice 5 | 6 | Signed-off-by: Ping Yu 7 | --- 8 | drivers/net/ice/ice_fdir_filter.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c 12 | index 82adb1fc8b..f83b843994 100644 13 | --- a/drivers/net/ice/ice_fdir_filter.c 14 | +++ b/drivers/net/ice/ice_fdir_filter.c 15 | @@ -2244,5 +2244,5 @@ static struct ice_flow_parser ice_fdir_parser = { 16 | 17 | RTE_INIT(ice_fdir_engine_register) 18 | { 19 | - ice_register_flow_engine(&ice_fdir_engine); 20 | +// ice_register_flow_engine(&ice_fdir_engine); 21 | } 22 | -- 23 | 2.25.1 24 | 25 | -------------------------------------------------------------------------------- /patches/ice_drv/1.11.14/0003-version-update-to-kahawai-1.11.14.patch: -------------------------------------------------------------------------------- 1 | From e4a069ec40d2dd9f20908feb9df876d4ca30f97b Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Fri, 5 May 2023 10:03:24 +0800 4 | Subject: [PATCH 3/3] version: update to kahawai 1.11.14 5 | 6 | ssssss-off-by: Frank Du 7 | --- 8 | src/ice_main.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_main.c b/src/ice_main.c 12 | index 7bdd417..0f416f7 100644 13 | --- a/src/ice_main.c 14 | +++ b/src/ice_main.c 15 | @@ -29,7 +29,7 @@ 16 | #define DRV_VERSION_MINOR 11 17 | #define DRV_VERSION_BUILD 14 18 | 19 | -#define DRV_VERSION "1.11.14" 20 | +#define DRV_VERSION "Kahawai_1.11.14_20230505" 21 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 22 | #ifdef ICE_ADD_PROBES 23 | #define DRV_VERSION_EXTRA "_probes" 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /patches/ice_drv/1.9.11/0001-ice-linux-fix-incorrect-memcpy-size.patch: -------------------------------------------------------------------------------- 1 | From 76ae3b233435a043494bdf5621300594bed35490 Mon Sep 17 00:00:00 2001 2 | From: "Du, Frank" 3 | Date: Tue, 2 Aug 2022 15:30:21 +0800 4 | Subject: [PATCH 1/4] ice-linux: fix incorrect memcpy size. 5 | 6 | Signed-off-by: Wenjun Wu 7 | Signed-off-by: Du, Frank 8 | --- 9 | src/ice_virtchnl.c | 2 +- 10 | 1 file changed, 1 insertion(+), 1 deletion(-) 11 | 12 | diff --git a/src/ice_virtchnl.c b/src/ice_virtchnl.c 13 | index feeb8db..7fe0006 100644 14 | --- a/src/ice_virtchnl.c 15 | +++ b/src/ice_virtchnl.c 16 | @@ -3359,7 +3359,7 @@ static int ice_vc_cfg_q_bw(struct ice_vf *vf, u8 *msg) 17 | qs_bw[i].tc = qbw->cfg[i].tc; 18 | } 19 | 20 | - memcpy(vf->qs_bw, qs_bw, sizeof(*qs_bw)); 21 | + memcpy(vf->qs_bw, qs_bw, len); 22 | 23 | err_bw: 24 | kfree(qs_bw); 25 | -- 26 | 2.30.2 27 | 28 | -------------------------------------------------------------------------------- /ecosystem/librist/build_librist_mtl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2023 Intel Corporation 5 | 6 | set -e 7 | VERSIONS_ENV_PATH="$(dirname "$(readlink -qe "${BASH_SOURCE[0]}")")/../../versions.env" 8 | 9 | if [ -f "$VERSIONS_ENV_PATH" ]; then 10 | # shellcheck disable=SC1090 11 | . "$VERSIONS_ENV_PATH" 12 | else 13 | echo -e "Error: versions.env file not found at $VERSIONS_ENV_PATH" 14 | exit 1 15 | fi 16 | 17 | script_name=$(basename "${BASH_SOURCE[0]}") 18 | script_path=$(readlink -qe "${BASH_SOURCE[0]}") 19 | script_folder=${script_path/$script_name/} 20 | set -x 21 | cd "${script_folder}" 22 | 23 | # check out librist code 24 | rm librist -rf 25 | git clone https://code.videolan.org/rist/librist.git 26 | cd librist 27 | git checkout "${LIBRIST_COMMIT_VER}" 28 | 29 | # apply the patches 30 | git am ../*.patch 31 | 32 | # build now 33 | meson build 34 | ninja -C build 35 | -------------------------------------------------------------------------------- /patches/ice_drv/1.12.6/0003-version-update-to-Kahawai_1.12.6_20230821.patch: -------------------------------------------------------------------------------- 1 | From 279094e0f168e842a2cb177031b722fdf829a443 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Mon, 21 Aug 2023 09:11:03 +0800 4 | Subject: [PATCH 3/3] version: update to Kahawai_1.12.6_20230821 5 | 6 | Signed-off-by: Frank Du 7 | --- 8 | src/ice_main.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_main.c b/src/ice_main.c 12 | index 8f515cd..d8b1643 100644 13 | --- a/src/ice_main.c 14 | +++ b/src/ice_main.c 15 | @@ -30,7 +30,7 @@ 16 | #define DRV_VERSION_MINOR 12 17 | #define DRV_VERSION_BUILD 6 18 | 19 | -#define DRV_VERSION "1.12.6" 20 | +#define DRV_VERSION "Kahawai_1.12.6_20230821" 21 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 22 | #ifdef ICE_ADD_PROBES 23 | #define DRV_VERSION_EXTRA "_probes" 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /patches/ice_drv/1.12.7/0003-version-update-to-Kahawai_1.12.7_20231116.patch: -------------------------------------------------------------------------------- 1 | From 2d65e59f778da831b2bbbc1e63d8b1b321590f78 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Thu, 16 Nov 2023 14:19:55 +0800 4 | Subject: [PATCH 3/4] version: update to Kahawai_1.12.7_20231116 5 | 6 | Signed-off-by: Frank Du 7 | --- 8 | src/ice_main.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_main.c b/src/ice_main.c 12 | index a32bb2a..36da2ea 100644 13 | --- a/src/ice_main.c 14 | +++ b/src/ice_main.c 15 | @@ -30,7 +30,7 @@ 16 | #define DRV_VERSION_MINOR 12 17 | #define DRV_VERSION_BUILD 7 18 | 19 | -#define DRV_VERSION "1.12.7" 20 | +#define DRV_VERSION "Kahawai_1.12.7_20231116" 21 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 22 | #ifdef ICE_ADD_PROBES 23 | #define DRV_VERSION_EXTRA "_probes" 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /patches/ice_drv/1.13.7/0004-version-update-to-Kahawai_1.13.7_20240220.patch: -------------------------------------------------------------------------------- 1 | From 6b7a14569e11c9822ebe522750c0365f023e63ec Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Thu, 16 Nov 2023 14:19:55 +0800 4 | Subject: [PATCH 4/4] version: update to Kahawai_1.13.7_20240220 5 | 6 | Signed-off-by: Frank Du 7 | --- 8 | src/ice_main.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_main.c b/src/ice_main.c 12 | index e9cc474..f5a2977 100644 13 | --- a/src/ice_main.c 14 | +++ b/src/ice_main.c 15 | @@ -32,7 +32,7 @@ 16 | #define DRV_VERSION_MINOR 13 17 | #define DRV_VERSION_BUILD 7 18 | 19 | -#define DRV_VERSION "1.13.7" 20 | +#define DRV_VERSION "Kahawai_1.13.7_20240220" 21 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 22 | #ifdef ICE_ADD_PROBES 23 | #define DRV_VERSION_EXTRA "_probes" 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /patches/ice_drv/1.14.9/0004-version-update-to-Kahawai_1.14.9_20240613.patch: -------------------------------------------------------------------------------- 1 | From e444a61d379f7d18fdae4e3051403c6ec099ef80 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Thu, 13 Jun 2024 10:11:29 +0800 4 | Subject: [PATCH 4/4] version: update to Kahawai_1.14.9_20240613 5 | 6 | Signed-off-by: Frank Du 7 | --- 8 | src/ice_main.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_main.c b/src/ice_main.c 12 | index 95e18ea..3a5df55 100644 13 | --- a/src/ice_main.c 14 | +++ b/src/ice_main.c 15 | @@ -32,7 +32,7 @@ 16 | #define DRV_VERSION_MINOR 14 17 | #define DRV_VERSION_BUILD 9 18 | 19 | -#define DRV_VERSION "1.14.9" 20 | +#define DRV_VERSION "Kahawai_1.14.9_20240613" 21 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 22 | #ifdef ICE_ADD_PROBES 23 | #define DRV_VERSION_EXTRA "_probes" 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/loop_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | # Disable error break since we need loop all jsons 7 | # set -e 8 | 9 | RXTXAPP=../../build/app/RxTxApp 10 | TEST_JSON_DIR=. 11 | TEST_TIME_SEC=100 12 | #TEST_TIME_SEC=20 13 | TEST_LOOP=1 14 | 15 | export KAHAWAI_CFG_PATH=../../kahawai.json 16 | echo "TEST_TIME_SEC: ${TEST_TIME_SEC}s" 17 | for ((loop = 0; loop < TEST_LOOP; loop++)); do 18 | cur_json_idx=0 19 | for json_file in loop_json/*.json; do 20 | cmd="$RXTXAPP --log_level error --test_time $TEST_TIME_SEC --config_file $TEST_JSON_DIR/$json_file" 21 | echo "test with cmd: $cmd, index: $cur_json_idx, loop: $loop" 22 | cur_json_idx=$((cur_json_idx + 1)) 23 | $cmd 24 | echo "Test OK with config: $json_file" 25 | echo "" 26 | done 27 | done 28 | 29 | unset KAHAWAI_CFG_PATH 30 | 31 | echo "All test cases finished" 32 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/perf_json/1080p_32v_rx_only.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:00.0", 5 | "ip": "192.168.17.102" 6 | } 7 | ], 8 | "rx_sessions": [ 9 | { 10 | "ip": [ 11 | "239.168.17.102" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "video": [ 17 | { 18 | "replicas": 32, 19 | "type": "frame", 20 | "pacing": "gap", 21 | "start_port": 20000, 22 | "payload_type": 112, 23 | "tr_offset": "default", 24 | "video_format": "i1080p59", 25 | "pg_format": "YUV_422_10bit", 26 | "display": false 27 | } 28 | ] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /config/tx_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.0", 5 | "ip": "192.168.30.10" 6 | } 7 | ], 8 | "tx_sessions": [ 9 | { 10 | "dip": [ 11 | "239.1.1.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "st20p": [ 17 | { 18 | "replicas": 1, 19 | "start_port": 20000, 20 | "payload_type": 112, 21 | "width": 1920, 22 | "height": 1080, 23 | "fps": "p59", 24 | "device": "AUTO", 25 | "input_format": "YUV422PLANAR10LE", 26 | "transport_format": "YUV_422_10bit", 27 | "st20p_url": "./yuv422p10le_1080p.yuv" 28 | } 29 | ] 30 | } 31 | ] 32 | } -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/dpdk_af_xdp_json/rx.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "dpdk_af_xdp:enp175s0f0np0", 5 | }, 6 | ], 7 | "rx_sessions": [ 8 | { 9 | "ip": [ 10 | "192.168.108.201" 11 | ], 12 | "interface": [ 13 | 0 14 | ], 15 | "video": [ 16 | { 17 | "replicas": 1, 18 | "type": "frame", 19 | "pacing": "gap", 20 | "start_port": 20000, 21 | "payload_type": 112, 22 | "tr_offset": "default", 23 | "video_format": "i1080p59", 24 | "pg_format": "YUV_422_10bit", 25 | "display": false, 26 | "measure_latency": true, 27 | } 28 | ] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /config/legacy/4k_tx_1port_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.0", 5 | "ip": "192.168.84.188" 6 | } 7 | ], 8 | "tx_sessions": [ 9 | { 10 | "dip": [ 11 | "239.168.84.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "video": [ 17 | { 18 | "replicas": 1, 19 | "type": "frame", 20 | "pacing": "gap", 21 | "packing": "BPM", 22 | "start_port": 20000, 23 | "payload_type": 112, 24 | "tr_offset": "default", 25 | "video_format": "i2160p59", 26 | "pg_format": "YUV_422_10bit", 27 | "video_url": "./test_4k.yuv" 28 | } 29 | ] 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /config/legacy/8k_tx_1port_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.0", 5 | "ip": "192.168.84.188" 6 | } 7 | ], 8 | "tx_sessions": [ 9 | { 10 | "dip": [ 11 | "239.168.84.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "video": [ 17 | { 18 | "replicas": 1, 19 | "type": "frame", 20 | "pacing": "gap", 21 | "packing": "BPM", 22 | "start_port": 20000, 23 | "payload_type": 112, 24 | "tr_offset": "default", 25 | "video_format": "i4320p59", 26 | "pg_format": "YUV_422_10bit", 27 | "video_url": "./test_8k.yuv" 28 | } 29 | ] 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /config/legacy/test_tx_1port_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.0", 5 | "ip": "192.168.84.188" 6 | } 7 | ], 8 | "tx_sessions": [ 9 | { 10 | "dip": [ 11 | "239.168.84.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "video": [ 17 | { 18 | "replicas": 1, 19 | "type": "frame", 20 | "pacing": "gap", 21 | "packing": "BPM", 22 | "start_port": 20000, 23 | "payload_type": 112, 24 | "tr_offset": "default", 25 | "video_format": "i1080p59", 26 | "pg_format": "YUV_422_10bit", 27 | "video_url": "./test.yuv" 28 | } 29 | ] 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /tests/integration_tests/noctx/core/handler_base.hpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2025 Intel Corporation 3 | */ 4 | 5 | #pragma once 6 | 7 | #include 8 | #include 9 | 10 | #include "session.hpp" 11 | #include "strategy.hpp" 12 | #include "tests.hpp" 13 | 14 | class Handlers { 15 | public: 16 | explicit Handlers(st_tests_context* ctx, 17 | FrameTestStrategy* frameTestStrategy = nullptr); 18 | virtual ~Handlers(); 19 | 20 | void startSession(std::vector&)>> threadFunctions, 21 | bool isRx); 22 | void stopSession(); 23 | 24 | void setSessionPortsRx(struct st_rx_port* port, int rxPortIdx, int rxPortRedundantIdx); 25 | void setSessionPortsTx(struct st_tx_port* port, int txPortIdx, int txPortRedundantIdx); 26 | 27 | Session session; 28 | st_tests_context* ctx; 29 | FrameTestStrategy* frameTestStrategy; 30 | }; 31 | -------------------------------------------------------------------------------- /config/rx_1v.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.1", 5 | "ip": "192.168.30.11" 6 | } 7 | ], 8 | "rx_sessions": [ 9 | { 10 | "ip": [ 11 | "239.1.1.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "st20p": [ 17 | { 18 | "replicas": 1, 19 | "start_port": 20000, 20 | "payload_type": 112, 21 | "width": 1920, 22 | "height": 1080, 23 | "fps": "p59", 24 | "device": "AUTO", 25 | "output_format": "YUV422PLANAR10LE", 26 | "transport_format": "YUV_422_10bit", 27 | "display": false, 28 | "measure_latency": true 29 | } 30 | ] 31 | } 32 | ] 33 | } -------------------------------------------------------------------------------- /format-coding.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | # Based on clang-format 7 | # For ubuntu, pls "apt-get install clang-format" 8 | # When updating clang format version, remeber to update also GHA clang lister version: 9 | # - uses: DoozyX/clang-format-lint-action@v0.18.2 10 | # with: 11 | # clangFormatVersion: '14' 12 | # source: '.' 13 | # extensions: 'hpp,h,cpp,c,cc' 14 | # in 15 | # .github/workflows/afxdp_build.yml 16 | # .github/workflows/centos_build.yml 17 | # .github/workflows/tools_build.yml 18 | # .github/workflows/ubuntu_build.yml 19 | 20 | set -e 21 | 22 | CLANG_FORMAT_TOOL="clang-format-14" # for super-linter v6 action 23 | echo "clang-format check" 24 | find . -path ./build -prune -o -regex '.*\.\(cpp\|hpp\|cc\|c\|h\)' ! -name 'pymtl_wrap.c' \ 25 | ! -name 'vmlinux.h' -exec ${CLANG_FORMAT_TOOL} --verbose -i {} + 26 | 27 | black python/ 28 | isort python/ 29 | -------------------------------------------------------------------------------- /lib/src/mt_quirk.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_QUIRK_HEAD_H_ 6 | #define _MT_LIB_QUIRK_HEAD_H_ 7 | 8 | static inline unsigned int mt_rte_ring_sc_dequeue_bulk(struct rte_ring* r, 9 | void** obj_table, unsigned int n, 10 | unsigned int* available) { 11 | #if defined(__clang__) /* fix for clang release build */ 12 | /* not sure why clang has issue with variable n, probably optimized code sequence */ 13 | if (n == 4) 14 | return rte_ring_sc_dequeue_bulk(r, obj_table, 4, available); 15 | else if (n == 1) 16 | return rte_ring_sc_dequeue_bulk(r, obj_table, 1, available); 17 | else 18 | return rte_ring_sc_dequeue_bulk(r, obj_table, n, available); 19 | #else 20 | return rte_ring_sc_dequeue_bulk(r, obj_table, n, available); 21 | #endif 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/multi_port_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | # Disable error break since we need loop all jsons 7 | # set -e 8 | 9 | RXTXAPP=../../build/app/RxTxApp 10 | TEST_JSON_DIR=. 11 | TEST_TIME_SEC=100 12 | #TEST_TIME_SEC=20 13 | TEST_LOOP=1 14 | 15 | export KAHAWAI_CFG_PATH=../../kahawai.json 16 | echo "Total ${#TEST_JSON_LIST[@]} cases, each with ${TEST_TIME_SEC}s" 17 | for ((loop = 0; loop < TEST_LOOP; loop++)); do 18 | cur_json_idx=0 19 | for json_file in multi_port_json/*.json; do 20 | cmd="$RXTXAPP --log_level error --test_time $TEST_TIME_SEC --config_file $TEST_JSON_DIR/$json_file" 21 | echo "test with cmd: $cmd, index: $cur_json_idx, loop: $loop" 22 | cur_json_idx=$((cur_json_idx + 1)) 23 | $cmd 24 | echo "Test OK with config: $json_file" 25 | echo "" 26 | done 27 | done 28 | 29 | unset KAHAWAI_CFG_PATH 30 | 31 | echo "All test cases finished" 32 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/afxdp_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | # Disable error break since we need loop all jsons 7 | # set -e 8 | 9 | RXTXAPP=../../build/app/RxTxApp 10 | TEST_JSON_DIR=. 11 | TEST_TIME_SEC=100 12 | TEST_TIME_SEC=20 13 | TEST_LOOP=1 14 | 15 | export KAHAWAI_CFG_PATH=../../kahawai.json 16 | 17 | echo "AFXDP: total ${#TEST_JSON_LIST[@]} cases, each with ${TEST_TIME_SEC}s" 18 | for ((loop = 0; loop < TEST_LOOP; loop++)); do 19 | cur_json_idx=0 20 | for json_file in afxdp_json/*.json; do 21 | cmd="$RXTXAPP --log_level error --test_time $TEST_TIME_SEC --config_file $TEST_JSON_DIR/$json_file" 22 | echo "test with cmd: $cmd, index: $cur_json_idx, loop: $loop" 23 | cur_json_idx=$((cur_json_idx + 1)) 24 | $cmd 25 | echo "Test OK with config: $json_file" 26 | echo "" 27 | done 28 | done 29 | 30 | unset KAHAWAI_CFG_PATH 31 | 32 | echo "AFXDP: all test cases finished" 33 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/hdr_split_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | # Disable error break since we need loop all jsons 7 | # set -e 8 | 9 | RXTXAPP=../../build/app/RxTxApp 10 | TEST_JSON_DIR=. 11 | TEST_TIME_SEC=60 12 | TEST_LOOP=1 13 | 14 | export KAHAWAI_CFG_PATH=../../kahawai.json 15 | echo "Hdr_split: total ${#TEST_JSON_LIST[@]} cases, each with ${TEST_TIME_SEC}s" 16 | for ((loop = 0; loop < TEST_LOOP; loop++)); do 17 | cur_json_idx=0 18 | for json_file in hdr_split_json/*.json; do 19 | cmd="$RXTXAPP --log_level info --test_time $TEST_TIME_SEC --config_file $TEST_JSON_DIR/$json_file --hdr_split" 20 | echo "test with cmd: $cmd, index: $cur_json_idx, loop: $loop" 21 | shellcheck ./tests/script/hdr_split_test.sh 22 | $cmd 23 | echo "Test OK with config: $json_file" 24 | echo "" 25 | done 26 | done 27 | 28 | unset KAHAWAI_CFG_PATH 29 | 30 | echo "Hdr_split: all test cases finished" 31 | -------------------------------------------------------------------------------- /patches/ice_drv/1.16.3/0004-version-update-to-Kahawai_1.16.3_20250327.patch: -------------------------------------------------------------------------------- 1 | From 74a8e9637cd46b7d3ded0ac193a52e3a28fb8fbc Mon Sep 17 00:00:00 2001 2 | From: "Gryska, ArkadiuszX" 3 | Date: Thu, 27 Mar 2025 16:01:13 +0100 4 | Subject: [PATCH] [PATCH 4/4] version: update to Kahawai_1.16.3_20250327 5 | 6 | Signed-off-by: Gryska, ArkadiuszX 7 | --- 8 | src/ice_main.c | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_main.c b/src/ice_main.c 12 | index a8c1721..198f09b 100644 13 | --- a/src/ice_main.c 14 | +++ b/src/ice_main.c 15 | @@ -33,7 +33,7 @@ 16 | #define DRV_VERSION_MINOR 16 17 | #define DRV_VERSION_BUILD 3 18 | 19 | -#define DRV_VERSION "1.16.3" 20 | +#define DRV_VERSION "Kahawai_1.16.3_20250327" 21 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 22 | #ifdef ICE_ADD_PROBES 23 | #define DRV_VERSION_EXTRA "_probes" 24 | -- 25 | 2.42.0.windows.1 26 | 27 | -------------------------------------------------------------------------------- /script/build_st22_avcodec_plugin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | set -e 7 | 8 | script_name=$(basename "${BASH_SOURCE[0]}") 9 | script_path=$(readlink -qe "${BASH_SOURCE[0]}") 10 | script_folder=${script_path/$script_name/} 11 | 12 | cd "${script_folder}" 13 | 14 | function usage() { 15 | echo "Usage: $0 [debug]" 16 | exit 0 17 | } 18 | 19 | buildtype=release 20 | 21 | if [ -n "$1" ]; then 22 | case $1 in 23 | "debug") 24 | buildtype=debug 25 | ;; 26 | "plain") 27 | buildtype=plain 28 | ;; 29 | *) 30 | usage 31 | ;; 32 | esac 33 | fi 34 | 35 | WORKSPACE=$PWD 36 | ST22_AVCODEC_PLUGIN_BUILD_DIR=${WORKSPACE}/build/st22_avcodec_plugin 37 | 38 | # build st22 avcodec plugin 39 | pushd "${script_folder}/../plugins/st22_avcodec/" 40 | meson "${ST22_AVCODEC_PLUGIN_BUILD_DIR}" -Dbuildtype="$buildtype" 41 | popd 42 | pushd "${ST22_AVCODEC_PLUGIN_BUILD_DIR}" 43 | ninja 44 | sudo ninja install 45 | popd 46 | -------------------------------------------------------------------------------- /patches/ice_drv/1.11.17.1/0003-version-update-to-Kahawai_1.11.17.1_20230728.patch: -------------------------------------------------------------------------------- 1 | From f2ee792d474396f725f19b5706f1d378752dfef2 Mon Sep 17 00:00:00 2001 2 | From: Han Qiang 3 | Date: Tue, 25 Jul 2023 21:19:31 +0800 4 | Subject: [PATCH 3/3] version: update to Kahawai_1.11.17.1_20230728 5 | 6 | Signed-off-by: Han Qiang 7 | Signed-off-by: Frank Du 8 | --- 9 | src/ice_main.c | 2 +- 10 | 1 file changed, 1 insertion(+), 1 deletion(-) 11 | 12 | diff --git a/src/ice_main.c b/src/ice_main.c 13 | index dd4ee2b..fd9e611 100644 14 | --- a/src/ice_main.c 15 | +++ b/src/ice_main.c 16 | @@ -29,7 +29,7 @@ 17 | #define DRV_VERSION_MINOR 11 18 | #define DRV_VERSION_BUILD 17 19 | 20 | -#define DRV_VERSION "1.11.17.1" 21 | +#define DRV_VERSION "Kahawai_1.11.17.1_20230728" 22 | #define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver" 23 | #ifdef ICE_ADD_PROBES 24 | #define DRV_VERSION_EXTRA "_probes" 25 | -- 26 | 2.34.1 27 | 28 | -------------------------------------------------------------------------------- /lib/src/datapath/mt_shared_rss.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2023 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_SHARED_RSS_HEAD_H_ 6 | #define _MT_LIB_SHARED_RSS_HEAD_H_ 7 | 8 | #include "../mt_main.h" 9 | 10 | int mt_srss_init(struct mtl_main_impl* impl); 11 | 12 | int mt_srss_uinit(struct mtl_main_impl* impl); 13 | 14 | struct mt_srss_entry* mt_srss_get(struct mtl_main_impl* impl, enum mtl_port port, 15 | struct mt_rxq_flow* flow); 16 | static inline uint16_t mt_srss_queue_id(struct mt_srss_entry* entry) { 17 | return entry->idx; /* use dummy id*/ 18 | } 19 | static inline uint16_t mt_srss_burst(struct mt_srss_entry* entry, 20 | struct rte_mbuf** rx_pkts, const uint16_t nb_pkts) { 21 | uint16_t n = rte_ring_sc_dequeue_burst(entry->ring, (void**)rx_pkts, nb_pkts, NULL); 22 | entry->stat_dequeue_cnt += n; 23 | return n; 24 | } 25 | int mt_srss_put(struct mt_srss_entry* entry); 26 | 27 | #endif -------------------------------------------------------------------------------- /patches/dpdk/21.05/0001-temp-fix-to-enable-multicast-rx-on-ice.patch: -------------------------------------------------------------------------------- 1 | From 9c7b9ac4a7f42301328cbb94cfa7196ead5699b5 Mon Sep 17 00:00:00 2001 2 | From: ywan171 3 | Date: Fri, 16 Jul 2021 04:23:00 +0200 4 | Subject: [PATCH] temp fix to enable multicast rx on ice will not be needed 5 | with new DDP released from EPG, suppose along with dpdk 21.11 6 | 7 | Signed-off-by: ywan171 8 | --- 9 | drivers/net/ice/ice_fdir_filter.c | 2 +- 10 | 1 file changed, 1 insertion(+), 1 deletion(-) 11 | 12 | diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c 13 | index 092c70450..de76aca55 100644 14 | --- a/drivers/net/ice/ice_fdir_filter.c 15 | +++ b/drivers/net/ice/ice_fdir_filter.c 16 | @@ -2142,5 +2142,5 @@ static struct ice_flow_parser ice_fdir_parser = { 17 | 18 | RTE_INIT(ice_fdir_engine_register) 19 | { 20 | - ice_register_flow_engine(&ice_fdir_engine); 21 | +// ice_register_flow_engine(&ice_fdir_engine); 22 | } 23 | -- 24 | 2.25.1 25 | 26 | -------------------------------------------------------------------------------- /plugins/sample/convert_plugin_sample.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _CONVERT_PLUGIN_SAMPLE_H_ 6 | #define _CONVERT_PLUGIN_SAMPLE_H_ 7 | 8 | #include 9 | #include 10 | 11 | #define MAX_COLOR_CONVERT_SESSIONS (8) 12 | 13 | struct converter_session { 14 | int idx; 15 | 16 | struct st20_converter_create_req req; 17 | st20p_convert_session session_p; 18 | bool stop; 19 | pthread_t convert_thread; 20 | pthread_cond_t wake_cond; 21 | pthread_mutex_t wake_mutex; 22 | 23 | int frame_cnt; 24 | }; 25 | 26 | struct convert_ctx { 27 | st20_converter_dev_handle converter_dev_handle; 28 | struct converter_session* converter_sessions[MAX_COLOR_CONVERT_SESSIONS]; 29 | }; 30 | 31 | /* the APIs for plugin */ 32 | int st_plugin_get_meta(struct st_plugin_meta* meta); 33 | st_plugin_priv st_plugin_create(mtl_handle st); 34 | int st_plugin_free(st_plugin_priv handle); 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /lib/src/mt_cni.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _MT_LIB_CNI_HEAD_H_ 6 | #define _MT_LIB_CNI_HEAD_H_ 7 | 8 | #include "mt_main.h" 9 | 10 | #define ST_CNI_RX_BURST_SIZE (32) 11 | 12 | int mt_cni_init(struct mtl_main_impl* impl); 13 | int mt_cni_uinit(struct mtl_main_impl* impl); 14 | int mt_cni_start(struct mtl_main_impl* impl); 15 | int mt_cni_stop(struct mtl_main_impl* impl); 16 | 17 | static inline struct mt_cni_impl* mt_get_cni(struct mtl_main_impl* impl) { 18 | return &impl->cni; 19 | } 20 | 21 | struct mt_csq_entry* mt_csq_get(struct mtl_main_impl* impl, enum mtl_port port, 22 | struct mt_rxq_flow* flow); 23 | static inline uint16_t mt_csq_queue_id(struct mt_csq_entry* entry) { 24 | return entry->idx; 25 | } 26 | uint16_t mt_csq_burst(struct mt_csq_entry* entry, struct rte_mbuf** rx_pkts, 27 | uint16_t nb_pkts); 28 | int mt_csq_put(struct mt_csq_entry* entry); 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /patches/ice_drv/2.2.8/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | From a1fe56b5452ad72e9afc34915c55db98e628b5d3 Mon Sep 17 00:00:00 2001 2 | From: Szumski Tomasz 3 | Date: Fri, 11 Jul 2025 13:34:04 +0200 4 | Subject: [PATCH 2/4] ice: set ICE_SCHED_DFLT_BURST_SIZE to 2048 5 | 6 | --- 7 | src/ice_type.h | 2 +- 8 | 1 file changed, 1 insertion(+), 1 deletion(-) 9 | 10 | diff --git a/src/ice_type.h b/src/ice_type.h 11 | index cf44975..dec67e2 100644 12 | --- a/src/ice_type.h 13 | +++ b/src/ice_type.h 14 | @@ -1122,7 +1122,7 @@ enum ice_rl_type { 15 | #define ICE_SCHED_DFLT_RL_PROF_ID 0 16 | #define ICE_SCHED_NO_SHARED_RL_PROF_ID 0xFFFF 17 | #define ICE_SCHED_INVAL_PROF_ID 0xFFFF 18 | -#define ICE_SCHED_DFLT_BURST_SIZE (15 * 1024) /* in bytes (15k) */ 19 | +#define ICE_SCHED_DFLT_BURST_SIZE (2 * 1024) /* in bytes (15k) */ 20 | 21 | /* Access Macros for Tx Sched RL Profile data */ 22 | #define ICE_TXSCHED_GET_RL_PROF_ID(p) le16_to_cpu((p)->info.profile_id) 23 | -- 24 | 2.34.1 25 | 26 | -------------------------------------------------------------------------------- /patches/dpdk/23.07/windows/0010-Fix-list-dir-glob-expassion-in-msys2.patch: -------------------------------------------------------------------------------- 1 | From 3a7d95bc981a809df61cbf30ff0cad5666068b07 Mon Sep 17 00:00:00 2001 2 | From: Ric Li 3 | Date: Thu, 14 Sep 2023 10:49:24 -0700 4 | Subject: [PATCH] Fix list dir glob expassion in msys2 5 | 6 | --- 7 | app/meson.build | 2 +- 8 | 1 file changed, 1 insertion(+), 1 deletion(-) 9 | 10 | diff --git a/app/meson.build b/app/meson.build 11 | index 4fc1a83eba..ce42bdcd52 100644 12 | --- a/app/meson.build 13 | +++ b/app/meson.build 14 | @@ -7,7 +7,7 @@ disable_apps = run_command(list_dir_globs, disable_apps, check: true).stdout().s 15 | enable_apps = ',' + get_option('enable_apps') 16 | enable_apps = run_command(list_dir_globs, enable_apps, check: true).stdout().split() 17 | if enable_apps.length() == 0 18 | - enable_apps = run_command(list_dir_globs, '*', check: true).stdout().split() 19 | + enable_apps = run_command(list_dir_globs, '*/', check: true).stdout().split() 20 | endif 21 | 22 | apps = [ 23 | -- 24 | 2.40.1.windows.1 25 | 26 | -------------------------------------------------------------------------------- /rust/src/imtl/version.rs: -------------------------------------------------------------------------------- 1 | /*! 2 | * Querying MTL Version 3 | */ 4 | 5 | use std::fmt; 6 | 7 | use crate::sys; 8 | 9 | /// A structure that contains information about the version in use. 10 | #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] 11 | pub struct Version { 12 | /// major version 13 | pub major: u8, 14 | /// minor version 15 | pub minor: u8, 16 | /// update version (patchlevel) 17 | pub patch: u8, 18 | } 19 | 20 | impl Version { 21 | /// Convert const numbers to Version. 22 | pub fn from_const() -> Version { 23 | Version { 24 | major: sys::MTL_VERSION_MAJOR as u8, 25 | minor: sys::MTL_VERSION_MINOR as u8, 26 | patch: sys::MTL_VERSION_LAST as u8, 27 | } 28 | } 29 | } 30 | 31 | impl fmt::Display for Version { 32 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 33 | write!(f, "{}.{}.{}", self.major, self.minor, self.patch) 34 | } 35 | } 36 | 37 | pub fn version() -> Version { 38 | Version::from_const() 39 | } 40 | -------------------------------------------------------------------------------- /patches/ice_drv/2.2.8/0003-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VSI.patch: -------------------------------------------------------------------------------- 1 | From 6cf1fc58a610b68f39e199f0cea3f9103e8fb3f4 Mon Sep 17 00:00:00 2001 2 | From: Szumski Tomasz 3 | Date: Fri, 11 Jul 2025 13:35:35 +0200 4 | Subject: [PATCH 3/4] allow VIRTCHNL_VF_LARGE_NUM_QPAIRS for ICE_LUT_VSI 5 | 6 | --- 7 | src/ice_virtchnl.c | 3 +-- 8 | 1 file changed, 1 insertion(+), 2 deletions(-) 9 | 10 | diff --git a/src/ice_virtchnl.c b/src/ice_virtchnl.c 11 | index 040a1b4..832f13d 100644 12 | --- a/src/ice_virtchnl.c 13 | +++ b/src/ice_virtchnl.c 14 | @@ -760,8 +760,7 @@ static int ice_vc_get_vf_res_msg(struct ice_vf *vf, u8 *msg) 15 | if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_USO) 16 | vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_USO; 17 | 18 | - if (vf->driver_caps & VIRTCHNL_VF_LARGE_NUM_QPAIRS && 19 | - vsi->rss_lut_type != ICE_LUT_VSI) 20 | + if (vf->driver_caps & VIRTCHNL_VF_LARGE_NUM_QPAIRS) 21 | vfres->vf_cap_flags |= VIRTCHNL_VF_LARGE_NUM_QPAIRS; 22 | 23 | /* Negotiate DCF capability. */ 24 | -- 25 | 2.34.1 26 | 27 | -------------------------------------------------------------------------------- /patches/ice_drv/1.13.7/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | From 431d23a21a680c26705f2ba5ca5140af10f44672 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Tue, 21 Feb 2023 09:37:27 +0800 4 | Subject: [PATCH 2/4] ice: set ICE_SCHED_DFLT_BURST_SIZE to 2048 5 | 6 | For st2110 rl burst optimization 7 | 8 | Signed-off-by: Frank Du 9 | --- 10 | src/ice_type.h | 2 +- 11 | 1 file changed, 1 insertion(+), 1 deletion(-) 12 | 13 | diff --git a/src/ice_type.h b/src/ice_type.h 14 | index 3adabd1..76ac0f3 100644 15 | --- a/src/ice_type.h 16 | +++ b/src/ice_type.h 17 | @@ -1054,7 +1054,7 @@ enum ice_rl_type { 18 | #define ICE_SCHED_DFLT_RL_PROF_ID 0 19 | #define ICE_SCHED_NO_SHARED_RL_PROF_ID 0xFFFF 20 | #define ICE_SCHED_INVAL_PROF_ID 0xFFFF 21 | -#define ICE_SCHED_DFLT_BURST_SIZE (15 * 1024) /* in bytes (15k) */ 22 | +#define ICE_SCHED_DFLT_BURST_SIZE (2 * 1024) /* in bytes (2k) */ 23 | 24 | /* Access Macros for Tx Sched RL Profile data */ 25 | #define ICE_TXSCHED_GET_RL_PROF_ID(p) le16_to_cpu((p)->info.profile_id) 26 | -------------------------------------------------------------------------------- /patches/dpdk/21.08/windows/0006-Bind-thread-to-dedicate-core-in-windows-version.patch: -------------------------------------------------------------------------------- 1 | From e0d9c0b36a566627472c57c668ce542bb95a1eb6 Mon Sep 17 00:00:00 2001 2 | From: qiaoliu 3 | Date: Thu, 20 Jan 2022 10:49:47 +0800 4 | Subject: [PATCH 6/7] Bind thread to dedicate core in windows version 5 | 6 | --- 7 | lib/eal/windows/eal.c | 4 ++++ 8 | 1 file changed, 4 insertions(+) 9 | 10 | diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c 11 | index 8b33c27864..a46c540f75 100644 12 | --- a/lib/eal/windows/eal.c 13 | +++ b/lib/eal/windows/eal.c 14 | @@ -397,6 +397,10 @@ rte_eal_init(int argc, char **argv) 15 | /* create a thread for each lcore */ 16 | if (eal_thread_create(&lcore_config[i].thread_id) != 0) 17 | rte_panic("Cannot create thread\n"); 18 | + ret = pthread_setaffinity_np(lcore_config[i].thread_id, 19 | + sizeof(rte_cpuset_t), &lcore_config[i].cpuset); 20 | + if (ret != 0) 21 | + rte_panic("Cannot set affinity\n"); 22 | } 23 | 24 | /* Initialize services so drivers can register services during probe. */ 25 | -- 26 | 2.17.1 27 | 28 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/loop_json/1080p_16v_rtp_tx_only.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.0", 5 | "ip": "192.168.17.101" 6 | }, 7 | { 8 | "name": "0000:af:01.1", 9 | "ip": "192.168.17.102" 10 | } 11 | ], 12 | "tx_sessions": [ 13 | { 14 | "dip": [ 15 | "239.168.17.102" 16 | ], 17 | "interface": [ 18 | 0 19 | ], 20 | "video": [ 21 | { 22 | "replicas": 16, 23 | "type": "rtp", 24 | "pacing": "gap", 25 | "packing": "BPM", 26 | "start_port": 20000, 27 | "payload_type": 112, 28 | "tr_offset": "default", 29 | "video_format": "i1080p59", 30 | "pg_format": "YUV_422_10bit", 31 | "video_url": "./test.yuv" 32 | } 33 | ] 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/loop_json/1080p_32v_tx_only.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.0", 5 | "ip": "192.168.17.101" 6 | }, 7 | { 8 | "name": "0000:af:01.1", 9 | "ip": "192.168.17.102" 10 | } 11 | ], 12 | "tx_sessions": [ 13 | { 14 | "dip": [ 15 | "239.168.17.102" 16 | ], 17 | "interface": [ 18 | 0 19 | ], 20 | "video": [ 21 | { 22 | "replicas": 32, 23 | "type": "frame", 24 | "pacing": "gap", 25 | "packing": "BPM", 26 | "start_port": 20000, 27 | "payload_type": 112, 28 | "tr_offset": "default", 29 | "video_format": "i1080p59", 30 | "pg_format": "YUV_422_10bit", 31 | "video_url": "./test.yuv" 32 | } 33 | ] 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /app/sample/msvc/imtl_sample/imtl_sample.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | -------------------------------------------------------------------------------- /patches/ice_drv/1.9.11/0003-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | From 5375b78f740e2678134bd5ffc0a863b2053440a6 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Tue, 21 Feb 2023 09:37:27 +0800 4 | Subject: [PATCH 3/4] ice: set ICE_SCHED_DFLT_BURST_SIZE to 2048 5 | 6 | For st2110 rl burst optimization 7 | 8 | Signed-off-by: Frank Du 9 | --- 10 | src/ice_type.h | 2 +- 11 | 1 file changed, 1 insertion(+), 1 deletion(-) 12 | 13 | diff --git a/src/ice_type.h b/src/ice_type.h 14 | index a687dad..1042fe4 100644 15 | --- a/src/ice_type.h 16 | +++ b/src/ice_type.h 17 | @@ -898,7 +898,7 @@ enum ice_rl_type { 18 | #define ICE_SCHED_NO_SHARED_RL_PROF_ID 0xFFFF 19 | #define ICE_SCHED_DFLT_BW_WT 4 20 | #define ICE_SCHED_INVAL_PROF_ID 0xFFFF 21 | -#define ICE_SCHED_DFLT_BURST_SIZE (15 * 1024) /* in bytes (15k) */ 22 | +#define ICE_SCHED_DFLT_BURST_SIZE (2 * 1024) /* in bytes (2k) */ 23 | 24 | /* Access Macros for Tx Sched RL Profile data */ 25 | #define ICE_TXSCHED_GET_RL_PROF_ID(p) le16_to_cpu((p)->info.profile_id) 26 | -- 27 | 2.34.1 28 | 29 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/st2110_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2022 Intel Corporation 5 | 6 | set -e 7 | 8 | if [ -n "$1" ]; then 9 | P_PORT=$1 10 | else 11 | # default 12 | P_PORT=0000:af:01.0 13 | fi 14 | if [ -n "$2" ]; then 15 | R_PORT=$2 16 | else 17 | # default 18 | R_PORT=0000:af:01.1 19 | fi 20 | if [ -n "$3" ]; then 21 | DMA_PORT=$3 22 | else 23 | # default 24 | DMA_PORT=0000:80:04.0 25 | fi 26 | 27 | echo "P_PORT: $P_PORT, R_PORT: $R_PORT, DMA_PORT: $DMA_PORT" 28 | 29 | echo "Test with st2110" 30 | ./build/tests/KahawaiTest --auto_start_stop --p_port "$P_PORT" --r_port "$R_PORT" --dma_dev "$DMA_PORT" 31 | echo "Test OK" 32 | echo "" 33 | 34 | echo "Test with st2110 RSS l4 udp" 35 | ./build/tests/KahawaiTest --auto_start_stop --p_port "$P_PORT" --r_port "$R_PORT" --dma_dev "$DMA_PORT" --rss_mode l3_l4 --gtest_filter="Main.*:St20p.*" 36 | #./build/tests/KahawaiTest --auto_start_stop --p_port "$P_PORT" --r_port "$R_PORT" --dma_dev "$DMA_PORT" --rss_mode l3_l4 37 | echo "Test OK" 38 | echo "" 39 | 40 | echo "All done" 41 | -------------------------------------------------------------------------------- /config/tx_1v_user_pacing.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.0", 5 | "ip": "192.168.30.10" 6 | } 7 | ], 8 | "tx_sessions": [ 9 | { 10 | "dip": [ 11 | "239.1.1.1" 12 | ], 13 | "interface": [ 14 | 0 15 | ], 16 | "st20p": [ 17 | { 18 | "replicas": 1, 19 | "start_port": 20000, 20 | "payload_type": 112, 21 | "width": 1920, 22 | "height": 1080, 23 | "fps": "p59", 24 | "device": "AUTO", 25 | "input_format": "YUV422PLANAR10LE", 26 | "transport_format": "YUV_422_10bit", 27 | "st20p_url": "./yuv422p10le_1080p.yuv", 28 | "user_timestamp": true, 29 | "user_pacing": true 30 | } 31 | ], 32 | "user_time_offset" : 20000000 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /patches/ice_drv/1.11.14/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | From 4f56ee281950a76d997373dded2163a39a23c901 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Tue, 21 Feb 2023 09:37:27 +0800 4 | Subject: [PATCH 2/3] ice: set ICE_SCHED_DFLT_BURST_SIZE to 2048 5 | 6 | For st2110 rl burst optimization 7 | 8 | Signed-off-by: Frank Du 9 | --- 10 | src/ice_type.h | 2 +- 11 | 1 file changed, 1 insertion(+), 1 deletion(-) 12 | 13 | diff --git a/src/ice_type.h b/src/ice_type.h 14 | index 81d52ed..13e6168 100644 15 | --- a/src/ice_type.h 16 | +++ b/src/ice_type.h 17 | @@ -943,7 +943,7 @@ enum ice_rl_type { 18 | #define ICE_SCHED_NO_SHARED_RL_PROF_ID 0xFFFF 19 | #define ICE_SCHED_DFLT_BW_WT 4 20 | #define ICE_SCHED_INVAL_PROF_ID 0xFFFF 21 | -#define ICE_SCHED_DFLT_BURST_SIZE (15 * 1024) /* in bytes (15k) */ 22 | +#define ICE_SCHED_DFLT_BURST_SIZE (2 * 1024) /* in bytes (2k) */ 23 | 24 | /* Access Macros for Tx Sched RL Profile data */ 25 | #define ICE_TXSCHED_GET_RL_PROF_ID(p) le16_to_cpu((p)->info.profile_id) 26 | -- 27 | 2.34.1 28 | 29 | -------------------------------------------------------------------------------- /patches/ice_drv/1.12.7/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | From 431d23a21a680c26705f2ba5ca5140af10f44672 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Tue, 21 Feb 2023 09:37:27 +0800 4 | Subject: [PATCH 2/4] ice: set ICE_SCHED_DFLT_BURST_SIZE to 2048 5 | 6 | For st2110 rl burst optimization 7 | 8 | Signed-off-by: Frank Du 9 | --- 10 | src/ice_type.h | 2 +- 11 | 1 file changed, 1 insertion(+), 1 deletion(-) 12 | 13 | diff --git a/src/ice_type.h b/src/ice_type.h 14 | index c2d89fe..02d1ea2 100644 15 | --- a/src/ice_type.h 16 | +++ b/src/ice_type.h 17 | @@ -1043,7 +1043,7 @@ enum ice_rl_type { 18 | #define ICE_SCHED_NO_SHARED_RL_PROF_ID 0xFFFF 19 | #define ICE_SCHED_DFLT_BW_WT 4 20 | #define ICE_SCHED_INVAL_PROF_ID 0xFFFF 21 | -#define ICE_SCHED_DFLT_BURST_SIZE (15 * 1024) /* in bytes (15k) */ 22 | +#define ICE_SCHED_DFLT_BURST_SIZE (2 * 1024) /* in bytes (2k) */ 23 | 24 | /* Access Macros for Tx Sched RL Profile data */ 25 | #define ICE_TXSCHED_GET_RL_PROF_ID(p) le16_to_cpu((p)->info.profile_id) 26 | -- 27 | 2.34.1 28 | 29 | -------------------------------------------------------------------------------- /config/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2024 Intel Corporation 5 | 6 | set -e 7 | 8 | ST_PORT_TX=0000:af:01.1 9 | ST_PORT_RX=0000:af:01.0 10 | TX_SEC=20 11 | RX_SEC=15 12 | 13 | RXTXAPP=./build/app/RxTxApp 14 | LOG_LEVEL=error #notice 15 | 16 | test_tx_rx_config() { 17 | $RXTXAPP --config_file "$1" --p_port $ST_PORT_TX --test_time $TX_SEC --log_level $LOG_LEVEL & 18 | pid_tx=$! 19 | $RXTXAPP --config_file "$2" --p_port $ST_PORT_RX --test_time $RX_SEC --log_level $LOG_LEVEL 20 | echo "wait $1 finish" 21 | wait ${pid_tx} 22 | echo "pass with tx: $1, rx: $2" 23 | echo "" 24 | } 25 | 26 | test_tx_rx_config config/tx_1v.json config/rx_1v.json 27 | test_tx_rx_config config/tx_1v_1a_1anc.json config/rx_1v_1a_1anc.json 28 | test_tx_rx_config config/tx_2v2dest_1a_1anc.json config/rx_2v2dest_1a_1anc.json 29 | # redundant 30 | test_tx_rx_config config/redundant_tx_1v_1a_1anc.json config/redundant_rx_1v_1a_1anc.json 31 | test_tx_rx_config config/redundant_tx_2v_1a_1anc.json config/redundant_rx_2v_1a_1anc.json 32 | 33 | echo "****** All test OK ******" 34 | -------------------------------------------------------------------------------- /patches/ice_drv/1.14.9/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | From 1b547829735bae74d13c1430c4ece3d7bbfed217 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Tue, 21 Feb 2023 09:37:27 +0800 4 | Subject: [PATCH 2/4] ice: set ICE_SCHED_DFLT_BURST_SIZE to 2048 5 | 6 | For st2110 rl burst optimization 7 | 8 | Signed-off-by: Frank Du 9 | --- 10 | src/ice_type.h | 2 +- 11 | 1 file changed, 1 insertion(+), 1 deletion(-) 12 | 13 | diff --git a/src/ice_type.h b/src/ice_type.h 14 | index 8540587..abdb5ee 100644 15 | --- a/src/ice_type.h 16 | +++ b/src/ice_type.h 17 | @@ -1072,7 +1072,7 @@ enum ice_rl_type { 18 | #define ICE_SCHED_DFLT_RL_PROF_ID 0 19 | #define ICE_SCHED_NO_SHARED_RL_PROF_ID 0xFFFF 20 | #define ICE_SCHED_INVAL_PROF_ID 0xFFFF 21 | -#define ICE_SCHED_DFLT_BURST_SIZE (15 * 1024) /* in bytes (15k) */ 22 | +#define ICE_SCHED_DFLT_BURST_SIZE (2 * 1024) /* in bytes (2k) */ 23 | 24 | /* Access Macros for Tx Sched RL Profile data */ 25 | #define ICE_TXSCHED_GET_RL_PROF_ID(p) le16_to_cpu((p)->info.profile_id) 26 | -- 27 | 2.34.1 28 | 29 | -------------------------------------------------------------------------------- /script/lcore_stat_dump.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: BSD-3-Clause 4 | # Copyright 2023 Intel Corporation 5 | 6 | set -e 7 | 8 | if [ -n "$1" ]; then 9 | cpu=$1 10 | else 11 | echo "Usage: sudo ./script/lcore_stat_dump.sh 92" 12 | exit 0 13 | fi 14 | 15 | # default 10s 16 | time_s=10 17 | if [ -n "$2" ]; then 18 | time_s=$2 19 | fi 20 | 21 | out_file=lcore_status_cpu${cpu}.log 22 | 23 | echo "Collecting sched and irq events on cpu: ${cpu}, time ${time_s}s" 24 | 25 | # disable tracing 26 | echo 0 >/sys/kernel/debug/tracing/tracing_on 27 | # flush trace 28 | echo >/sys/kernel/debug/tracing/trace 29 | # enable sched 30 | echo 1 >/sys/kernel/debug/tracing/events/sched/sched_switch/enable 31 | # enable irq 32 | echo 1 >/sys/kernel/debug/tracing/events/irq_vectors/enable 33 | # enable 34 | echo 1 >/sys/kernel/debug/tracing/tracing_on 35 | 36 | # sleep 37 | sleep "${time_s}" 38 | 39 | # disable trace and save the log 40 | echo 0 >/sys/kernel/debug/tracing/tracing_on 41 | cat /sys/kernel/debug/tracing/per_cpu/cpu"${cpu}"/trace >"${out_file}" 42 | echo "Collected to file: ${out_file}" 43 | -------------------------------------------------------------------------------- /.github/workflows/dependency-review.yml: -------------------------------------------------------------------------------- 1 | # Dependency Review Action 2 | # 3 | # This Action will scan dependency manifest files that change as part of a Pull Request, 4 | # surfacing known-vulnerable versions of the packages declared or updated in the PR. 5 | # Once installed, if the workflow run is marked as required, 6 | # PRs introducing known-vulnerable packages will be blocked from merging. 7 | # 8 | # Source repository: https://github.com/actions/dependency-review-action 9 | name: Dependency Review 10 | on: [pull_request] 11 | 12 | permissions: 13 | contents: read 14 | 15 | jobs: 16 | dependency-review: 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Harden Runner 20 | uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2 21 | with: 22 | egress-policy: audit 23 | 24 | - name: 'Checkout Repository' 25 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 26 | - name: 'Dependency Review' 27 | uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9 # v4.7.1 28 | -------------------------------------------------------------------------------- /patches/ice_drv/1.13.7/0003-vf-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VS.patch: -------------------------------------------------------------------------------- 1 | From d57a6b0abaf4d1490bcef4879d8e43f398a825ac Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Wed, 21 Feb 2024 13:14:05 +0800 4 | Subject: [PATCH 3/4] vf: allow VIRTCHNL_VF_LARGE_NUM_QPAIRS for ICE_LUT_VSI 5 | 6 | Signed-off-by: Frank Du 7 | --- 8 | src/ice_virtchnl.c | 3 +-- 9 | 1 file changed, 1 insertion(+), 2 deletions(-) 10 | 11 | diff --git a/src/ice_virtchnl.c b/src/ice_virtchnl.c 12 | index 7b9d023..92d3b39 100644 13 | --- a/src/ice_virtchnl.c 14 | +++ b/src/ice_virtchnl.c 15 | @@ -782,8 +782,7 @@ static int ice_vc_get_vf_res_msg(struct ice_vf *vf, u8 *msg) 16 | if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_USO) 17 | vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_USO; 18 | 19 | - if (vf->driver_caps & VIRTCHNL_VF_LARGE_NUM_QPAIRS && 20 | - vsi->rss_lut_type != ICE_LUT_VSI) 21 | + if (vf->driver_caps & VIRTCHNL_VF_LARGE_NUM_QPAIRS) 22 | vfres->vf_cap_flags |= VIRTCHNL_VF_LARGE_NUM_QPAIRS; 23 | 24 | /* Negotiate DCF capability. */ 25 | -- 26 | 2.34.1 27 | 28 | -------------------------------------------------------------------------------- /patches/ice_drv/1.14.9/0003-vf-allow-VIRTCHNL_VF_LARGE_NUM_QPAIRS-for-ICE_LUT_VS.patch: -------------------------------------------------------------------------------- 1 | From 2f58bdf0923662cd43d2aac6e23089b81731b607 Mon Sep 17 00:00:00 2001 2 | From: Frank Du 3 | Date: Wed, 21 Feb 2024 13:14:05 +0800 4 | Subject: [PATCH 3/4] vf: allow VIRTCHNL_VF_LARGE_NUM_QPAIRS for ICE_LUT_VSI 5 | 6 | Signed-off-by: Frank Du 7 | --- 8 | src/ice_virtchnl.c | 3 +-- 9 | 1 file changed, 1 insertion(+), 2 deletions(-) 10 | 11 | diff --git a/src/ice_virtchnl.c b/src/ice_virtchnl.c 12 | index 0150e4b..acafebe 100644 13 | --- a/src/ice_virtchnl.c 14 | +++ b/src/ice_virtchnl.c 15 | @@ -760,8 +760,7 @@ static int ice_vc_get_vf_res_msg(struct ice_vf *vf, u8 *msg) 16 | if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_USO) 17 | vfres->vf_cap_flags |= VIRTCHNL_VF_OFFLOAD_USO; 18 | 19 | - if (vf->driver_caps & VIRTCHNL_VF_LARGE_NUM_QPAIRS && 20 | - vsi->rss_lut_type != ICE_LUT_VSI) 21 | + if (vf->driver_caps & VIRTCHNL_VF_LARGE_NUM_QPAIRS) 22 | vfres->vf_cap_flags |= VIRTCHNL_VF_LARGE_NUM_QPAIRS; 23 | 24 | /* Negotiate DCF capability. */ 25 | -- 26 | 2.34.1 27 | 28 | -------------------------------------------------------------------------------- /app/udp/README.md: -------------------------------------------------------------------------------- 1 | # Sample code for UDP API 2 | 3 | ## 1. Introduction 4 | 5 | The dir include the simple sample code for how to develop application quickly based on UDP API of Media Transport Library. 6 | 7 | ## 2. Samples with POSIX socket compatible(file descriptor) API 8 | 9 | [ufd_client_sample.c](ufd_client_sample.c): A udp client(tx) application based on POSIX socket compatible(file descriptor) UDP API.
10 | [ufd_client.json](ufd_client.json): The sample configuration file for the NIC port setup which used by the lib, include PCIE port, ip, netmask, gateway and other info.
11 | [ufd_server_sample.c](ufd_server_sample.c): A udp client(tx) application based on POSIX socket compatible(file descriptor) UDP API.
12 | [ufd_server.json](ufd_server.json): The sample configuration file for server sample.
13 | 14 | ### 2.1. Run 15 | 16 | Customize the p_tx_ip args and the ufd_client.json/ufd_server.json as your setup 17 | 18 | ```bash 19 | MUFD_CFG=app/udp/ufd_client.json ./build/app/UfdClientSample --p_tx_ip 192.168.85.80 20 | MUFD_CFG=app/udp/ufd_server.json ./build/app/UfdServerSample 21 | ``` 22 | -------------------------------------------------------------------------------- /patches/ice_drv/1.16.3/0002-ice-set-ICE_SCHED_DFLT_BURST_SIZE-to-2048.patch: -------------------------------------------------------------------------------- 1 | From 836516d8150d0b0642dade2ca5d8d3dcbd6f2eab Mon Sep 17 00:00:00 2001 2 | From: "Gryska, ArkadiuszX" 3 | Date: Thu, 27 Mar 2025 15:59:23 +0100 4 | Subject: [PATCH] [PATCH 2/4] ice: set ICE_SCHED_DFLT_BURST_SIZE to 2048 5 | 6 | Signed-off-by: Gryska, ArkadiuszX 7 | --- 8 | src/ice_type.h | 2 +- 9 | 1 file changed, 1 insertion(+), 1 deletion(-) 10 | 11 | diff --git a/src/ice_type.h b/src/ice_type.h 12 | index c1a749e..22bca3f 100644 13 | --- a/src/ice_type.h 14 | +++ b/src/ice_type.h 15 | @@ -1091,7 +1091,7 @@ enum ice_rl_type { 16 | #define ICE_SCHED_DFLT_RL_PROF_ID 0 17 | #define ICE_SCHED_NO_SHARED_RL_PROF_ID 0xFFFF 18 | #define ICE_SCHED_INVAL_PROF_ID 0xFFFF 19 | -#define ICE_SCHED_DFLT_BURST_SIZE (15 * 1024) /* in bytes (15k) */ 20 | +#define ICE_SCHED_DFLT_BURST_SIZE (2 * 1024) /* in bytes (2k) */ 21 | 22 | /* Access Macros for Tx Sched RL Profile data */ 23 | #define ICE_TXSCHED_GET_RL_PROF_ID(p) le16_to_cpu((p)->info.profile_id) 24 | -- 25 | 2.42.0.windows.1 26 | 27 | -------------------------------------------------------------------------------- /rust/imtl-sys/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![allow(non_upper_case_globals)] 2 | #![allow(non_camel_case_types)] 3 | #![allow(non_snake_case)] 4 | 5 | include!(concat!(env!("OUT_DIR"), "/mtl_bindings.rs")); 6 | 7 | #[cfg(test)] 8 | mod tests { 9 | use super::*; 10 | use core::ffi::CStr; 11 | 12 | #[test] 13 | fn print_version() { 14 | unsafe { 15 | let version_slice = CStr::from_ptr(mtl_version()); 16 | eprintln!("version: {}", version_slice.to_str().unwrap()); 17 | assert_ne!(0, version_slice.to_bytes().len()); 18 | } 19 | } 20 | 21 | #[test] 22 | fn simd_level() { 23 | unsafe { 24 | let cpu_level = mtl_get_simd_level(); 25 | let name = mtl_get_simd_level_name(cpu_level as u32); 26 | 27 | let name_slice = CStr::from_ptr(name); 28 | println!( 29 | "simd level by cpu: {}({})", 30 | cpu_level, 31 | name_slice.to_str().unwrap() 32 | ); 33 | assert!(cpu_level < mtl_simd_level_MTL_SIMD_LEVEL_MAX); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ld_preload/udp/meson.build: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: BSD-3-Clause 2 | # Copyright 2023 Intel Corporation 3 | 4 | udp_preload_c_args = [] 5 | # enable warning as error for non debug build 6 | if get_option('buildtype') != 'debug' 7 | udp_preload_c_args += ['-Werror'] 8 | endif 9 | udp_preload_c_args += ['-Wall'] 10 | udp_preload_c_args += ['-Wunused-parameter'] 11 | 12 | # simd build option, enable sse4.2 default, todo: do we need AVX2/AVX512 ? 13 | udp_preload_c_args += ['-msse4.2'] 14 | 15 | udp_preload_ld_args = [] 16 | 17 | udp_preload_sources = files('udp_preload.c') 18 | 19 | # default no asan dep 20 | asan_dep = [] 21 | if get_option('enable_asan') == true 22 | message('Enable -fsanitize=address') 23 | udp_preload_c_args += ['-fsanitize=address'] 24 | asan_dep = cc.find_library('asan', required : true) 25 | endif 26 | 27 | # build mtl udp preload lib 28 | shared_library('mtl_udp_preload', udp_preload_sources, 29 | c_args : udp_preload_c_args, 30 | link_args : udp_preload_ld_args, 31 | # asan should be always the first dep 32 | dependencies: [asan_dep, mtl_dep, libdl_dep], 33 | install: true 34 | ) -------------------------------------------------------------------------------- /lib/src/st2110/st_video_transmitter.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2022 Intel Corporation 3 | */ 4 | 5 | #ifndef _ST_LIB_VIDEO_TRANSMITTER_HEAD_H_ 6 | #define _ST_LIB_VIDEO_TRANSMITTER_HEAD_H_ 7 | 8 | #include "st_main.h" 9 | 10 | int st_video_transmitter_init(struct mtl_main_impl* impl, struct mtl_sch_impl* sch, 11 | struct st_tx_video_sessions_mgr* mgr, 12 | struct st_video_transmitter_impl* trs); 13 | int st_video_transmitter_uinit(struct st_video_transmitter_impl* trs); 14 | 15 | int st_video_resolve_pacing_tasklet(struct st_tx_video_session_impl* s, 16 | enum mtl_session_port port); 17 | 18 | int st20_frame_tx_start(struct mtl_main_impl* impl, struct st_tx_video_session_impl* s, 19 | enum mtl_session_port s_port, struct st_frame_trans* frame); 20 | 21 | int st20_tx_queue_fatal_error(struct mtl_main_impl* impl, 22 | struct st_tx_video_session_impl* s, 23 | enum mtl_session_port s_port); 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /patches/dpdk/21.08/0006-net-iavf-add-capability-for-runtime-rx-tx-queue-setu.patch: -------------------------------------------------------------------------------- 1 | From ebd299b3084d98d1abad8fc99fd852045e0cb285 Mon Sep 17 00:00:00 2001 2 | From: Ting Xu 3 | Date: Sun, 26 Sep 2021 07:34:09 +0000 4 | Subject: [PATCH] net/iavf: add capability for runtime rx/tx queue setup 5 | 6 | Signed-off-by: Ting Xu 7 | --- 8 | drivers/net/iavf/iavf_ethdev.c | 4 ++++ 9 | 1 file changed, 4 insertions(+) 10 | 11 | diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c 12 | index 574cfe055e..010ad12ab7 100644 13 | --- a/drivers/net/iavf/iavf_ethdev.c 14 | +++ b/drivers/net/iavf/iavf_ethdev.c 15 | @@ -970,6 +970,10 @@ iavf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) 16 | DEV_TX_OFFLOAD_MULTI_SEGS | 17 | DEV_TX_OFFLOAD_MBUF_FAST_FREE; 18 | 19 | + dev_info->dev_capa = 20 | + RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP | 21 | + RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP; 22 | + 23 | if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_CRC) 24 | dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_KEEP_CRC; 25 | 26 | -- 27 | 2.25.1 28 | 29 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/redundant_json/tx.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.2", 5 | "ip": "192.168.17.101" 6 | }, 7 | { 8 | "name": "0000:af:01.3", 9 | "ip": "192.168.17.102" 10 | } 11 | ], 12 | "tx_sessions": [ 13 | { 14 | "dip": [ 15 | "239.168.85.20", 16 | "239.168.86.20" 17 | ], 18 | "interface": [ 19 | 0, 20 | 1 21 | ], 22 | "video": [ 23 | { 24 | "replicas": 1, 25 | "type": "frame", 26 | "pacing": "gap", 27 | "packing": "BPM", 28 | "start_port": 20000, 29 | "payload_type": 112, 30 | "tr_offset": "default", 31 | "video_format": "i1080p59", 32 | "pg_format": "YUV_422_10bit", 33 | "video_url": "./test.yuv" 34 | } 35 | ], 36 | } 37 | ], 38 | } 39 | -------------------------------------------------------------------------------- /.markdown-lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ########################### 3 | ########################### 4 | ## Markdown Linter rules ## 5 | ########################### 6 | ########################### 7 | 8 | # Linter rules doc: 9 | # - https://github.com/DavidAnson/markdownlint 10 | # 11 | # Note: 12 | # To comment out a single error: 13 | # 14 | # any violations you want 15 | # 16 | # 17 | 18 | ############### 19 | # Rules by id # 20 | ############### 21 | MD004: false # Unordered list style 22 | MD007: 23 | indent: 2 # Unordered list indentation 24 | MD013: 25 | line_length: 800 # Line length 80 is far to short 26 | MD026: 27 | punctuation: ".,;:!。,;:" # List of not allowed 28 | MD029: false # Ordered list item prefix 29 | MD033: true # Allow inline HTML 30 | MD034: true # no-bare-urls 31 | MD036: false # Emphasis used instead of a heading 32 | 33 | ################# 34 | # Rules by tags # 35 | ################# 36 | blank_lines: false # Error on blank lines 37 | -------------------------------------------------------------------------------- /gpu_direct/README.md: -------------------------------------------------------------------------------- 1 | # GPU Direct Library 2 | 3 | ## General Info 4 | 5 | This library provides a wrapper for Level Zero API to init GPU and provide functions to allocate shared or device memory. 6 | 7 | ## Build 8 | 9 | Use `meson` to build the project 10 | 11 | ## How to use it 12 | 13 | 1) Use `print_gpu_drivers_and_devices` to list drivers and devices index. 14 | 2) Create `GpuContext` and use `init_gpu_device` to init gpu context. 15 | 3) Allocate memory with `gpu_allocate_device_buffer` or `gpu_allocate_shared_buffer`. 16 | 4) Use `gpu_memcpy` and `gpu_memset` for memcpy and memset operations. 17 | 5) Free memory space with `gpu_free_buf` function. 18 | 6) Free gpu context with `free_gpu_context`. 19 | 20 | ## Build MTL GPU-Direct Library 21 | 22 | To Build MTL with GPU Direct Library please refer to [doc file](../doc/gpu.md). 23 | 24 | ## Unit tests 25 | 26 | The library contains unit tests. 27 | To run the tests use: 28 | 29 | ```bash 30 | ./run_tests.sh 31 | ``` 32 | 33 | ## Links 34 | 35 | - [Level Zero Intro](https://www.intel.com/content/www/us/en/developer/articles/technical/using-oneapi-level-zero-interface.html) -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/audio_json/rx_shared_queue_750v.json: -------------------------------------------------------------------------------- 1 | { 2 | "shared_rx_queues": true, 3 | "rss_mode": "none", 4 | "max_rx_audio_sessions_per_sch": "1000", 5 | "interfaces": [ 6 | { 7 | "name": "0000:af:01.1", 8 | "ip": "192.168.17.101", 9 | "tx_queues_cnt": "0", 10 | "rx_queues_cnt": "16", 11 | }, 12 | ], 13 | "rx_sessions": [ 14 | { 15 | "ip": [ 16 | "239.168.17.100", 17 | ], 18 | "interface": [ 19 | 0 20 | ], 21 | "audio": [ 22 | { 23 | "replicas": 750, 24 | "type": "frame", 25 | "start_port": 30000, 26 | "payload_type": 111, 27 | "audio_format": "PCM16", 28 | "audio_channel": ["ST"], 29 | "audio_sampling": "48kHz", 30 | "audio_ptime": "1", 31 | "audio_url": "./test.pcm" 32 | } 33 | ] 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/audio_json/tx_shared_queue_750v.json: -------------------------------------------------------------------------------- 1 | { 2 | "shared_tx_queues": true, 3 | "tx_no_chain": true, 4 | "max_tx_audio_sessions_per_sch": "250", 5 | "interfaces": [ 6 | { 7 | "name": "0000:af:01.0", 8 | "ip": "192.168.17.101", 9 | "tx_queues_cnt": "16", 10 | "rx_queues_cnt": "0", 11 | }, 12 | ], 13 | "tx_sessions": [ 14 | { 15 | "dip": [ 16 | "239.168.17.100" 17 | ], 18 | "interface": [ 19 | 0 20 | ], 21 | "audio": [ 22 | { 23 | "replicas": 750, 24 | "type": "frame", 25 | "start_port": 30000, 26 | "payload_type": 111, 27 | "audio_format": "PCM16", 28 | "audio_channel": ["ST"], 29 | "audio_sampling": "48kHz", 30 | "audio_ptime": "1", 31 | "audio_url": "./test.pcm" 32 | } 33 | ] 34 | } 35 | ], 36 | } 37 | -------------------------------------------------------------------------------- /tests/tools/RxTxApp/script/redundant_json/hdr_split_tx.json: -------------------------------------------------------------------------------- 1 | { 2 | "interfaces": [ 3 | { 4 | "name": "0000:af:01.2", 5 | "ip": "192.168.17.101" 6 | }, 7 | { 8 | "name": "0000:af:01.3", 9 | "ip": "192.168.17.102" 10 | } 11 | ], 12 | "tx_sessions": [ 13 | { 14 | "dip": [ 15 | "239.168.85.20", 16 | "239.168.86.20" 17 | ], 18 | "interface": [ 19 | 0, 20 | 1 21 | ], 22 | "video": [ 23 | { 24 | "replicas": 1, 25 | "type": "frame", 26 | "pacing": "gap", 27 | "packing": "BPM", 28 | "start_port": 6970, 29 | "payload_type": 112, 30 | "tr_offset": "default", 31 | "video_format": "i1080p59", 32 | "pg_format": "YUV_422_10bit", 33 | "video_url": "./test.yuv" 34 | } 35 | ], 36 | } 37 | ], 38 | } 39 | -------------------------------------------------------------------------------- /patches/dpdk/22.03/windows/0011-Disable-affinity-binding-for-windows-do-have-a-perfo.patch: -------------------------------------------------------------------------------- 1 | From d1ea490218d7d877ba050e83dfa6cded2f015ccc Mon Sep 17 00:00:00 2001 2 | From: qiaoliu 3 | Date: Thu, 22 Sep 2022 09:13:48 +0800 4 | Subject: [PATCH 11/11] Disable affinity binding for windows do have a 5 | performance drop issue with neighbour CPU 6 | 7 | --- 8 | lib/eal/windows/eal.c | 4 ---- 9 | 1 file changed, 4 deletions(-) 10 | 11 | diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c 12 | index 474067e45f..e101ce36c6 100644 13 | --- a/lib/eal/windows/eal.c 14 | +++ b/lib/eal/windows/eal.c 15 | @@ -422,10 +422,6 @@ rte_eal_init(int argc, char **argv) 16 | /* create a thread for each lcore */ 17 | if (eal_thread_create(&lcore_config[i].thread_id) != 0) 18 | rte_panic("Cannot create thread\n"); 19 | - ret = pthread_setaffinity_np(lcore_config[i].thread_id, 20 | - sizeof(rte_cpuset_t), &lcore_config[i].cpuset); 21 | - if (ret != 0) 22 | - RTE_LOG(DEBUG, EAL, "Cannot set affinity\n"); 23 | } 24 | 25 | /* Initialize services so drivers can register services during probe. */ 26 | -- 27 | 2.17.1 28 | 29 | -------------------------------------------------------------------------------- /patches/dpdk/22.07/0009-ice-fix-ice_interrupt_handler-panic-when-stop.patch: -------------------------------------------------------------------------------- 1 | From 91c50af11865bc391fe10f0624f6534f58b8cb26 Mon Sep 17 00:00:00 2001 2 | From: "Du, Frank" 3 | Date: Tue, 30 Aug 2022 01:42:25 -0400 4 | Subject: [PATCH 9/9] ice: fix ice_interrupt_handler panic when stop 5 | 6 | rte_intr_callback_unregister may fail when irq cb is handling. 7 | 8 | Signed-off-by: Du, Frank 9 | --- 10 | drivers/net/ice/ice_ethdev.c | 4 ++-- 11 | 1 file changed, 2 insertions(+), 2 deletions(-) 12 | 13 | diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c 14 | index 62ebf64add..81b1ea6b63 100644 15 | --- a/drivers/net/ice/ice_ethdev.c 16 | +++ b/drivers/net/ice/ice_ethdev.c 17 | @@ -2581,8 +2581,8 @@ ice_dev_close(struct rte_eth_dev *dev) 18 | rte_intr_disable(intr_handle); 19 | 20 | /* unregister callback func from eal lib */ 21 | - rte_intr_callback_unregister(intr_handle, 22 | - ice_interrupt_handler, dev); 23 | + rte_intr_callback_unregister_sync(intr_handle, 24 | + ice_interrupt_handler, dev); 25 | 26 | return ret; 27 | } 28 | -- 29 | 2.30.2 30 | 31 | -------------------------------------------------------------------------------- /tests/integration_tests/noctx/core/session.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: BSD-3-Clause 2 | * Copyright(c) 2025 Intel Corporation 3 | */ 4 | 5 | #include "session.hpp" 6 | 7 | void Session::addThread(std::function&)> func, bool isRx) { 8 | if (!func) { 9 | return; 10 | } 11 | std::atomic& stopFlag = isRx ? stopFlagRx : stopFlagTx; 12 | 13 | if (threads_.empty()) { 14 | stopFlag.store(false); 15 | } 16 | 17 | threads_.emplace_back(func, std::ref(stopFlag)); 18 | } 19 | 20 | bool Session::isRunning() const { 21 | if (threads_.empty()) { 22 | return false; 23 | } 24 | 25 | for (const auto& thread : threads_) { 26 | if (!thread.joinable()) { 27 | return false; 28 | } 29 | } 30 | 31 | return true; 32 | } 33 | 34 | void Session::stop() { 35 | stopFlagTx.store(true); 36 | std::this_thread::sleep_for(std::chrono::milliseconds(500)); 37 | stopFlagRx.store(true); 38 | for (auto& thread : threads_) { 39 | if (thread.joinable()) { 40 | thread.join(); 41 | } 42 | } 43 | threads_.clear(); 44 | } 45 | 46 | Session::~Session() { 47 | stop(); 48 | } 49 | -------------------------------------------------------------------------------- /tests/validation/mtl_engine/ramdisk.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from mfd_connect.exceptions import ConnectionCalledProcessError 4 | 5 | 6 | class Ramdisk: 7 | def __init__(self, host, mount_point, size_gib): 8 | self._host = host 9 | self._mount_point = mount_point 10 | self._size_gib = size_gib 11 | 12 | def mount(self): 13 | try: 14 | self._host.connection.execute_command(f"sudo mkdir -p {self._mount_point}") 15 | self._host.connection.execute_command( 16 | f"sudo mount -t ramfs -o size={self._size_gib}G ramfs {self._mount_point}" 17 | ) 18 | except ConnectionCalledProcessError as e: 19 | logging.log(level=logging.ERROR, msg=f"Failed to execute command: {e}") 20 | 21 | def unmount(self): 22 | try: 23 | self._host.connection.execute_command(f"sudo umount {self._mount_point}") 24 | self._host.connection.execute_command(f"sudo rmdir {self._mount_point}") 25 | except ConnectionCalledProcessError as e: 26 | logging.log(level=logging.ERROR, msg=f"Failed to execute command: {e}") 27 | --------------------------------------------------------------------------------