get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/109895/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 109895,
    "url": "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"
    ]
}