get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 87519,
    "url": "http://patches.dpdk.org/api/patches/87519/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/1611893385-14392-1-git-send-email-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": "<1611893385-14392-1-git-send-email-zhiminx.huang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/1611893385-14392-1-git-send-email-zhiminx.huang@intel.com",
    "date": "2021-01-29T04:09:45",
    "name": "[V1] tests/cvl_advanced_rss_gtpu:add subcase and optimized code",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "785657c2a5c79b95032e57dfde1bf0a33ad48a4c",
    "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/1611893385-14392-1-git-send-email-zhiminx.huang@intel.com/mbox/",
    "series": [
        {
            "id": 15025,
            "url": "http://patches.dpdk.org/api/series/15025/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=15025",
            "date": "2021-01-29T04:09:45",
            "name": "[V1] tests/cvl_advanced_rss_gtpu:add subcase and optimized code",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/15025/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/87519/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/87519/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 ABCE5A09E4;\n\tFri, 29 Jan 2021 05:20:07 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 87EA64067B;\n\tFri, 29 Jan 2021 05:20:07 +0100 (CET)",
            "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n by mails.dpdk.org (Postfix) with ESMTP id DCDDF40395\n for <dts@dpdk.org>; Fri, 29 Jan 2021 05:20:05 +0100 (CET)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Jan 2021 20:20:04 -0800",
            "from unknown (HELO dpdk-huangzm-d.sh.intel.com) ([10.240.183.72])\n by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Jan 2021 20:20:02 -0800"
        ],
        "IronPort-SDR": [
            "\n SCNHtc/QB60Mj+Zz0nynmbTjCtDqvra0o4S2gy4llXPvmvTNOY6cXlX+bdDzaDNoEJ/dsaWd8K\n lgFKsWzfchTQ==",
            "\n Uy+wE5YmIeqi1Y01dTF/47QCbIR6yXzAo0i21erm8dsNrFg2E4ZAEHXYeE2+W8dwXlYPgVZA6Y\n UmGEGlEUt9TQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9878\"; a=\"160134262\"",
            "E=Sophos;i=\"5.79,384,1602572400\"; d=\"scan'208\";a=\"160134262\"",
            "E=Sophos;i=\"5.79,384,1602572400\"; d=\"scan'208\";a=\"389136148\""
        ],
        "From": "Zhimin Huang <zhiminx.huang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "yuan.peng@intel.com,\n\tZhimin Huang <zhiminx.huang@intel.com>",
        "Date": "Fri, 29 Jan 2021 12:09:45 +0800",
        "Message-Id": "<1611893385-14392-1-git-send-email-zhiminx.huang@intel.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "Subject": "[dts] [PATCH V1] tests/cvl_advanced_rss_gtpu:add subcase and\n optimized code",
        "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",
        "Sender": "\"dts\" <dts-bounces@dpdk.org>"
    },
    "content": "add subcase:\nMAC_IPV4_GTPU_IPV4_UDP:MAC_IPV4_GTPU_IPV4_UDP_IPV4\nsame as above,replace ipv4 to ipv6, udp tp tcp.\n\nMAC_IPV4_GTPU_EH_IPV4_UDP:MAC_IPV4_GTPU_EH_DL_IPV4_UDP_IPV4\nsame as above,replace ipv4 to ipv6, udp tp tcp.\n\nMAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL:MAC_IPV4_GTPU_EH_IPV4_UDP_IPV4\nsame as above,replace ipv4 to ipv6, udp tp tcp.\n\noptimized code:\nmodified symmetric case:optimized after destroy rule action.\n\nmodified negative rule.\n\nSigned-off-by: Zhimin Huang <zhiminx.huang@intel.com>\n---\n tests/TestSuite_cvl_advanced_rss_gtpu.py | 270 ++++++++++++++++++++++++++-----\n 1 file changed, 226 insertions(+), 44 deletions(-)",
    "diff": "diff --git a/tests/TestSuite_cvl_advanced_rss_gtpu.py b/tests/TestSuite_cvl_advanced_rss_gtpu.py\nindex b41a5d4..1c79068 100755\n--- a/tests/TestSuite_cvl_advanced_rss_gtpu.py\n+++ b/tests/TestSuite_cvl_advanced_rss_gtpu.py\n@@ -365,27 +365,27 @@ mac_ipv4_gtpu_ipv4_symmetric = {\n     'post-test': [\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'nonfrag'},\n+            'action': {'save_hash': 'nonfrag'},\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'nonfrag'},\n+            'action': {'check_hash_different': 'nonfrag'},\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\", frag=6)/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'frag'},\n+            'action': {'save_hash': 'frag'},\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\", frag=6)/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'frag'},\n+            'action': {'check_hash_different': 'frag'},\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'icmp'},\n+            'action': {'save_hash': 'icmp'},\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/ICMP()/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'icmp'},\n+            'action': {'check_hash_different': 'icmp'},\n         },\n     ],\n }\n@@ -466,7 +466,7 @@ mac_ipv4_gtpu_ipv4_udp_symmetric = {\n     'post-test': [\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)',\n-            'action': {'check_hash_different': 'basic_with_rule'},\n+            'action': {'save_hash': 'basic_with_rule'},\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=23, dport=22)/(\"X\"*480)',\n@@ -474,7 +474,7 @@ mac_ipv4_gtpu_ipv4_udp_symmetric = {\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)',\n-            'action': {'check_hash_different': 'basic_with_rule'},\n+            'action': {'save_hash': 'basic_with_rule'},\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=23, dport=22)/(\"X\"*480)',\n@@ -611,35 +611,35 @@ mac_ipv4_gtpu_eh_dl_ipv4_symmetric = {\n     'post-test': [\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)',\n-            'action': 'save_or_no_hash',\n+            'action': 'save_hash',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)',\n-            'action': 'check_no_hash_or_different',\n+            'action': 'check_hash_different',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\", frag=6)/(\"X\"*480)',\n-            'action': 'save_or_no_hash',\n+            'action': 'save_hash',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\", frag=6)/(\"X\"*480)',\n-            'action': 'check_no_hash_or_different',\n+            'action': 'check_hash_different',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n-            'action': 'save_or_no_hash',\n+            'action': 'save_hash',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/ICMP()/(\"X\"*480)',\n-            'action': 'check_no_hash_or_different',\n+            'action': 'check_hash_different',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP()/(\"X\"*480)',\n-            'action': 'save_or_no_hash',\n+            'action': 'save_hash',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP()/(\"X\"*480)',\n-            'action': 'check_no_hash_or_different',\n+            'action': 'check_hash_different',\n         },\n     ],\n }\n@@ -723,16 +723,8 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric = {\n             'action': 'save_hash',\n         },\n         {\n-            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=23, dport=22)/(\"X\"*480)',\n-            'action': 'check_no_hash_or_different',\n-        },\n-        {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)',\n-            'action': 'check_no_hash_or_different',\n-        },\n-        {\n-            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=23, dport=22)/(\"X\"*480)',\n-            'action': 'check_no_hash_or_different',\n+            'action': 'check_hash_different',\n         },\n     ],\n }\n@@ -1091,12 +1083,43 @@ mac_ipv4_gtpu_ipv4_udp_gtpu = {\n     ]\n }\n \n+mac_ipv4_gtpu_ipv4_udp_ipv4 = {\n+    'sub_casename': 'mac_ipv4_gtpu_ipv4_udp_ipv4',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32')\n+                                                       .replace('dport=23', 'dport=33'),\n+            'action': 'check_hash_same',\n+        },\n+    ],\n+    'post-test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,\n+            'action': 'check_no_hash',\n+        },\n+    ]\n+}\n+\n \n mac_ipv4_gtpu_ipv4_udp_toeplitz = [mac_ipv4_gtpu_ipv4_udp_l3dst, mac_ipv4_gtpu_ipv4_udp_l3src,\n                                    mac_ipv4_gtpu_ipv4_udp_l3dst_l4src, mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst,\n                                    mac_ipv4_gtpu_ipv4_udp_l3src_l4src, mac_ipv4_gtpu_ipv4_udp_l3src_l4dst,\n                                    mac_ipv4_gtpu_ipv4_udp_l4src, mac_ipv4_gtpu_ipv4_udp_l4dst,\n-                                   mac_ipv4_gtpu_ipv4_udp_all, mac_ipv4_gtpu_ipv4_udp_gtpu]\n+                                   mac_ipv4_gtpu_ipv4_udp_all, mac_ipv4_gtpu_ipv4_udp_gtpu, mac_ipv4_gtpu_ipv4_udp_ipv4]\n \n mac_ipv4_gtpu_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp')\n                                         .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP')\n@@ -1667,11 +1690,42 @@ mac_ipv4_gtpu_ipv6_udp_gtpu = {\n     ]\n }\n \n+mac_ipv4_gtpu_ipv6_udp_ipv6 = {\n+    'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_ipv6',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32')\n+                                                       .replace('dport=23', 'dport=33'),\n+            'action': 'check_hash_same',\n+        },\n+    ],\n+    'post-test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,\n+            'action': 'check_no_hash',\n+        },\n+    ]\n+}\n+\n mac_ipv4_gtpu_ipv6_udp_toeplitz = [mac_ipv4_gtpu_ipv6_udp_l3dst, mac_ipv4_gtpu_ipv6_udp_l3src,\n                                    mac_ipv4_gtpu_ipv6_udp_l3dst_l4src, mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst,\n                                    mac_ipv4_gtpu_ipv6_udp_l3src_l4src, mac_ipv4_gtpu_ipv6_udp_l3src_l4dst,\n                                    mac_ipv4_gtpu_ipv6_udp_l4src, mac_ipv4_gtpu_ipv6_udp_l4dst,\n-                                   mac_ipv4_gtpu_ipv6_udp_all, mac_ipv4_gtpu_ipv6_udp_gtpu]\n+                                   mac_ipv4_gtpu_ipv6_udp_all, mac_ipv4_gtpu_ipv6_udp_gtpu, mac_ipv4_gtpu_ipv6_udp_ipv6]\n \n mac_ipv4_gtpu_ipv6_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp')\n                                         .replace('UDP(sport', 'TCP(sport').replace('TCP1', 'UDP')\n@@ -2574,6 +2628,46 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_gtpu = {\n         },\n     ]\n }\n+\n+mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_ipv4_6 = {\n+    'sub_casename': 'mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_ipv4_6',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'],\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.1', '192.168.1.1'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('192.168.0.2', '192.168.1.2'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('sport=22', 'sport=32')\n+                                                                              .replace('dport=23', 'dport=33'),\n+            'action': 'check_hash_same',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'].replace('sport=22', 'sport=32')\n+                                                                              .replace('dport=23', 'dport=33'),\n+            'action': 'check_hash_same',\n+        },\n+    ],\n+    'post-test': [\n+        {\n+            'send_packet': [\n+                mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'],\n+                mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['ul'],\n+            ],\n+            'action': 'check_no_hash',\n+        },\n+    ]\n+}\n+\n mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz = [\n     mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_only,\n     mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only,\n@@ -2584,6 +2678,7 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz = [\n     mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4dst_only,\n     mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp,\n     mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_gtpu,\n+    mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_ipv4_6,\n ]\n \n mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz = [eval(str(element).replace('TCP', 'TCP1').replace('udp', 'tcp')\n@@ -2609,7 +2704,8 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv6_udp_toeplitz = [eval(str(element).replace('g\n                                                          .replace('IP(dst=\"192.168.0.1\",src=\"192.168.0.2\"', 'IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"')\n                                                          .replace('IP(dst=\"192.168.1.1\",src=\"192.168.0.2\"', 'IPv6(dst=\"1212:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"')\n                                                          .replace('IP(dst=\"192.168.0.1\",src=\"192.168.1.2\"', 'IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"3434:910A:2222:5498:8475:1111:3900:2020\"')\n-                                                         .replace('IP(dst=\"192.168.1.1\",src=\"192.168.1.2\"', 'IPv6(dst=\"1212:910B:6666:3457:8295:3333:1800:2929\",src=\"3434:910A:2222:5498:8475:1111:3900:2020\"'))\n+                                                         .replace('IP(dst=\"192.168.1.1\",src=\"192.168.1.2\"', 'IPv6(dst=\"1212:910B:6666:3457:8295:3333:1800:2929\",src=\"3434:910A:2222:5498:8475:1111:3900:2020\"')\n+                                                         .replace('rss types ipv4', 'rss types ipv6'))\n                                                     for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_toeplitz]\n \n mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz = [eval(str(element).replace('gtp_psc / ipv4', 'gtp_psc / ipv6')\n@@ -2619,7 +2715,8 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz = [eval(str(element).replace('g\n                                                          .replace('IP(dst=\"192.168.0.1\",src=\"192.168.0.2\"', 'IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"')\n                                                          .replace('IP(dst=\"192.168.1.1\",src=\"192.168.0.2\"', 'IPv6(dst=\"1212:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"')\n                                                          .replace('IP(dst=\"192.168.0.1\",src=\"192.168.1.2\"', 'IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"3434:910A:2222:5498:8475:1111:3900:2020\"')\n-                                                         .replace('IP(dst=\"192.168.1.1\",src=\"192.168.1.2\"', 'IPv6(dst=\"1212:910B:6666:3457:8295:3333:1800:2929\",src=\"3434:910A:2222:5498:8475:1111:3900:2020\"'))\n+                                                         .replace('IP(dst=\"192.168.1.1\",src=\"192.168.1.2\"', 'IPv6(dst=\"1212:910B:6666:3457:8295:3333:1800:2929\",src=\"3434:910A:2222:5498:8475:1111:3900:2020\"')\n+                                                         .replace('rss types ipv4', 'rss types ipv6'))\n                                                     for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz]\n \n mac_ipv4_gtpu_eh_dl_ipv4_udp_basic = 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)'\n@@ -2935,11 +3032,42 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu = {\n     ]\n }\n \n+mac_ipv4_gtpu_eh_dl_ipv4_udp_ipv4 = {\n+    'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv4_udp_ipv4',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32')\n+                                                             .replace('dport=23', 'dport=33'),\n+            'action': 'check_hash_same',\n+        },\n+    ],\n+    'post-test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,\n+            'action': 'check_no_hash',\n+        },\n+    ]\n+}\n+\n mac_ipv4_gtpu_eh_dl_ipv4_udp_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst, mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src,\n                                          mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src, mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst,\n                                          mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src, mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst,\n                                          mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src, mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst,\n-                                         mac_ipv4_gtpu_eh_dl_ipv4_udp_all, mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu]\n+                                         mac_ipv4_gtpu_eh_dl_ipv4_udp_all, mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu, mac_ipv4_gtpu_eh_dl_ipv4_udp_ipv4]\n \n mac_ipv4_gtpu_eh_ul_ipv4_udp_toeplitz = [eval(str(element).replace('(type=1', '(type=2')\n                                                           .replace('(type=0', '(type=1').replace('(type=2', '(type=0')\n@@ -3589,11 +3717,42 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu = {\n     ]\n }\n \n+mac_ipv4_gtpu_eh_dl_ipv6_udp_ipv6 = {\n+    'sub_casename': 'mac_ipv4_gtpu_eh_dl_ipv6_udp_ipv6',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'),\n+            'action': 'check_hash_different',\n+        },\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32')\n+                                                       .replace('dport=23', 'dport=33'),\n+            'action': 'check_hash_same',\n+        },\n+    ],\n+    'post-test': [\n+        {\n+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,\n+            'action': 'check_no_hash',\n+        },\n+    ]\n+}\n+\n mac_ipv4_gtpu_eh_dl_ipv6_udp_toeplitz = [mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst, mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src,\n                                    mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src, mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst,\n                                    mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src, mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst,\n                                    mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src, mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst,\n-                                   mac_ipv4_gtpu_eh_dl_ipv6_udp_all, mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu]\n+                                   mac_ipv4_gtpu_eh_dl_ipv6_udp_all, mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu, mac_ipv4_gtpu_eh_dl_ipv6_udp_ipv6]\n mac_ipv4_gtpu_eh_ul_ipv6_udp_toeplitz = [eval(str(element).replace('(type=1', '(type=2')\n                                                           .replace('(type=0', '(type=1').replace('(type=2', '(type=0')\n                                                           .replace('gtp_psc pdu_t is 0', 'gtp_psc pdu_t is 1')\n@@ -3944,15 +4103,27 @@ mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric = {\n     'post-test': [\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'ipv4-nonfrag'},\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)',\n+            'action': 'check_hash_different',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'ipv4-frag'},\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\",frag=6)/(\"X\"*480)',\n+            'action': 'check_hash_different',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n-            'action': {'check_no_hash_or_different': 'ipv4-icmp'},\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/ICMP()/(\"X\"*480)',\n+            'action': 'check_hash_different',\n         },\n     ],\n }\n@@ -4067,11 +4238,19 @@ mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric = {\n     'post-test': [\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)',\n-            'action': {'check_hash_different', 'udp-dl'},\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)',\n+            'action': 'check_hash_different',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)',\n-            'action': {'check_hash_different', 'udp-ul'},\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)',\n+            'action': 'check_hash_different',\n         },\n     ],\n }\n@@ -4184,11 +4363,19 @@ mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric = {\n     'post-test': [\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n-            'action': {'check_hash_different', 'udp-dl'},\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+            'action': 'check_hash_different',\n         },\n         {\n             'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n-            'action': {'check_hash_different', 'udp-ul'},\n+            'action': 'save_hash',\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+            'action': 'check_hash_different',\n         },\n     ],\n }\n@@ -4602,22 +4789,17 @@ class TestCVLAdvancedRSSGTPU(TestCase):\n         negative_rules = [\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end',\n-            'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types udp end key_len 0 queues end / end']\n         self.rssprocess.create_rule(rule=negative_rules, check_stats=False, msg=\"Invalid input pattern: Invalid argument\")\n \n     def test_symmetric_negative_cases(self):\n         rules = [\n-            'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types gtpu end key_len 0 queues end / end',\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-dst-only end key_len 0 queues end / end',\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end',\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end',\n-            'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end',\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end',\n             'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types tcp end key_len 0 queues end / end',\n-            'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-src-only end key_len 0 queues end / end',\n-            'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l4-dst-only end key_len 0 queues end / end',\n-            'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end']\n+            'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-src-only end key_len 0 queues end / end',]\n         self.rssprocess.create_rule(rule=rules, check_stats=False)\n \n     def test_global_simple_xor(self):\n",
    "prefixes": [
        "V1"
    ]
}