|SUCCESS|dpdk|b11692dbee| intel-Functional
sys_stv at intel.com
sys_stv at intel.com
Thu Feb 5 13:01:12 CET 2026
Test-Label: intel-Functional
Test-Status: SUCCESS
_Functional PASS_
DPDK git repo: dpdk
commit 8b4824427cc60315d0815691ed3c31024e4d5426
Author: Robin Jarry <rjarry at redhat.com>
Date: Thu Feb 5 10:26:36 2026 +0100
node: use deferred enqueue API in process functions
Convert all node process functions to use rte_node_enqueue_deferred()
instead of the manual speculation pattern with rte_node_enqueue_x1().
The deferred enqueue API automatically batches consecutive packets going
to the same edge and flushes them efficiently. When all packets go to
the same destination (the common case), it uses rte_node_next_stream_move()
which swaps pointers rather than copying.
This significantly simplifies the node process functions by removing
the speculation tracking logic (to_next, from, held, last_spec variables,
memcpy calls, and stream get/put operations).
The deferred state is stored in the node fast-path cache line, keeping
it close to other frequently accessed node data. The last_edge value
is preserved across invocations, providing cross-batch speculation for
free.
Performance testing with l3fwd on two E810 NICs shows throughput within
2-3% of the baseline while significantly reducing code complexity. The
slight overhead comes from per-packet edge comparisons, but this is
offset by reduced instruction cache pressure and simpler code paths.
Also remove unused speculation-related macros and fields from node
context structures:
- IP4_REWRITE_NODE_LAST_NEXT and next_index field
- IP6_REWRITE_NODE_LAST_NEXT and next_index field
- IF_TX_FEATURE_LAST_NEXT_INDEX and last_index field
- UDP4_INPUT_NODE_NEXT_INDEX and next_index field
Signed-off-by: Robin Jarry <rjarry at redhat.com>
Smoke-Testing Summary : 31 Case Done, 31 Successful, 0 Failures
OS : Ubuntu 24.04.3 LTS
Kernel : 6.8.0-71-generic
GCC : 13.3.0-6ubuntu2~24.04
NIC : Ethernet Controller XL710 for 40GbE QSFP+
Target : x86_64-native-linuxapp-gcc
Test result details:
+-----------------+---------------------------------------------------+-------+
| suite | case | status|
+-----------------+---------------------------------------------------+-------+
| checksum_offload| test_do_not_insert_checksum_on_the_transmit_packet| passed|
| checksum_offload| test_hardware_checksum_check_ip_rx | passed|
| checksum_offload| test_hardware_checksum_check_ip_tx | passed|
| checksum_offload| test_hardware_checksum_check_l4_rx | passed|
| checksum_offload| test_hardware_checksum_check_l4_tx | passed|
| checksum_offload| test_insert_checksum_on_the_transmit_packet | passed|
| checksum_offload| test_rx_checksum_valid_flags | passed|
| checksum_offload| test_checksum_offload_with_vlan | n/a |
| dual_vlan | test_dual_vlan_priority_rxtx | passed|
| dual_vlan | test_vlan_filter_config | passed|
| dual_vlan | test_vlan_filter_table | passed|
| dual_vlan | test_vlan_insert_config | passed|
| dual_vlan | test_vlan_random_test | passed|
| dual_vlan | test_vlan_strip_config | passed|
| dual_vlan | test_vlan_synthetic_test | passed|
| dual_vlan | test_vlan_tpid_config | passed|
| dual_vlan | test_vlan_stripq_config | n/a |
| jumboframes | test_jumboframes_bigger_jumbo | passed|
| jumboframes | test_jumboframes_jumbo_jumbo | passed|
| jumboframes | test_jumboframes_jumbo_nojumbo | passed|
| jumboframes | test_jumboframes_normal_jumbo | passed|
| jumboframes | test_jumboframes_normal_nojumbo | passed|
| rxtx_offload | test_rxoffload_port_all | passed|
| rxtx_offload | test_rxoffload_port_cmdline | passed|
| rxtx_offload | test_txoffload_port | passed|
| rxtx_offload | test_txoffload_port_all | passed|
| rxtx_offload | test_txoffload_port_checksum | passed|
| rxtx_offload | test_txoffload_port_cmdline | passed|
| rxtx_offload | test_txoffload_port_multi_segs | passed|
| rxtx_offload | test_txoffload_queue | passed|
| rxtx_offload | test_rxoffload_queue | n/a |
+-----------------+---------------------------------------------------+-------+
DPDK STV team
More information about the test-report
mailing list