Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/109895/?format=api
http://patches.dpdk.org/api/patches/109895/?format=api", "web_url": "http://patches.dpdk.org/project/dts/patch/20220420152558.23492-1-zhiminx.huang@intel.com/", "project": { "id": 3, "url": "http://patches.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<20220420152558.23492-1-zhiminx.huang@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20220420152558.23492-1-zhiminx.huang@intel.com", "date": "2022-04-20T15:25:58", "name": "[V2] test_plans/multiprocess_test_plan:add multiprocess pf test case", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "3e9a36120219c10b3a13b25e71b6592dda710315", "submitter": { "id": 1685, "url": "http://patches.dpdk.org/api/people/1685/?format=api", "name": "Huang, ZhiminX", "email": "zhiminx.huang@intel.com" }, "delegate": null, "mbox": "http://patches.dpdk.org/project/dts/patch/20220420152558.23492-1-zhiminx.huang@intel.com/mbox/", "series": [ { "id": 22564, "url": "http://patches.dpdk.org/api/series/22564/?format=api", "web_url": "http://patches.dpdk.org/project/dts/list/?series=22564", "date": "2022-04-20T15:25:58", "name": "[V2] test_plans/multiprocess_test_plan:add multiprocess pf test case", "version": 2, "mbox": "http://patches.dpdk.org/series/22564/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/109895/comments/", "check": "warning", "checks": "http://patches.dpdk.org/api/patches/109895/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dts-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id BC6D6A00BE;\n\tWed, 20 Apr 2022 09:00:26 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B52B54068E;\n\tWed, 20 Apr 2022 09:00:26 +0200 (CEST)", "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n by mails.dpdk.org (Postfix) with ESMTP id B4D5240687\n for <dts@dpdk.org>; Wed, 20 Apr 2022 09:00:24 +0200 (CEST)", "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 20 Apr 2022 00:00:23 -0700", "from unknown (HELO localhost.localdomain) ([10.239.251.93])\n by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 20 Apr 2022 00:00:20 -0700" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1650438024; x=1681974024;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=jfU03MiFtU1A9jF252q73L0w4g2UpOlJMbVwEyUc5Ag=;\n b=VzEwDWaLvRKSnZ7j3kYSK3CUWSz8l4gBeBzvA19m6cFVO+QTEnbTUiV+\n THLbQYgtab2ZKeDfyMB2mSJdJEZYziF0GymhJjsJePOSl3d5sCNLoiXVm\n 2lR2nZqZzk2I1HduZKshP8nWNOvxYGV4Bru8Qk5LDGFB0Lezd/0M3a4tX\n MlZeogykZIy+QQ+FsOrPAvNG9csT1JyGEIM7HGC82ctSW9WUDxrV3N6GJ\n MMbbrH6Sjqq2D9/7x8Dj93Ikw4+Y/Y33SarjKeyxdv4EyURDzJOs7k1e5\n fy+W6fCeULqUWLzylSTsuq1RG6zHHzImfEPlhUC0I5PjhvuV4nAUYMO63 A==;", "X-IronPort-AV": [ "E=McAfee;i=\"6400,9594,10322\"; a=\"350406037\"", "E=Sophos;i=\"5.90,274,1643702400\"; d=\"scan'208\";a=\"350406037\"", "E=Sophos;i=\"5.90,274,1643702400\"; d=\"scan'208\";a=\"576453602\"" ], "From": "Zhimin Huang <zhiminx.huang@intel.com>", "To": "dts@dpdk.org", "Cc": "Zhimin Huang <zhiminx.huang@intel.com>", "Subject": "[dts][PATCH V2] test_plans/multiprocess_test_plan:add multiprocess pf\n test case", "Date": "Wed, 20 Apr 2022 23:25:58 +0800", "Message-Id": "<20220420152558.23492-1-zhiminx.huang@intel.com>", "X-Mailer": "git-send-email 2.17.1", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org" }, "content": "pf have no data transmission case.\nso add 10 cases in pf multiprocess test suite.\n\nSigned-off-by: Zhimin Huang <zhiminx.huang@intel.com>\n---\n test_plans/multiprocess_test_plan.rst | 665 ++++++++++++++++++++++++++\n 1 file changed, 665 insertions(+)", "diff": "diff --git a/test_plans/multiprocess_test_plan.rst b/test_plans/multiprocess_test_plan.rst\nindex efb7fe05..8617d89e 100644\n--- a/test_plans/multiprocess_test_plan.rst\n+++ b/test_plans/multiprocess_test_plan.rst\n@@ -247,6 +247,23 @@ among RX queues. Record traffic throughput results as below.\n | Packet Rate(mpps) | X | X | X | X | X | X |\n +-------------------+-----+-----+-----+-----+-----+-----+\n \n+Test Case: Function Tests\n+-------------------------\n+start 2 symmetric_mp process, send some packets, the number of packets is a random value between 20 and 256.\n+summarize all received packets and check whether it is bigger than or equal to the number of sent packets\n+\n+1. start 2 process::\n+\n+ /dpdk-symmetric_mp -l 1 -n 4 --proc-type=auto -a 0000:05:00.0 -a 0000:08:00.0 -- -p 0x3 --num-procs=2 --proc-id=0\n+ /dpdk-symmetric_mp -l 2 -n 4 --proc-type=auto -a 0000:05:00.0 -a 0000:08:00.0 -- -p 0x3 --num-procs=2 --proc-id=1\n+\n+2. send some packets,the number of packets is a random value between 20 and 256, packet type including IPV6/4,TCP/UDP,\n+ refer to Random_Packet\n+\n+3. stop all process and check output::\n+\n+ the number of received packets for each process should bigger than 0.\n+ summarize all received packets for all process should bigger than or equal to the number of sent packets\n \n Client Server Multiprocess Tests\n ================================\n@@ -333,3 +350,651 @@ An example set of results is shown below.\n +----------------------+-----+-----+-----+-----+-----+-----+\n | Packet Rate(mpps) | X | X | X | X | X | X |\n +----------------------+-----+-----+-----+-----+-----+-----+\n+\n+Test Case: Function Tests\n+-------------------------\n+start server process and 2 client process, send some packets, the number of packets is a random value between 20 and 256.\n+summarize all received packets and check whether it is bigger than or equal to the number of sent packets\n+\n+1. start server process::\n+\n+ ./dpdk-mp_server -l 1,2 -n 4 -- -p 0x3 -n 2\n+\n+2. start 2 client process::\n+\n+ ./dpdk-mp_client -l 3 -n 4 --proc-type=auto -- -n 0\n+ ./dpdk-mp_client -l 4 -n 4 --proc-type=auto -- -n 1\n+\n+3. send some packets,the number of packets is a random value between 20 and 256, packet type include IPV6/4,TCP/UDP,\n+ refer to Random_Packet\n+\n+4. stop all process and check output::\n+\n+ the number of received packets for each client should bigger than 0.\n+ summarize all received packets for all clients should bigger than or equal to the number of sent packets\n+\n+Testpmd Multi-Process Test\n+==========================\n+\n+Description\n+-----------\n+\n+This is a multi-process test for Testpmd application, which demonstrates how multiple processes can\n+work together to perform packet in parallel.\n+\n+Test Methodology\n+----------------\n+Testpmd support to specify total number of processes and current process ID.\n+Each process owns subset of Rx and Tx queues\n+The following are the command-line options for testpmd multi-process support::\n+\n+ primary process:\n+ ./dpdk-testpmd -a xxx --proc-type=auto -l 0-1 -- -i --rxq=4 --txq=4 --num-procs=2 --proc-id=0\n+\n+ secondary process:\n+ ./dpdk-testpmd -a xxx --proc-type=auto -l 2-3 -- -i --rxq=4 --txq=4 --num-procs=2 --proc-id=1\n+\n+ --num-procs:\n+ The number of processes which will be used\n+ --proc-id:\n+ The ID of the current process (ID < num-procs),ID should be different in primary process and secondary\n+ process, which starts from ‘0’.\n+\n+All queues are allocated to different processes based on proc_num and proc_id\n+Calculation rule for queue::\n+\n+ start(queue start id) = proc_id * nb_q / num_procs\n+ end(queue end id) = start + nb_q / num_procs\n+\n+For example, if testpmd is configured to have 4 Tx and Rx queues, queues 0 and 1 will be used by the primary process and\n+queues 2 and 3 will be used by the secondary process.\n+\n+Note::\n+\n+ nb_q is the number of queues\n+ The number of queues should be a multiple of the number of processes. If not, redundant queues will exist after\n+ queues are allocated to processes. If RSS is enabled, packet loss occurs when traffic is sent to all processes at the\n+ same time.Some traffic goes to redundant queues and cannot be forwarded.\n+ All the dev ops is supported in primary process. While secondary process is not permitted to allocate or release\n+ shared memory.\n+ When secondary is running, port in primary is not permitted to be stopped.\n+ Reconfigure operation is only valid in primary.\n+ Stats is supported, stats will not change when one quits and starts, as they share the same buffer to store the stats.\n+ Flow rules are maintained in process level:\n+ primary and secondary has its own flow list (but one flow list in HW). The two can see all the queues, so setting\n+ the flow rules for the other is OK. But in the testpmd primary process receiving or transmitting packets from the\n+ queue allocated for secondary process is not permitted, and same for secondary process\n+\n+ Flow API and RSS are supported\n+\n+Prerequisites\n+-------------\n+\n+1. Hardware:\n+ columbiaville_25g/columbiaville_100g\n+\n+2. Software:\n+ DPDK: http://dpdk.org/git/dpdk\n+ scapy: http://www.secdev.org/projects/scapy/\n+\n+3. Copy specific ice package to /lib/firmware/intel/ice/ddp/ice.pkg\n+\n+4. Bind the pf to dpdk driver::\n+\n+ ./usertools/dpdk-devbind.py -b vfio-pci 05:00.0\n+\n+Default parameters\n+------------------\n+\n+ MAC::\n+\n+ [Dest MAC]: 00:11:22:33:44:55\n+\n+ IPv4::\n+\n+ [Source IP]: 192.168.0.20\n+ [Dest IP]: 192.168.0.21\n+ [IP protocol]: 255\n+ [TTL]: 2\n+ [DSCP]: 4\n+\n+ TCP::\n+\n+ [Source Port]: 22\n+ [Dest Port]: 23\n+\n+ Random_Packet::\n+\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IPv6(src='::192.168.0.1', version=6, tc=0, fl=0, dst='::192.168.1.1', hlim=64)/TCP(sport=65535, dport=65535, flags=0)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IP(frag=0, src='192.168.0.1', tos=0, dst='192.168.1.2', version=4, ttl=64, id=1)/UDP(sport=65535, dport=65535)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IPv6(src='::192.168.0.1', version=6, tc=0, fl=0, dst='::192.168.1.3', hlim=64)/UDP(sport=65535, dport=65535)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IPv6(src='::192.168.0.1', version=6, tc=0, fl=0, dst='::192.168.1.4', hlim=64)/UDP(sport=65535, dport=65535)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IPv6(src='::192.168.0.1', version=6, tc=0, fl=0, dst='::192.168.1.5', hlim=64)/TCP(sport=65535, dport=65535, flags=0)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IP(frag=0, src='192.168.0.1', tos=0, dst='192.168.1.15', version=4, ttl=64, id=1)/UDP(sport=65535, dport=65535)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IPv6(src='::192.168.0.1', version=6, tc=0, fl=0, dst='::192.168.1.16', hlim=64)/TCP(sport=65535, dport=65535, flags=0)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IPv6(src='::192.168.0.1', version=6, tc=0, fl=0, dst='::192.168.1.27', hlim=64)/TCP(sport=65535, dport=65535, flags=0)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IP(frag=0, src='192.168.0.1', tos=0, dst='192.168.1.28', version=4, ttl=64, id=1)/TCP(sport=65535, dport=65535, flags=0)/Raw(),\n+ Ether(dst='00:11:22:33:44:55', src='00:00:20:00:00:00')/IPv6(src='::192.168.0.1', version=6, tc=0, fl=0, dst='::192.168.1.30', hlim=64)/TCP(sport=65535, dport=65535, flags=0)/Raw()\n+\n+Test Case: multiprocess proc_type random packet\n+===============================================\n+\n+Subcase 1: proc_type_auto_4_process\n+-----------------------------------\n+1. Launch the app ``testpmd``, start 4 process with rxq/txq set as 16 (proc_id:0~3, queue id:0~15) with the following arguments::\n+\n+ ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=16 --txq=16 --num-procs=4 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=16 --txq=16 --num-procs=4 --proc-id=1\n+ ./dpdk-testpmd -l 5,6 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=16 --txq=16 --num-procs=4 --proc-id=2\n+ ./dpdk-testpmd -l 7,8 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=16 --txq=16 --num-procs=4 --proc-id=3\n+\n+2. Send 20 random packets::\n+\n+ packets generated by script, packet type including 'TCP', 'UDP', 'IPv6_TCP', 'IPv6_UDP', like as: Random_Packet\n+\n+3. Check whether each process receives 5 packets with the corresponding queue::\n+\n+ process 0 should receive 5 packets with queue 0~3\n+ process 1 should receive 5 packets with queue 4~7\n+ process 2 should receive 5 packets with queue 8~11\n+ process 3 should receive 5 packets with queue 12~15\n+\n+4. Check the statistics is correctly, the total number of packets received is 20\n+\n+Subcase 2: proc_type_primary_secondary_2_process\n+------------------------------------------------\n+1. Launch the app ``testpmd``, start 2 process with rxq/txq set as 4 (proc_id:0~1, queue id:0~3) with the following arguments::\n+\n+ ./dpdk-testpmd -l 1,2 --proc-type=primary -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=4 --txq=4 --num-procs=2 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 --proc-type=secondary -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=4 --txq=4 --num-procs=2 --proc-id=1\n+\n+2. Send 20 random packets::\n+\n+ packets generated by script, packet type including 'TCP', 'TCP', 'IPv6_TCP', 'IPv6_UDP', such as: Random_Packet\n+\n+3. Check whether each process receives 10 packets with the corresponding queue::\n+\n+ process 0 should receive 10 packets with queue 0~1\n+ process 1 should receive 10 packets with queue 2~3\n+\n+4. Check the statistics is correctly, the total number of packets received is 20\n+\n+Test Case: multiprocess proc_type specify packet\n+================================================\n+\n+Subcase 1: proc_type_auto_2_process\n+-----------------------------------\n+1. Launch the app ``testpmd``, start 2 process with rxq/txq set as 8 (proc_id:0~1, queue id:0~7) with the following arguments::\n+\n+ ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1\n+\n+2. Create rule to set queue as one of each process queues::\n+\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / end actions queue index 0 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.1.20 / end actions queue index 1 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.2.20 / end actions queue index 2 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.3.20 / end actions queue index 3 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.4.20 / end actions queue index 4 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.5.20 / end actions queue index 5 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.6.20 / end actions queue index 6 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.7.20 / end actions queue index 7 / end\n+\n+3. Send 1 matched packet for each rule::\n+\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.1.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.2.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.3.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.4.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.5.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.6.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.7.20\")/(\"X\"*46)\n+\n+4. Check whether each process receives 4 packets with the corresponding queue::\n+\n+ process 0 should receive 4 packets with queue 0~3\n+ process 1 should receive 4 packets with queue 4~7\n+\n+5. Check the statistics is correctly, the total number of packets received is 8\n+\n+Subcase 2: proc_type_primary_secondary_3_process\n+------------------------------------------------\n+1. Launch the app ``testpmd``, start 3 process with rxq/txq set as 6 (proc_id:0~2, queue id:0~5) with the following arguments::\n+\n+ x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=6 --txq=6 --num-procs=3 --proc-id=0\n+ x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=6 --txq=6 --num-procs=3 --proc-id=1\n+ x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 5,6 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=6 --txq=6 --num-procs=3 --proc-id=2\n+\n+2. Create rule to set queue as one of each process queues::\n+\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / end actions queue index 0 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.1.20 / end actions queue index 1 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.2.20 / end actions queue index 2 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.3.20 / end actions queue index 3 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.4.20 / end actions queue index 4 / end\n+ flow create 0 ingress pattern eth / ipv4 src is 192.168.5.20 / end actions queue index 5 / end\n+\n+3. Send 1 matched packet for each rule::\n+\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.1.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.2.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.3.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.4.20\")/(\"X\"*46)\n+ Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.5.20\")/(\"X\"*46)\n+\n+4. Check whether each process receives 2 packets with the corresponding queue::\n+\n+ process 0 should receive 2 packets with queue 0~1\n+ process 1 should receive 2 packets with queue 2~3\n+ process 2 should receive 2 packets with queue 4~5\n+\n+5. Check the statistics is correctly, the total number of packets received is 6\n+\n+Test Case: test_multiprocess_with_fdir_rule\n+===========================================\n+Launch the app ``testpmd``, start 2 process with rxq/txq set as 64 (proc_id:0~1, queue id:0~63) with the following arguments::\n+\n+ x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1,2 -n 4 -a 0000:05:00.0 --proc-type=auto --log-level=ice,7 -- -i --rxq=64 --txq=64 --num-procs=2 --proc-id=0\n+ x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 3,4 -n 4 -a 0000:05:00.0 --proc-type=auto --log-level=ice,7 -- -i --rxq=64 --txq=64 --num-procs=2 --proc-id=1\n+\n+Subcase 1: mac_ipv4_pay_queue_index\n+-----------------------------------\n+1. Create rule::\n+\n+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 62 / mark id 4 / end\n+\n+2. Send matched packets, check the packets is distributed to queue 62 with FDIR matched ID=0x4.\n+ Send unmatched packets, check the packets are distributed by RSS without FDIR matched ID\n+\n+3. Verify rules can be listed and destroyed::\n+\n+ testpmd> flow list 0\n+\n+ check the rule listed.\n+ destroy the rule::\n+\n+ testpmd> flow destroy 0 rule 0\n+\n+4. Verify matched packet is distributed by RSS without FDIR matched ID.\n+ check there is no rule listed.\n+\n+Subcase 2: mac_ipv4_pay_rss_queues\n+----------------------------------\n+1. Create rule::\n+\n+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 31 32 end / end\n+\n+2. Send matched packets, check the packets is distributed to queue 31 or 32.\n+ Send unmatched packets, check the packets are distributed by RSS\n+\n+3. Repeat step 3 of subcase 1\n+\n+4. Verify matched packet is distributed by RSS.\n+ check there is no rule listed.\n+\n+Subcase 3: mac_ipv4_pay_drop\n+----------------------------\n+1. Create rule::\n+\n+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions drop / end\n+\n+2. Send matched packets, check the packets are dropped.\n+ Send unmatched packets, check the packets are not dropped\n+\n+3. Repeat step 3 of subcase 1\n+\n+4. Verify matched packets are not dropped.\n+ check there is no rule listed.\n+\n+Subcase 4: mac_ipv4_pay_mark_rss\n+--------------------------------\n+1. Create rule::\n+\n+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions mark / rss / end\n+\n+2. Send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0.\n+ Send unmatched packets, check the packets are distributed by RSS without FDIR matched ID\n+\n+3. Repeat step 3 of subcase 1\n+\n+4. Verify matched packets are distributed to the same queue without FDIR matched ID.\n+ check there is no rule listed.\n+\n+Note: step2 and step4 need to check whether all received packets of each process are distributed by RSS\n+\n+\n+Test Case: test_multiprocess_with_rss_toeplitz\n+==============================================\n+Launch the app ``testpmd``,start 2 process with queue num set as 32 (proc_id: 0~1, queue id: 0~31) with the following arguments::\n+\n+ ./dpdk-testpmd -l 1,2 -n 4 -a 0000:af:00.0 --proc-type=auto --log-level=ice,7 -- -i --rxq=32 --txq=32 --disable-rss --rxd=384 --txd=384 --num-procs=2 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 -n 4 -a 0000:af:00.0 --proc-type=auto --log-level=ice,7 -- -i --rxq=32 --txq=32 --disable-rss --rxd=384 --txd=384 --num-procs=2 --proc-id=1\n+\n+all the test cases run the same test steps as below::\n+\n+ 1. validate rule.\n+ 2. create rule and list rule.\n+ 3. send a basic hit pattern packet,record the hash value,\n+ check the packet is distributed to queues by RSS.\n+ 4. send hit pattern packet with changed input set in the rule.\n+ check the received packet have different hash value with basic packet.\n+ check the packet is distributed to queues by rss.\n+ 5. send hit pattern packet with changed input set not in the rule.\n+ check the received packet have same hash value with the basic packet.\n+ check the packet is distributed to queues by rss.\n+ 6. destroy the rule and list rule.\n+ 7. send same packet with step 3.\n+ check the received packets have no hash value, and distributed to queue 0.\n+\n+ Note: step3, step4 and step5 need to check whether all received packets of each process are distributed by RSS\n+\n+basic hit pattern packets are the same in this test case.\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+not hit pattern packets are the same in this test case::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\")\n+\n+Subcase 1: mac_ipv4_tcp_l2_src\n+------------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/TCP(sport=25,dport=99)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l2_dst\n+----------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/TCP(sport=25,dport=99)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l2src_l2dst\n+---------------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/TCP(sport=25,dport=99)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l3_src\n+----------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l3_dst\n+----------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l3src_l4src\n+---------------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l3src_l4dst\n+---------------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l3dst_l4src\n+---------------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l3dst_l4dst\n+---------------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l4_src\n+----------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_l4_dst\n+----------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Subcase: mac_ipv4_tcp_ipv4\n+--------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(dst=\"00:11:22:33:44:53\", src=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=33)/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: mac_ipv4_tcp_all\n+-------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+3. hit pattern/not defined input set:\n+ipv4-tcp packets::\n+\n+ sendp([Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+\n+Test Case: test_multiprocess_with_rss_symmetric\n+===============================================\n+Launch the app ``testpmd``, start 2 process with queue num set as 16(proc_id: 0~1, queue id: 0~15) with the following arguments::\n+\n+ ./dpdk-testpmd -l 1,2 -n 4 -a 0000:af:00.0 --proc-type=auto --log-level=ice,7 -- -i --rxq=16 --txq=16 --num-procs=2 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 -n 4 -a 0000:af:00.0 --proc-type=auto --log-level=ice,7 -- -i --rxq=16 --txq=16 --num-procs=2 --proc-id=1\n+\n+test steps as below::\n+\n+ 1. validate and create rule.\n+ 2. set \"port config all rss all\".\n+ 3. send hit pattern packets with switched value of input set in the rule.\n+ check the received packets have the same hash value.\n+ check all the packets are distributed to queues by rss\n+ 4. destroy the rule and list rule.\n+ 5. send same packets with step 3\n+ check the received packets have no hash value, or have different hash value.\n+\n+ Note: step3 needs to check whether all received packets of each process are distributed by RSS\n+\n+Subcase: mac_ipv4_symmetric\n+---------------------------\n+1. create rss rule::\n+\n+ flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+2. hit pattern/defined input set:\n+ipv4-nonfrag packets::\n+\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)],iface=\"ens786f0\")\n+\n+ipv4-frag packets::\n+\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",frag=6)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\",frag=6)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+ipv4-tcp packets::\n+\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+ sendp([Ether(dst=\"00:11:22:33:44:55\", src=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"ens786f0\")\n+\n+Test Case: test_multiprocess_auto_process_type_detected\n+=======================================================\n+1. start 2 process with queue num set as 8 (proc_id:0~1,queue id:0~7)::\n+\n+ ./dpdk-testpmd -l 1,2 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 --proc-type=auto -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1\n+\n+2. check the ouput of each process::\n+\n+ process 1 output contains 'Auto-detected process type: PRIMARY'\n+ process 2 output contains 'Auto-detected process type: SECONDARY'\n+\n+Test Case: test_multiprocess_negative_2_primary_process\n+=======================================================\n+1. start 2 process with queue num set as 4 (proc_id:0~1,queue id:0~3)::\n+\n+ ./dpdk-testpmd -l 1,2 --proc-type=primary -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=4 --txq=4 --num-procs=2 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 --proc-type=primary -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=4 --txq=4 --num-procs=2 --proc-id=1\n+\n+2. check the ouput of each process::\n+\n+ process 1 launches successfully\n+ process 2 launches failed and output contains 'Is another primary process running?'\n+\n+Test Case: test_multiprocess_negative_exceed_process_num\n+========================================================\n+1. start 3 process exceed the specifed num 2::\n+\n+ ./dpdk-testpmd -l 1,2 --proc-type=primary -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=0\n+ ./dpdk-testpmd -l 3,4 --proc-type=primary -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=1\n+ ./dpdk-testpmd -l 5,6 --proc-type=primary -a 0000:05:00.0 --log-level=ice,7 -- -i --rxq=8 --txq=8 --num-procs=2 --proc-id=2\n+\n+2. check the ouput of each process::\n+\n+ the first and second processes should be launched successfully\n+ the third process should be launched failed and output should contain the following string:\n+ 'multi-process option proc-id(2) should be less than num-procs(2)'\n", "prefixes": [ "V2" ] }{ "id": 109895, "url": "