get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 129274,
    "url": "http://patches.dpdk.org/api/patches/129274/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20230705163623.1060424-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": "<20230705163623.1060424-1-zhiminx.huang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20230705163623.1060424-1-zhiminx.huang@intel.com",
    "date": "2023-07-05T16:36:23",
    "name": "[V2] ice_dcf_data_path:modify check point to adapt dpdk changed",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "3676b51137b032afd5eec7ce1d29c1aa2dc1b2e6",
    "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/20230705163623.1060424-1-zhiminx.huang@intel.com/mbox/",
    "series": [
        {
            "id": 28821,
            "url": "http://patches.dpdk.org/api/series/28821/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=28821",
            "date": "2023-07-05T16:36:23",
            "name": "[V2] ice_dcf_data_path:modify check point to adapt dpdk changed",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/28821/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/129274/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/129274/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 3441F42DCC;\n\tWed,  5 Jul 2023 10:20:55 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 2CD32406BC;\n\tWed,  5 Jul 2023 10:20:55 +0200 (CEST)",
            "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n by mails.dpdk.org (Postfix) with ESMTP id 9B8EE40150\n for <dts@dpdk.org>; Wed,  5 Jul 2023 10:20:53 +0200 (CEST)",
            "from fmsmga005.fm.intel.com ([10.253.24.32])\n by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 05 Jul 2023 01:20:52 -0700",
            "from unknown (HELO localhost.localdomain) ([10.239.252.96])\n by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 05 Jul 2023 01:20:48 -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=1688545253; x=1720081253;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=hkin67xRVuwz/uNxKoDOeZMc5bcwJAwvncb2oaE2rjU=;\n b=RZUM4tA0g3IhzdbkElmf9aBNRlK9cDXSW8O8zsIHR3GTbenz6tMdy1gY\n Ohf2M1R+sP7tz/c+cBbjjbTY48efV/C1EfYtFGEVi4d7ibDSkv80jz5Gr\n WX/3ZKXBxtkpJnmFfuyaLNp0ROf/joIe22f7T/loWNmBUbTvZH2Zc6wMO\n goZcpFJVOWDKhqT+4f/vyb5ipfWpT0FCGFQUaQYet7yoXZU4fFVDX5nyc\n 1NrnadSwF7baohTCZcxKr8vpuvfo+a3OVmp7GqvWHQxhbfBNP4bxfweW+\n RVDJ4BTIHyLr2BalX+qWeTp/YinamOMsO/EZs/bhXwQuI+/DawbOriW49 Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10761\"; a=\"449649484\"",
            "E=Sophos;i=\"6.01,182,1684825200\"; d=\"scan'208\";a=\"449649484\"",
            "E=McAfee;i=\"6600,9927,10761\"; a=\"1049625267\"",
            "E=Sophos;i=\"6.01,182,1684825200\"; d=\"scan'208\";a=\"1049625267\""
        ],
        "X-ExtLoop1": "1",
        "From": "Zhimin Huang <zhiminx.huang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Zhimin Huang <zhiminx.huang@intel.com>",
        "Subject": "[dts][PATCH V2] ice_dcf_data_path:modify check point to adapt dpdk\n changed",
        "Date": "Wed,  5 Jul 2023 16:36:23 +0000",
        "Message-Id": "<20230705163623.1060424-1-zhiminx.huang@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "MIME-Version": "1.0",
        "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": "According to dpdk commit\n38341238ba1e02c7292b037f91006ea20f8200f9(net/ice: add default RSS for\nDCF),all default rss for dcf have been changed to ipv4/ipv6.\nso we modify test script and test plan to adapt this changed.\n\nAnd in some customer issue,it was found that starting testpmd with dcf\nand vf port cause rss not work,this dpdk commmit also fixed this\nissue,so we add a vf port into test case.\n\nSigned-off-by: Zhimin Huang <zhiminx.huang@intel.com>\n---\nv2:\nadd an additional vf port to start testpmd\n\n test_plans/ice_dcf_data_path_test_plan.rst | 43 +++++++++++---\n tests/TestSuite_ice_dcf_data_path.py       | 65 ++++++++++++++++++----\n 2 files changed, 87 insertions(+), 21 deletions(-)",
    "diff": "diff --git a/test_plans/ice_dcf_data_path_test_plan.rst b/test_plans/ice_dcf_data_path_test_plan.rst\nindex 71c9793b..a724dc35 100644\n--- a/test_plans/ice_dcf_data_path_test_plan.rst\n+++ b/test_plans/ice_dcf_data_path_test_plan.rst\n@@ -26,10 +26,11 @@ Set a VF as trust ::\n     ip link set enp24s0f0 vf 0 trust on\n     ip link set enp27s0f0 vf 0 mac D2:6B:4C:EB:1C:26\n \n-Launch dpdk on the VF, request DCF mode ::\n+Launch dpdk on the VF, request DCF mode and add an additional vf port to check that not affect DCF fwd::\n \n     ./usertools/dpdk-devbind.py -b vfio-pci 18:01.0\n-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-10 -n 4 -a 18:01.0,cap=dcf --file-prefix=vf -- -i --rxq=4 --txq=4\n+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-10 -n 4 -a 18:01.0,cap=dcf -a 18:01.1 --file-prefix=vf -- -i\n+    --rxq=4 --txq=4\n \n \n Test Case: Launch DCF and do macfwd\n@@ -101,7 +102,7 @@ Send a series packets to check if DCF RSS is correct for tunnelling packet (inne\n \n \n Expected:\n-   p1 hash value is not equal to p2 or p3. p1 hash value is equal to p4 and p5.\n+   p1 hash value is equal to p2 or p3. p1 hash value is not equal to p4 and p5.\n    check the packets are distributed to queues by rss.\n \n Send a series packets to check if DCF RSS is correct for tunnelling packet (inner IPv6) ::\n@@ -113,9 +114,20 @@ Send a series packets to check if DCF RSS is correct for tunnelling packet (inne\n     sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"11:22:33:44:55:77\")/IPv6(src=\"::33\", dst=\"::44\")/GRE()/IPv6(src=\"::22\", dst=\"::11\")/Raw('x'*64), iface=intf)\n \n Expected:\n-   p1 hash value is not equal to p2 or p3. p1 hash value is equal to p4 and p5.\n-   p1/p2/p3 should be devided into different queues.\n+   p1 hash value is equal to p2 or p3. p1 hash value is not equal to p4 and p5.\n+   p1/p4/p5 should be devided into different queues.\n \n+Send a series packets to check if DCF RSS is correct for tunnelling packet (outer IPv6) ::\n+\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / Raw(\"x\" * 64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.3\") / Raw(\"x\" * 64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.3\", dst=\"192.168.1.2\") / Raw(\"x\" * 64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"11:22:33:44:55:77\") / IPv6(src=\"::22\",dst=\"::12\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / Raw(\"x\" * 64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"11:22:33:44:55:77\") / IP(src=\"1.1.1.2\",dst=\"2.2.2.1\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / Raw(\"x\" * 64), iface=intf)\n+\n+Expected:\n+   p1 hash value is equal to p2 or p3. p1 hash value is not equal to p4 and p5.\n+   p1/p4/p5 should be devided into different queues.\n \n Test Case: Check default rss for L4\n ===================================\n@@ -141,7 +153,7 @@ Send a series packets to check if DCF RSS is correct for IPv4 ::\n     sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:22:33:44:55:77\")/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n \n Expected:\n-   p1 hash value is not equal to p2 or p3 or p4 or p5, and should be equal to p6.\n+   p1 hash value is not equal to p2 or p3, and should be equal to p4 or p5 or p6.\n    check the packets are distributed to queues by rss.\n \n Send a series packets to check if DCF RSS is correct for IPv6 ::\n@@ -154,7 +166,7 @@ Send a series packets to check if DCF RSS is correct for IPv6 ::\n     sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"11:22:33:44:55:77\")/IPv6(src=\"::22\", dst=\"::11\")/TCP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n \n Expected:\n-   p1 hash value is not equal to p2 or p3 or p4 or p5, and should be equal to p6.\n+   p1 hash value is not equal to p2 or p3, and should be equal to p4 or p5 or p6.\n    check the packets are distributed to queues by rss.\n \n Send a series packets to check if DCF RSS is correct for tunnelling packet (inner IPv4) ::\n@@ -168,7 +180,7 @@ Send a series packets to check if DCF RSS is correct for tunnelling packet (inne\n     sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:22:33:44:55:77\")/IPv6(src=\"::11\", dst=\"::22\")/GRE()/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n \n Expected:\n-   p1 hash value is not equal to p2 or p3 or p4 or p5, and should be equal to p6 and p7.\n+   p1 hash value is equal to p2 or p3 or p4 or p5, and should be not equal to p6 and p7.\n    check the packets are distributed to queues by rss.\n \n Send a series packets to check if DCF RSS is correct for tunnelling packet (inner IPv6) ::\n@@ -182,9 +194,22 @@ Send a series packets to check if DCF RSS is correct for tunnelling packet (inne\n     sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:22:33:44:55:77\")/IPv6(src=\"::33\", dst=\"::44\")/GRE()/IPv6(src=\"::22\", dst=\"::11\")/UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n \n Expected:\n-   p1 hash value is not equal to p2 or p3 or p4 or p5, and should be equal to p6 and p7.\n+   p1 hash value is equal to p2 or p3 or p4 or p5, and should be not equal to p6 and p7.\n    check the packets are distributed to queues by rss.\n \n+Send a series packets to check if DCF RSS is correct for tunnelling packet (outer IPv6) ::\n+\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.3\") / UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.3\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1235, dport=5678)/Raw('x'*64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5679)/Raw('x'*64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:22:33:44:55:77\") / IPv6(src=\"::22\",dst=\"::12\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n+    sendp(Ether(dst=\"D2:6B:4C:EB:1C:26\", src=\"00:22:33:44:55:77\") / IP(src=\"1.1.1.2\",dst=\"2.2.2.1\") / GRE() / IPv6(src=\"::22\", dst=\"::11\") / UDP(sport=1234, dport=5678)/Raw('x'*64), iface=intf)\n+\n+Expected:\n+   p1 hash value is equal to p2 or p3 or p4 or p5, and should be not equal to p6 and p7.\n+   check the packets are distributed to queues by rss.\n \n Test Case: Create rule with to original VF action\n =================================================\ndiff --git a/tests/TestSuite_ice_dcf_data_path.py b/tests/TestSuite_ice_dcf_data_path.py\nindex 64ee0aa6..0a237dc4 100644\n--- a/tests/TestSuite_ice_dcf_data_path.py\n+++ b/tests/TestSuite_ice_dcf_data_path.py\n@@ -24,13 +24,15 @@ class TestICEDCFDataPath(TestCase):\n         # Generate 1 trust VF on 1 PF, and request 1 DCF on the trust VF\n         self.dut.generate_sriov_vfs_by_port(self.used_dut_port, 4, self.kdriver)\n         self.sriov_vfs_port_0 = self.dut.ports_info[self.dut_ports[0]][\"vfs_port\"]\n-        self.used_vf_pci = self.sriov_vfs_port_0[0].pci\n+        self.used_vf0_pci = self.sriov_vfs_port_0[0].pci\n+        self.used_vf1_pci = self.sriov_vfs_port_0[1].pci\n         # config vf trust on and vf mac value\n         self.dut.send_expect(\"ip link set %s vf 0 trust on\" % self.dut_intf0, \"#\")\n         self.dut.send_expect(\n             \"ip link set {} vf 0 mac {}\".format(self.dut_intf0, self.vf_mac), \"#\"\n         )\n-        self.sriov_vfs_port_0[0].bind_driver(self.vf_driver)\n+        for port in self.sriov_vfs_port_0:\n+            port.bind_driver(self.vf_driver)\n         self.pmd_output = PmdOutput(self.dut)\n         self.pkt = Packet()\n \n@@ -39,8 +41,8 @@ class TestICEDCFDataPath(TestCase):\n             cores=\"1S/4C/1T\",\n             param=\"--txq=4 --rxq=4\",\n             prefix=\"vf\",\n-            ports=[self.used_vf_pci],\n-            port_options={self.used_vf_pci: \"cap=dcf\"},\n+            ports=[self.used_vf0_pci, self.used_vf1_pci],\n+            port_options={self.used_vf0_pci: \"cap=dcf\"},\n         )\n \n     def send_packets(self, packets, tx_port, count=1):\n@@ -125,6 +127,18 @@ class TestICEDCFDataPath(TestCase):\n             'Ether(dst=\"%s\", src=\"11:22:33:44:55:77\") / IPv6(src=\"::33\", dst=\"::44\") / GRE() / IPv6(src=\"::22\", dst=\"::11\") / Raw(\"x\" * 64)'\n             % self.vf_mac,\n         ]\n+        pkt_list5 = [\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.3\") / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.3\", dst=\"192.168.1.2\") / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"11:22:33:44:55:77\") / IPv6(src=\"::22\",dst=\"::12\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"11:22:33:44:55:77\") / IP(src=\"1.1.1.2\",dst=\"2.2.2.1\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+        ]\n \n         self.pmd_output.execute_cmd(\"set fwd rxonly\")\n         self.pmd_output.execute_cmd(\"set verbose 1\")\n@@ -141,14 +155,19 @@ class TestICEDCFDataPath(TestCase):\n         )\n         out3 = self.send_pkts_getouput(pkt_list3, self.tester_intf0)\n         self.verify(\n-            out3[0] == out3[3] == out3[4] and out3[0] != out3[1] != out3[2],\n+            out3[0] != out3[3] != out3[4] and out3[0] == out3[1] == out3[2],\n             \"inner ipv4 rss hash value test failed\",\n         )\n         out4 = self.send_pkts_getouput(pkt_list4, self.tester_intf0)\n         self.verify(\n-            out4[0] == out4[3] == out4[4] and out4[0] != out4[1] != out4[2],\n+            out4[0] != out4[3] != out4[4] and out4[0] == out4[1] == out4[2],\n             \"inner ipv6 rss hash value test failed\",\n         )\n+        out5 = self.send_pkts_getouput(pkt_list5, self.tester_intf0)\n+        self.verify(\n+            out5[0] != out5[3] != out5[4] and out5[0] == out5[1] == out5[2],\n+            \"outer ipv6 rss hash value test failed\",\n+        )\n \n     def test_default_rss_l4(self):\n         \"\"\"\n@@ -214,32 +233,54 @@ class TestICEDCFDataPath(TestCase):\n             'Ether(dst=\"%s\", src=\"00:22:33:44:55:77\") / IPv6(src=\"::33\", dst=\"::44\") / GRE() / IPv6(src=\"::22\", dst=\"::11\") / UDP(sport=1234, dport=5678) / Raw(\"x\" * 64)'\n             % self.vf_mac,\n         ]\n+        pkt_list5 = [\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5678) / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.3\") / UDP(sport=1234, dport=5678) / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.3\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5678) / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1235, dport=5678) / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:11:22:33:44:55\") / IPv6(src=\"::22\",dst=\"::11\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5679) / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:22:33:44:55:77\") / IPv6(src=\"::22\",dst=\"::12\") / GRE() / IP(src=\"192.168.1.1\", dst=\"192.168.1.2\") / UDP(sport=1234, dport=5678) / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+            'Ether(dst=\"%s\", src=\"00:22:33:44:55:77\") / IP(src=\"1.1.1.2\",dst=\"2.2.2.1\") / GRE() / IPv6(src=\"::22\", dst=\"::11\") / UDP(sport=1234, dport=5678) / Raw(\"x\" * 64)'\n+            % self.vf_mac,\n+        ]\n \n         self.pmd_output.execute_cmd(\"set fwd rxonly\")\n         self.pmd_output.execute_cmd(\"set verbose 1\")\n         self.pmd_output.execute_cmd(\"start\")\n         out1 = self.send_pkts_getouput(pkt_list1, self.tester_intf0)\n         self.verify(\n-            out1[0] == out1[5] and out1[0] != out1[1] != out1[2] != out1[3] != out1[4],\n+            out1[0] == out1[5] == out1[3] == out1[4] and out1[0] != out1[1] != out1[2],\n             \"ipv4 rss hash value test failed\",\n         )\n         out2 = self.send_pkts_getouput(pkt_list2, self.tester_intf0)\n         self.verify(\n-            out2[0] == out2[5] and out2[0] != out2[1] != out2[2] != out2[3] != out2[4],\n+            out2[0] == out2[5] == out2[3] == out2[4] and out2[0] != out2[1] != out2[2],\n             \"ipv6 rss hash value test failed\",\n         )\n         out3 = self.send_pkts_getouput(pkt_list3, self.tester_intf0)\n         self.verify(\n-            out3[0] == out3[6]\n-            and out3[0] != out3[1] != out3[2] != out3[3] != out3[4] != out3[5],\n+            out3[0] != out3[6] != out3[5]\n+            and out3[0] == out3[1] == out3[2] == out3[3] == out3[4],\n             \"inner ipv4 rss hash value test failed\",\n         )\n         out4 = self.send_pkts_getouput(pkt_list4, self.tester_intf0)\n         self.verify(\n-            out4[0] == out4[6]\n-            and out4[0] != out4[1] != out4[2] != out4[3] != out4[4] != out4[5],\n+            out4[0] != out4[6] != out4[5]\n+            and out4[0] == out4[1] == out4[2] == out4[3] == out4[4],\n             \"inner ipv6 rss hash value test failed\",\n         )\n+        out5 = self.send_pkts_getouput(pkt_list5, self.tester_intf0)\n+        self.verify(\n+            out5[0] != out5[6] != out5[5]\n+            and out5[0] == out5[1] == out5[2] == out5[3] == out5[4],\n+            \"outer ipv6 rss hash value test failed\",\n+        )\n \n     def test_create_rule_with_vf_action(self):\n         \"\"\"\n",
    "prefixes": [
        "V2"
    ]
}