Test-Label: intel-Testing Test-Status: SUCCESS _Testing PASS DPDK git repo: dpdk-next-net commit 55cc366fb18afa7dda6f6e513ab311e30f8b7248 Author: Rongwei Liu Date: Mon Nov 14 13:59:46 2022 +0200 ethdev: add special flags when creating async transfer table In case flow rules match only one kind of traffic in a flow table, then optimization can be done via allocation of this table. Such optimization is possible only if the application gives a hint about its usage of the table during initial configuration. The transfer domain rules may process traffic from wire or vport, which may correspond to two kinds of underlayer resources. That's why the first two hints introduced in this patch are about wire and vport traffic specialization. Wire means traffic arrives from the uplink port while vport means traffic initiated from VF/SF. There are two possible approaches for providing the hints. Using IPv4 as an example: 1. Use pattern item in both template table and flow rules. pattern_template: pattern ANY_VPORT / eth / ipv4 is 1.1.1.1 / end async flow create: pattern ANY_VPORT / eth / ipv4 is 1.1.1.2 / end "ANY_VPORT" needs to be present in each flow rule even if it's just a hint. No value to match because matching is already done by IPv4 item. 2. Add special flags into table_attr. template_table 0 create table_id 0 group 1 transfer vport_orig Approach 1 needs to specify the pattern in each flow rule which wastes memory and is not user friendly. This patch takes the 2nd approach and introduces one new member "specialize" into rte_flow_table_attr to indicate possible flow table optimization. By default, there is no hint, so the behavior of the transfer domain doesn't change. There is no guarantee that the hint will be used by the PMD. Signed-off-by: Rongwei Liu Acked-by: Ori Kam Testing Summary : 18 Case Done, 18 Successful, 0 Failures Testbed #1: 9 Case Done, 9 Successful, 0 Failures * Test result details: +-------------+---------------------------+-------+ | suite | case | status| +-------------+---------------------------+-------+ | asan_smoke | test_rxtx_with_ASan_enable| passed| | pf_smoke | test_pf_jumbo_frames | passed| | pf_smoke | test_pf_rss | passed| | pf_smoke | test_pf_tx_rx_queue | passed| | vf_smoke | test_vf_jumbo_frames | passed| | vf_smoke | test_vf_rss | passed| | vf_smoke | test_vf_tx_rx_queue | passed| | virtio_smoke| test_virtio_loopback | passed| | virtio_smoke| test_virtio_pvp | passed| +-------------+---------------------------+-------+ * Environment: OS : Ubuntu 20.04.5 LTS Kernel : 5.8.0-63-generic GCC : 9.4.0-1ubuntu1~20.04.1 NIC : Ethernet Controller E810-C for SFP Target : x86_64-native-linuxapp-gcc Testbed #2: 9 Case Done, 9 Successful, 0 Failures * Test result details: +-------------+---------------------------+-------+ | suite | case | status| +-------------+---------------------------+-------+ | asan_smoke | test_rxtx_with_ASan_enable| passed| | pf_smoke | test_pf_jumbo_frames | passed| | pf_smoke | test_pf_rss | passed| | pf_smoke | test_pf_tx_rx_queue | passed| | vf_smoke | test_vf_rss | passed| | vf_smoke | test_vf_tx_rx_queue | passed| | vf_smoke | test_vf_jumbo_frames | n/a | | virtio_smoke| test_virtio_loopback | passed| | virtio_smoke| test_virtio_pvp | passed| +-------------+---------------------------+-------+ * Environment: OS : Ubuntu 20.04.5 LTS Kernel : 5.13.0-30-generic GCC : 9.4.0-1ubuntu1~20.04.1 NIC : Ethernet Controller XL710 for 40GbE QSFP+ Target : x86_64-native-linuxapp-gcc TestPlan: pf_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/pf_smoke_test_plan.rst vf_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/vf_smoke_test_plan.rst asan_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/asan_smoke_test_plan.rst TestSuite: pf_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_pf_smoke.py vf_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_vf_smoke.py virtio_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_virtio_smoke.py asan_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_asan_smoke.py DPDK STV team