get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 104816,
    "url": "http://patchwork.dpdk.org/api/patches/104816/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dts/patch/20211202111453.146572-3-yanx.xia@intel.com/",
    "project": {
        "id": 3,
        "url": "http://patchwork.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": "<20211202111453.146572-3-yanx.xia@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20211202111453.146572-3-yanx.xia@intel.com",
    "date": "2021-12-02T11:14:53",
    "name": "[V3,3/3] tests/fortville_rss_granularity_config: delete the suite",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "21a2597cd45735d2e0ea960e4212937925e3ca8a",
    "submitter": {
        "id": 2034,
        "url": "http://patchwork.dpdk.org/api/people/2034/?format=api",
        "name": "Yan Xia",
        "email": "yanx.xia@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dts/patch/20211202111453.146572-3-yanx.xia@intel.com/mbox/",
    "series": [
        {
            "id": 20829,
            "url": "http://patchwork.dpdk.org/api/series/20829/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=20829",
            "date": "2021-12-02T11:14:51",
            "name": "[V3,1/3] test_plans/fortville_rss_granularity_config: delete the test plan",
            "version": 3,
            "mbox": "http://patchwork.dpdk.org/series/20829/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/104816/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/104816/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 C4BA0A0C47;\n\tThu,  2 Dec 2021 04:14:52 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id BBE1041152;\n\tThu,  2 Dec 2021 04:14:52 +0100 (CET)",
            "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n by mails.dpdk.org (Postfix) with ESMTP id F2A5A40140\n for <dts@dpdk.org>; Thu,  2 Dec 2021 04:14:50 +0100 (CET)",
            "from fmsmga006.fm.intel.com ([10.253.24.20])\n by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 01 Dec 2021 19:14:50 -0800",
            "from unknown (HELO dpdk.lan) ([10.240.183.77])\n by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 01 Dec 2021 19:14:48 -0800"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10185\"; a=\"260605790\"",
            "E=Sophos;i=\"5.87,280,1631602800\"; d=\"scan'208\";a=\"260605790\"",
            "E=Sophos;i=\"5.87,280,1631602800\"; d=\"scan'208\";a=\"745697949\""
        ],
        "From": "Yan Xia <yanx.xia@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Yan Xia <yanx.xia@intel.com>",
        "Subject": "[dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete\n the suite",
        "Date": "Thu,  2 Dec 2021 11:14:53 +0000",
        "Message-Id": "<20211202111453.146572-3-yanx.xia@intel.com>",
        "X-Mailer": "git-send-email 2.33.1",
        "In-Reply-To": "<20211202111453.146572-1-yanx.xia@intel.com>",
        "References": "<20211202111453.146572-1-yanx.xia@intel.com>",
        "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": "delete fortville_rss_granularity_config testsuite\ndpdk commit id: 81db321da ethdev: remove legacy HASH filter type support\n\nSigned-off-by: Yan Xia <yanx.xia@intel.com>\n---\n ...tSuite_fortville_rss_granularity_config.py | 563 ------------------\n 1 file changed, 563 deletions(-)\n delete mode 100644 tests/TestSuite_fortville_rss_granularity_config.py",
    "diff": "diff --git a/tests/TestSuite_fortville_rss_granularity_config.py b/tests/TestSuite_fortville_rss_granularity_config.py\ndeleted file mode 100644\nindex b397cf37..00000000\n--- a/tests/TestSuite_fortville_rss_granularity_config.py\n+++ /dev/null\n@@ -1,563 +0,0 @@\n-# BSD LICENSE\n-#\n-# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n-# All rights reserved.\n-#\n-# Redistribution and use in source and binary forms, with or without\n-# modification, are permitted provided that the following conditions\n-# are met:\n-#\n-#   * Redistributions of source code must retain the above copyright\n-#     notice, this list of conditions and the following disclaimer.\n-#   * Redistributions in binary form must reproduce the above copyright\n-#     notice, this list of conditions and the following disclaimer in\n-#     the documentation and/or other materials provided with the\n-#     distribution.\n-#   * Neither the name of Intel Corporation nor the names of its\n-#     contributors may be used to endorse or promote products derived\n-#     from this software without specific prior written permission.\n-#\n-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n-# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n-\n-\"\"\"\n-DPDK Test suite.\n-\n-Test DPDK2.3 feature:\n-1.Fortville support granularity configuration of RSS.\n-By default Fortville uses hash input set preloaded from NVM image which includes all fields\n-- IPv4/v6+TCP/UDP port. Potential problem for this is global configuration per device and can\n-affect all ports. It is required that hash input set can be configurable,  such as using IPv4\n-only or IPv6 only or IPv4/v6+TCP/UDP.\n-\n-2.Fortville support 32-bit GRE keys.\n-By default Fortville extracts only 24 bits of GRE key to FieldVector (NVGRE use case) but\n-for Telco use cases full 32-bit GRE key is needed. It is required that both 24-bit and 32-bit\n-keys for GRE should be supported. the test plan is to test the API to switch between 24-bit and\n-32-bit keys\n-\n-Support 4*10G, 1*40G and 2*40G NICs.\n-\"\"\"\n-import random\n-import re\n-import time\n-\n-import framework.dut as dut\n-import framework.utils as utils\n-from framework.pmd_output import PmdOutput\n-\n-testQueues = [16]\n-reta_entries = []\n-reta_lines = []\n-\n-# Use scapy to send packets with different source and dest ip.\n-# and collect the hash result of five tuple and the queue id.\n-from framework.test_case import TestCase\n-\n-#\n-#\n-# Test class.\n-#\n-\n-\n-class TestFortvilleRssGranularityConfig(TestCase):\n-    #\n-    #\n-    # Utility methods and other non-test code.\n-    #\n-\n-    def set_up_all(self):\n-        \"\"\"\n-        Run at the start of each test suite.\n-        \"\"\"\n-\n-        self.verify(self.nic in [\"fortville_eagle\", \"fortville_spirit\",\n-                    \"fortville_spirit_single\", \"fortville_25g\", \"carlsville\"],\n-                    \"NIC Unsupported: \" + str(self.nic))\n-        ports = self.dut.get_ports(self.nic)\n-        self.verify(len(ports) >= 1, \"Not enough ports available\")\n-        dutPorts = self.dut.get_ports(self.nic)\n-        localPort = self.tester.get_local_port(dutPorts[0])\n-        self.itf = self.tester.get_interface(localPort)\n-        self.pmdout = PmdOutput(self.dut)\n-\n-    def set_up(self):\n-        \"\"\"\n-        Run before each test case.\n-        \"\"\"\n-        global reta_lines\n-        reta_lines = []\n-\n-    def send_packet(self, itf, tran_type):\n-        \"\"\"\n-        Sends packets.\n-        \"\"\"\n-        global reta_lines\n-        self.tester.scapy_foreground()\n-        self.dut.send_expect(\"start\", \"testpmd>\")\n-        mac = self.dut.get_mac_address(0)\n-\n-        # send packet with different source and dest ip\n-        if tran_type == \"ipv4-other\":\n-            packet = r'sendp([Ether(dst=\"%s\", src=get_if_hwaddr(\"%s\"))/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", proto=47)/GRE(key_present=1,proto=2048,key=67108863)/IP()], iface=\"%s\")' % (\n-                mac, itf, itf)\n-            self.tester.scapy_append(packet)\n-            self.tester.scapy_execute()\n-            time.sleep(.5)\n-        elif tran_type == \"ipv4-tcp\":\n-            packet = r'sendp([Ether(dst=\"%s\", src=get_if_hwaddr(\"%s\"))/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=1024,dport=1025)], iface=\"%s\")' % (\n-                mac, itf, itf)\n-            self.tester.scapy_append(packet)\n-            self.tester.scapy_execute()\n-            time.sleep(.5)\n-        elif tran_type == \"ipv4-udp\":\n-            packet = r'sendp([Ether(dst=\"%s\", src=get_if_hwaddr(\"%s\"))/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=1024,dport=1025)], iface=\"%s\")' % (\n-                mac, itf, itf)\n-            self.tester.scapy_append(packet)\n-            self.tester.scapy_execute()\n-            time.sleep(.5)\n-        elif tran_type == \"l2_payload\":\n-            packet = r'sendp([Ether(dst=\"%s\", src=get_if_hwaddr(\"%s\"))/Dot1Q(id=0x8100,vlan=1)/Dot1Q(id=0x8100,vlan=2)], iface=\"%s\")' % (\n-                mac, itf, itf)\n-            self.tester.scapy_append(packet)\n-            self.tester.scapy_execute()\n-            time.sleep(.5)\n-        elif tran_type == \"ipv6-tcp\":\n-            packet = r'sendp([Ether(dst=\"%s\", src=get_if_hwaddr(\"%s\"))/IPv6(src=\"3ffe:2501:200:1fff::1\", dst=\"3ffe:2501:200:3::2\")/TCP(sport=1024,dport=1025)], iface=\"%s\")' % (\n-                mac, itf, itf)\n-            self.tester.scapy_append(packet)\n-            self.tester.scapy_execute()\n-            time.sleep(.5)\n-        elif tran_type == \"ipv6-udp\":\n-            packet = r'sendp([Ether(dst=\"%s\", src=get_if_hwaddr(\"%s\"))/IPv6(src=\"3ffe:2501:200:1fff::1\", dst=\"3ffe:2501:200:3::2\")/UDP(sport=1024,dport=1025)], iface=\"%s\")' % (\n-                mac, itf, itf)\n-            self.tester.scapy_append(packet)\n-            self.tester.scapy_execute()\n-            time.sleep(.5)\n-        else:\n-            print(\"\\ntran_type error!\\n\")\n-\n-        out = self.dut.get_session_output(timeout=1)\n-        self.dut.send_expect(\"stop\", \"testpmd>\")\n-        lines = out.split(\"\\r\\n\")\n-        reta_line = {}\n-        # collect the hash result and the queue id\n-        for line in lines:\n-            line = line.strip()\n-            if len(line) != 0 and line.strip().startswith(\"port \"):\n-                reta_line = {}\n-                rexp = r\"port (\\d)/queue (\\d{1,2}): received (\\d) packets\"\n-                m = re.match(rexp, line.strip())\n-                if m:\n-                    reta_line[\"port\"] = m.group(1)\n-                    reta_line[\"queue\"] = m.group(2)\n-\n-            elif len(line) != 0 and line.startswith((\"src=\",)):\n-                for item in line.split(\"-\"):\n-                    item = item.strip()\n-                    if(item.startswith(\"RSS hash\")):\n-                        name, value = item.split(\"=\", 1)\n-\n-                reta_line[name.strip()] = value.strip()\n-                reta_lines.append(reta_line)\n-\n-        self.append_result_table()\n-\n-    def append_result_table(self):\n-        \"\"\"\n-        Append the hash value and queue id into table.\n-        \"\"\"\n-\n-        global reta_lines\n-\n-        # append the the hash value and queue id into table\n-        self.result_table_create(\n-            ['packet index', 'hash value', 'hash index', 'queue id'])\n-        i = 0\n-\n-        for tmp_reta_line in reta_lines:\n-\n-            # compute the hash result of five tuple into the 7 LSBs value.\n-            hash_index = int(tmp_reta_line[\"RSS hash\"], 16)\n-            self.result_table_add(\n-                [i, tmp_reta_line[\"RSS hash\"], hash_index, tmp_reta_line[\"queue\"]])\n-            i = i + 1\n-\n-    def test_ipv4_tcp(self):\n-        \"\"\"\n-        Test with flow type ipv4-tcp.\n-        \"\"\"\n-        flag = 1\n-\n-        # test with different rss queues\n-        for queue in testQueues:\n-            self.pmdout.start_testpmd(\n-                \"Default\", \"  --portmask=0x1 --rxq=%d --txq=%d\" % (queue, queue))\n-            self.dut.send_expect(\"set verbose 8\", \"testpmd> \")\n-            self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \")\n-\n-            self.dut.send_expect(\"port stop all\", \"testpmd> \")\n-            self.dut.send_expect(\n-                \"set_hash_global_config  0 toeplitz ipv4-tcp enable\", \"testpmd> \")\n-            self.dut.send_expect(\"port start all\", \"testpmd> \")\n-            res = self.pmdout.wait_link_status_up(\"all\")\n-            self.verify(res is True, \"link is donw\")\n-\n-            self.dut.send_expect(\n-                \"port config all rss tcp\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-tcp\")\n-\n-            # set hash input set to \"none\" by testpmd on dut\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp none select\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-tcp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv4 & dst-ipv4\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp src-ipv4 add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp dst-ipv4 add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-tcp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, tcp-src-port, tcp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp tcp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp tcp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-tcp\")\n-\n-            # set hash input set by testpmd on dut, enable tcp-src-port, tcp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp none select\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp tcp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-tcp tcp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-tcp\")\n-\n-            self.dut.send_expect(\"quit\", \"# \", 30)\n-\n-        self.result_table_print()\n-        result_rows = self.result_table_getrows()\n-        self.verify(len(result_rows) > 1, \"There is no data in the table, testcase failed!\")\n-\n-        if ((result_rows[1][1] == result_rows[2][1]) or (result_rows[1][3] == result_rows[2][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[3][1]) or (result_rows[1][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[3][1]) or (result_rows[2][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[5][1]) or (result_rows[1][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[5][1]) or (result_rows[2][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[3][1] == result_rows[5][1]) or (result_rows[3][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] != result_rows[4][1]) or (result_rows[1][3] != result_rows[4][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are different, rss_granularity_config failed!\")\n-\n-    def test_ipv4_udp(self):\n-        \"\"\"\n-        Test with flow type ipv4-udp.\n-        \"\"\"\n-        flag = 1\n-\n-        # test with different rss queues\n-        for queue in testQueues:\n-            self.pmdout.start_testpmd(\n-                \"Default\", \"  --portmask=0x1 --rxq=%d --txq=%d\" % (queue, queue))\n-\n-            self.dut.send_expect(\"set verbose 8\", \"testpmd> \")\n-            self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \")\n-\n-            self.dut.send_expect(\"port stop all\", \"testpmd> \")\n-            self.dut.send_expect(\n-                \"set_hash_global_config  0 toeplitz ipv4-udp enable\", \"testpmd> \")\n-            self.dut.send_expect(\"port start all\", \"testpmd> \")\n-            res = self.pmdout.wait_link_status_up(\"all\")\n-            self.verify(res is True, \"link is donw\")\n-\n-            self.dut.send_expect(\n-                \"port config all rss udp\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-udp\")\n-\n-            # set hash input set to \"none\" by testpmd on dut\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp none select\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-udp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv4 & dst-ipv4\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp src-ipv4 add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp dst-ipv4 add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-udp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, udp-src-port, udp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp udp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp udp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-udp\")\n-\n-            # set hash input set by testpmd on dut, enable udp-src-port, udp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp none select\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp udp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-udp udp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-udp\")\n-\n-            self.dut.send_expect(\"quit\", \"# \", 30)\n-\n-        self.result_table_print()\n-        result_rows = self.result_table_getrows()\n-        self.verify(len(result_rows) > 1, \"There is no data in the table, testcase failed!\")\n-\n-        # check the results\n-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[3][1])or(result_rows[1][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[3][1])or(result_rows[2][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[5][1])or(result_rows[1][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[5][1])or(result_rows[2][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[3][1] == result_rows[5][1])or(result_rows[3][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] != result_rows[4][1])or(result_rows[1][3] != result_rows[4][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are different, rss_granularity_config failed!\")\n-\n-    def test_ipv6_tcp(self):\n-        \"\"\"\n-        Test with flow type ipv6-tcp.\n-        \"\"\"\n-        flag = 1\n-\n-        # test with different rss queues\n-        for queue in testQueues:\n-            self.pmdout.start_testpmd(\n-                \"Default\", \"  --portmask=0x1 --rxq=%d --txq=%d\" % (queue, queue))\n-\n-            self.dut.send_expect(\"set verbose 8\", \"testpmd> \")\n-            self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \")\n-\n-            self.dut.send_expect(\"port stop all\", \"testpmd> \")\n-            self.dut.send_expect(\n-                \"set_hash_global_config  0 toeplitz ipv6-tcp enable\", \"testpmd> \")\n-            self.dut.send_expect(\"port start all\", \"testpmd> \")\n-            res = self.pmdout.wait_link_status_up(\"all\")\n-            self.verify(res is True, \"link is donw\")\n-\n-            self.dut.send_expect(\n-                \"port config all rss tcp\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-tcp\")\n-\n-            # set hash input set to \"none\" by testpmd on dut\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp none select\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-tcp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv6 & dst-ipv6\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp src-ipv6 add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp dst-ipv6 add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-tcp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv6, dst-ipv6, tcp-src-port, tcp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp tcp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp tcp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-tcp\")\n-\n-            # set hash input set by testpmd on dut, enable tcp-src-port, tcp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp none select\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp tcp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-tcp tcp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-tcp\")\n-\n-            self.dut.send_expect(\"quit\", \"# \", 30)\n-\n-        self.result_table_print()\n-        result_rows = self.result_table_getrows()\n-        self.verify(len(result_rows) > 1, \"There is no data in the table, testcase failed!\")\n-\n-        # check the results\n-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[3][1])or(result_rows[1][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[3][1])or(result_rows[2][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[5][1])or(result_rows[1][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[5][1])or(result_rows[2][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[3][1] == result_rows[5][1])and(result_rows[3][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] != result_rows[4][1])or(result_rows[1][3] != result_rows[4][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are different, rss_granularity_config failed!\")\n-\n-    def test_ipv6_udp(self):\n-        \"\"\"\n-        Test with flow type ipv6-udp.\n-        \"\"\"\n-        flag = 1\n-\n-        # test with different rss queues\n-        for queue in testQueues:\n-            self.pmdout.start_testpmd(\n-                \"Default\", \"  --portmask=0x1 --rxq=%d --txq=%d\" % (queue, queue))\n-\n-            self.dut.send_expect(\"set verbose 8\", \"testpmd> \")\n-            self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \")\n-\n-            self.dut.send_expect(\"port stop all\", \"testpmd> \")\n-            self.dut.send_expect(\n-                \"set_hash_global_config  0 toeplitz ipv6-udp enable\", \"testpmd> \")\n-            self.dut.send_expect(\"port start all\", \"testpmd> \")\n-            res = self.pmdout.wait_link_status_up(\"all\")\n-            self.verify(res is True, \"link is donw\")\n-\n-            self.dut.send_expect(\n-                \"port config all rss udp\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-udp\")\n-\n-            # set hash input set to \"none\" by testpmd on dut\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp none select\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-udp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv6 & dst-ipv6\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp src-ipv6 add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp dst-ipv6 add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-udp\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv6, dst-ipv6, udp-src-port, udp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp udp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp udp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-udp\")\n-\n-            # set hash input set by testpmd on dut, enable udp-src-port, udp-dst-port\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp none select\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp udp-src-port add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv6-udp udp-dst-port add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv6-udp\")\n-\n-            self.dut.send_expect(\"quit\", \"# \", 30)\n-\n-        self.result_table_print()\n-        result_rows = self.result_table_getrows()\n-        self.verify(len(result_rows) > 1, \"There is no data in the table, testcase failed!\")\n-\n-        # check the results\n-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[3][1])or(result_rows[1][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[3][1])or(result_rows[2][3] == result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[5][1])or(result_rows[1][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[2][1] == result_rows[5][1])or(result_rows[2][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[3][1] == result_rows[5][1])and(result_rows[3][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] != result_rows[4][1])or(result_rows[1][3] != result_rows[4][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are different, rss_granularity_config failed!\")\n-\n-    def test_GRE_keys(self):\n-        \"\"\"\n-        Test with 32-bit GRE keys and 24-bit GRE keys.\n-        \"\"\"\n-        flag = 1\n-\n-        # test with different rss queues\n-        for queue in testQueues:\n-            self.pmdout.start_testpmd(\n-                \"Default\", \"  --portmask=0x1 --rxq=%d --txq=%d\" % (queue, queue))\n-\n-            self.dut.send_expect(\"set verbose 8\", \"testpmd> \")\n-            self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \")\n-\n-            self.dut.send_expect(\"port stop all\", \"testpmd> \")\n-            self.dut.send_expect(\n-                \"set_hash_global_config  0 toeplitz ipv4-other enable\", \"testpmd> \")\n-            self.dut.send_expect(\"port start all\", \"testpmd> \")\n-            res = self.pmdout.wait_link_status_up(\"all\")\n-            self.verify(res is True, \"link is donw\")\n-\n-            self.dut.send_expect(\n-                \"port config all rss all\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-other\")\n-\n-            # set hash input set to \"none\" by testpmd on dut\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-other none select\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-other\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv4 & dst-ipv4\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-other src-ipv4 add\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-other dst-ipv4 add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-other\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, gre-key-len 3\n-            self.dut.send_expect(\"global_config 0 gre-key-len 3\", \"testpmd> \")\n-            self.dut.send_expect(\"set_hash_input_set 0 ipv4-other gre-key add\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-other\")\n-\n-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, gre-key-len 4\n-            self.dut.send_expect(\"global_config 0 gre-key-len 4\", \"testpmd> \")\n-            self.send_packet(self.itf, \"ipv4-other\")\n-\n-            self.dut.send_expect(\"quit\", \"# \", 30)\n-\n-        self.result_table_print()\n-        result_rows = self.result_table_getrows()\n-        self.verify(len(result_rows) > 1, \"There is no data in the table, testcase failed!\")\n-\n-        # check the results\n-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] != result_rows[3][1])or(result_rows[1][3] != result_rows[3][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are different, rss_granularity_config failed!\")\n-        elif ((result_rows[1][1] == result_rows[4][1])or(result_rows[1][3] == result_rows[4][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-        elif ((result_rows[4][1] == result_rows[5][1])or(result_rows[4][3] == result_rows[5][3])):\n-            flag = 0\n-            self.verify(flag, \"The two hash values are the same, rss_granularity_config failed!\")\n-\n-    def tear_down(self):\n-        \"\"\"\n-        Run after each test case.\n-        \"\"\"\n-        self.dut.kill_all()\n-\n-    def tear_down_all(self):\n-        \"\"\"\n-        Run after each test suite.\n-        \"\"\"\n-        pass\n-\n",
    "prefixes": [
        "V3",
        "3/3"
    ]
}