diff --git a/tests/TestSuite_fortville_rss_granularity_config.py b/tests/TestSuite_fortville_rss_granularity_config.py
deleted file mode 100644
index b397cf37..00000000
--- a/tests/TestSuite_fortville_rss_granularity_config.py
+++ /dev/null
@@ -1,563 +0,0 @@
-# BSD LICENSE
-#
-# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-#   * Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-#   * Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in
-#     the documentation and/or other materials provided with the
-#     distribution.
-#   * Neither the name of Intel Corporation nor the names of its
-#     contributors may be used to endorse or promote products derived
-#     from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""
-DPDK Test suite.
-
-Test DPDK2.3 feature:
-1.Fortville support granularity configuration of RSS.
-By default Fortville uses hash input set preloaded from NVM image which includes all fields
-- IPv4/v6+TCP/UDP port. Potential problem for this is global configuration per device and can
-affect all ports. It is required that hash input set can be configurable,  such as using IPv4
-only or IPv6 only or IPv4/v6+TCP/UDP.
-
-2.Fortville support 32-bit GRE keys.
-By default Fortville extracts only 24 bits of GRE key to FieldVector (NVGRE use case) but
-for Telco use cases full 32-bit GRE key is needed. It is required that both 24-bit and 32-bit
-keys for GRE should be supported. the test plan is to test the API to switch between 24-bit and
-32-bit keys
-
-Support 4*10G, 1*40G and 2*40G NICs.
-"""
-import random
-import re
-import time
-
-import framework.dut as dut
-import framework.utils as utils
-from framework.pmd_output import PmdOutput
-
-testQueues = [16]
-reta_entries = []
-reta_lines = []
-
-# Use scapy to send packets with different source and dest ip.
-# and collect the hash result of five tuple and the queue id.
-from framework.test_case import TestCase
-
-#
-#
-# Test class.
-#
-
-
-class TestFortvilleRssGranularityConfig(TestCase):
-    #
-    #
-    # Utility methods and other non-test code.
-    #
-
-    def set_up_all(self):
-        """
-        Run at the start of each test suite.
-        """
-
-        self.verify(self.nic in ["fortville_eagle", "fortville_spirit",
-                    "fortville_spirit_single", "fortville_25g", "carlsville"],
-                    "NIC Unsupported: " + str(self.nic))
-        ports = self.dut.get_ports(self.nic)
-        self.verify(len(ports) >= 1, "Not enough ports available")
-        dutPorts = self.dut.get_ports(self.nic)
-        localPort = self.tester.get_local_port(dutPorts[0])
-        self.itf = self.tester.get_interface(localPort)
-        self.pmdout = PmdOutput(self.dut)
-
-    def set_up(self):
-        """
-        Run before each test case.
-        """
-        global reta_lines
-        reta_lines = []
-
-    def send_packet(self, itf, tran_type):
-        """
-        Sends packets.
-        """
-        global reta_lines
-        self.tester.scapy_foreground()
-        self.dut.send_expect("start", "testpmd>")
-        mac = self.dut.get_mac_address(0)
-
-        # send packet with different source and dest ip
-        if tran_type == "ipv4-other":
-            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")' % (
-                mac, itf, itf)
-            self.tester.scapy_append(packet)
-            self.tester.scapy_execute()
-            time.sleep(.5)
-        elif tran_type == "ipv4-tcp":
-            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")' % (
-                mac, itf, itf)
-            self.tester.scapy_append(packet)
-            self.tester.scapy_execute()
-            time.sleep(.5)
-        elif tran_type == "ipv4-udp":
-            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")' % (
-                mac, itf, itf)
-            self.tester.scapy_append(packet)
-            self.tester.scapy_execute()
-            time.sleep(.5)
-        elif tran_type == "l2_payload":
-            packet = r'sendp([Ether(dst="%s", src=get_if_hwaddr("%s"))/Dot1Q(id=0x8100,vlan=1)/Dot1Q(id=0x8100,vlan=2)], iface="%s")' % (
-                mac, itf, itf)
-            self.tester.scapy_append(packet)
-            self.tester.scapy_execute()
-            time.sleep(.5)
-        elif tran_type == "ipv6-tcp":
-            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")' % (
-                mac, itf, itf)
-            self.tester.scapy_append(packet)
-            self.tester.scapy_execute()
-            time.sleep(.5)
-        elif tran_type == "ipv6-udp":
-            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")' % (
-                mac, itf, itf)
-            self.tester.scapy_append(packet)
-            self.tester.scapy_execute()
-            time.sleep(.5)
-        else:
-            print("\ntran_type error!\n")
-
-        out = self.dut.get_session_output(timeout=1)
-        self.dut.send_expect("stop", "testpmd>")
-        lines = out.split("\r\n")
-        reta_line = {}
-        # collect the hash result and the queue id
-        for line in lines:
-            line = line.strip()
-            if len(line) != 0 and line.strip().startswith("port "):
-                reta_line = {}
-                rexp = r"port (\d)/queue (\d{1,2}): received (\d) packets"
-                m = re.match(rexp, line.strip())
-                if m:
-                    reta_line["port"] = m.group(1)
-                    reta_line["queue"] = m.group(2)
-
-            elif len(line) != 0 and line.startswith(("src=",)):
-                for item in line.split("-"):
-                    item = item.strip()
-                    if(item.startswith("RSS hash")):
-                        name, value = item.split("=", 1)
-
-                reta_line[name.strip()] = value.strip()
-                reta_lines.append(reta_line)
-
-        self.append_result_table()
-
-    def append_result_table(self):
-        """
-        Append the hash value and queue id into table.
-        """
-
-        global reta_lines
-
-        # append the the hash value and queue id into table
-        self.result_table_create(
-            ['packet index', 'hash value', 'hash index', 'queue id'])
-        i = 0
-
-        for tmp_reta_line in reta_lines:
-
-            # compute the hash result of five tuple into the 7 LSBs value.
-            hash_index = int(tmp_reta_line["RSS hash"], 16)
-            self.result_table_add(
-                [i, tmp_reta_line["RSS hash"], hash_index, tmp_reta_line["queue"]])
-            i = i + 1
-
-    def test_ipv4_tcp(self):
-        """
-        Test with flow type ipv4-tcp.
-        """
-        flag = 1
-
-        # test with different rss queues
-        for queue in testQueues:
-            self.pmdout.start_testpmd(
-                "Default", "  --portmask=0x1 --rxq=%d --txq=%d" % (queue, queue))
-            self.dut.send_expect("set verbose 8", "testpmd> ")
-            self.dut.send_expect("set fwd rxonly", "testpmd> ")
-
-            self.dut.send_expect("port stop all", "testpmd> ")
-            self.dut.send_expect(
-                "set_hash_global_config  0 toeplitz ipv4-tcp enable", "testpmd> ")
-            self.dut.send_expect("port start all", "testpmd> ")
-            res = self.pmdout.wait_link_status_up("all")
-            self.verify(res is True, "link is donw")
-
-            self.dut.send_expect(
-                "port config all rss tcp", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-tcp")
-
-            # set hash input set to "none" by testpmd on dut
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp none select", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-tcp")
-
-            # set hash input set by testpmd on dut, enable src-ipv4 & dst-ipv4
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp src-ipv4 add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp dst-ipv4 add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-tcp")
-
-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, tcp-src-port, tcp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp tcp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp tcp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-tcp")
-
-            # set hash input set by testpmd on dut, enable tcp-src-port, tcp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp none select", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp tcp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-tcp tcp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-tcp")
-
-            self.dut.send_expect("quit", "# ", 30)
-
-        self.result_table_print()
-        result_rows = self.result_table_getrows()
-        self.verify(len(result_rows) > 1, "There is no data in the table, testcase failed!")
-
-        if ((result_rows[1][1] == result_rows[2][1]) or (result_rows[1][3] == result_rows[2][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[3][1]) or (result_rows[1][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[3][1]) or (result_rows[2][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[5][1]) or (result_rows[1][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[5][1]) or (result_rows[2][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[3][1] == result_rows[5][1]) or (result_rows[3][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] != result_rows[4][1]) or (result_rows[1][3] != result_rows[4][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are different, rss_granularity_config failed!")
-
-    def test_ipv4_udp(self):
-        """
-        Test with flow type ipv4-udp.
-        """
-        flag = 1
-
-        # test with different rss queues
-        for queue in testQueues:
-            self.pmdout.start_testpmd(
-                "Default", "  --portmask=0x1 --rxq=%d --txq=%d" % (queue, queue))
-
-            self.dut.send_expect("set verbose 8", "testpmd> ")
-            self.dut.send_expect("set fwd rxonly", "testpmd> ")
-
-            self.dut.send_expect("port stop all", "testpmd> ")
-            self.dut.send_expect(
-                "set_hash_global_config  0 toeplitz ipv4-udp enable", "testpmd> ")
-            self.dut.send_expect("port start all", "testpmd> ")
-            res = self.pmdout.wait_link_status_up("all")
-            self.verify(res is True, "link is donw")
-
-            self.dut.send_expect(
-                "port config all rss udp", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-udp")
-
-            # set hash input set to "none" by testpmd on dut
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp none select", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-udp")
-
-            # set hash input set by testpmd on dut, enable src-ipv4 & dst-ipv4
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp src-ipv4 add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp dst-ipv4 add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-udp")
-
-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, udp-src-port, udp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp udp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp udp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-udp")
-
-            # set hash input set by testpmd on dut, enable udp-src-port, udp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp none select", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp udp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-udp udp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-udp")
-
-            self.dut.send_expect("quit", "# ", 30)
-
-        self.result_table_print()
-        result_rows = self.result_table_getrows()
-        self.verify(len(result_rows) > 1, "There is no data in the table, testcase failed!")
-
-        # check the results
-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[3][1])or(result_rows[1][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[3][1])or(result_rows[2][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[5][1])or(result_rows[1][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[5][1])or(result_rows[2][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[3][1] == result_rows[5][1])or(result_rows[3][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] != result_rows[4][1])or(result_rows[1][3] != result_rows[4][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are different, rss_granularity_config failed!")
-
-    def test_ipv6_tcp(self):
-        """
-        Test with flow type ipv6-tcp.
-        """
-        flag = 1
-
-        # test with different rss queues
-        for queue in testQueues:
-            self.pmdout.start_testpmd(
-                "Default", "  --portmask=0x1 --rxq=%d --txq=%d" % (queue, queue))
-
-            self.dut.send_expect("set verbose 8", "testpmd> ")
-            self.dut.send_expect("set fwd rxonly", "testpmd> ")
-
-            self.dut.send_expect("port stop all", "testpmd> ")
-            self.dut.send_expect(
-                "set_hash_global_config  0 toeplitz ipv6-tcp enable", "testpmd> ")
-            self.dut.send_expect("port start all", "testpmd> ")
-            res = self.pmdout.wait_link_status_up("all")
-            self.verify(res is True, "link is donw")
-
-            self.dut.send_expect(
-                "port config all rss tcp", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-tcp")
-
-            # set hash input set to "none" by testpmd on dut
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp none select", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-tcp")
-
-            # set hash input set by testpmd on dut, enable src-ipv6 & dst-ipv6
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp src-ipv6 add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp dst-ipv6 add", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-tcp")
-
-            # set hash input set by testpmd on dut, enable src-ipv6, dst-ipv6, tcp-src-port, tcp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp tcp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp tcp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-tcp")
-
-            # set hash input set by testpmd on dut, enable tcp-src-port, tcp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp none select", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp tcp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-tcp tcp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-tcp")
-
-            self.dut.send_expect("quit", "# ", 30)
-
-        self.result_table_print()
-        result_rows = self.result_table_getrows()
-        self.verify(len(result_rows) > 1, "There is no data in the table, testcase failed!")
-
-        # check the results
-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[3][1])or(result_rows[1][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[3][1])or(result_rows[2][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[5][1])or(result_rows[1][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[5][1])or(result_rows[2][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[3][1] == result_rows[5][1])and(result_rows[3][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] != result_rows[4][1])or(result_rows[1][3] != result_rows[4][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are different, rss_granularity_config failed!")
-
-    def test_ipv6_udp(self):
-        """
-        Test with flow type ipv6-udp.
-        """
-        flag = 1
-
-        # test with different rss queues
-        for queue in testQueues:
-            self.pmdout.start_testpmd(
-                "Default", "  --portmask=0x1 --rxq=%d --txq=%d" % (queue, queue))
-
-            self.dut.send_expect("set verbose 8", "testpmd> ")
-            self.dut.send_expect("set fwd rxonly", "testpmd> ")
-
-            self.dut.send_expect("port stop all", "testpmd> ")
-            self.dut.send_expect(
-                "set_hash_global_config  0 toeplitz ipv6-udp enable", "testpmd> ")
-            self.dut.send_expect("port start all", "testpmd> ")
-            res = self.pmdout.wait_link_status_up("all")
-            self.verify(res is True, "link is donw")
-
-            self.dut.send_expect(
-                "port config all rss udp", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-udp")
-
-            # set hash input set to "none" by testpmd on dut
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp none select", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-udp")
-
-            # set hash input set by testpmd on dut, enable src-ipv6 & dst-ipv6
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp src-ipv6 add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp dst-ipv6 add", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-udp")
-
-            # set hash input set by testpmd on dut, enable src-ipv6, dst-ipv6, udp-src-port, udp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp udp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp udp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-udp")
-
-            # set hash input set by testpmd on dut, enable udp-src-port, udp-dst-port
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp none select", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp udp-src-port add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv6-udp udp-dst-port add", "testpmd> ")
-            self.send_packet(self.itf, "ipv6-udp")
-
-            self.dut.send_expect("quit", "# ", 30)
-
-        self.result_table_print()
-        result_rows = self.result_table_getrows()
-        self.verify(len(result_rows) > 1, "There is no data in the table, testcase failed!")
-
-        # check the results
-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[3][1])or(result_rows[1][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[3][1])or(result_rows[2][3] == result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[5][1])or(result_rows[1][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[2][1] == result_rows[5][1])or(result_rows[2][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[3][1] == result_rows[5][1])and(result_rows[3][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] != result_rows[4][1])or(result_rows[1][3] != result_rows[4][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are different, rss_granularity_config failed!")
-
-    def test_GRE_keys(self):
-        """
-        Test with 32-bit GRE keys and 24-bit GRE keys.
-        """
-        flag = 1
-
-        # test with different rss queues
-        for queue in testQueues:
-            self.pmdout.start_testpmd(
-                "Default", "  --portmask=0x1 --rxq=%d --txq=%d" % (queue, queue))
-
-            self.dut.send_expect("set verbose 8", "testpmd> ")
-            self.dut.send_expect("set fwd rxonly", "testpmd> ")
-
-            self.dut.send_expect("port stop all", "testpmd> ")
-            self.dut.send_expect(
-                "set_hash_global_config  0 toeplitz ipv4-other enable", "testpmd> ")
-            self.dut.send_expect("port start all", "testpmd> ")
-            res = self.pmdout.wait_link_status_up("all")
-            self.verify(res is True, "link is donw")
-
-            self.dut.send_expect(
-                "port config all rss all", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-other")
-
-            # set hash input set to "none" by testpmd on dut
-            self.dut.send_expect("set_hash_input_set 0 ipv4-other none select", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-other")
-
-            # set hash input set by testpmd on dut, enable src-ipv4 & dst-ipv4
-            self.dut.send_expect("set_hash_input_set 0 ipv4-other src-ipv4 add", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-other dst-ipv4 add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-other")
-
-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, gre-key-len 3
-            self.dut.send_expect("global_config 0 gre-key-len 3", "testpmd> ")
-            self.dut.send_expect("set_hash_input_set 0 ipv4-other gre-key add", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-other")
-
-            # set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, gre-key-len 4
-            self.dut.send_expect("global_config 0 gre-key-len 4", "testpmd> ")
-            self.send_packet(self.itf, "ipv4-other")
-
-            self.dut.send_expect("quit", "# ", 30)
-
-        self.result_table_print()
-        result_rows = self.result_table_getrows()
-        self.verify(len(result_rows) > 1, "There is no data in the table, testcase failed!")
-
-        # check the results
-        if ((result_rows[1][1] == result_rows[2][1])or(result_rows[1][3] == result_rows[2][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[1][1] != result_rows[3][1])or(result_rows[1][3] != result_rows[3][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are different, rss_granularity_config failed!")
-        elif ((result_rows[1][1] == result_rows[4][1])or(result_rows[1][3] == result_rows[4][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-        elif ((result_rows[4][1] == result_rows[5][1])or(result_rows[4][3] == result_rows[5][3])):
-            flag = 0
-            self.verify(flag, "The two hash values are the same, rss_granularity_config failed!")
-
-    def tear_down(self):
-        """
-        Run after each test case.
-        """
-        self.dut.kill_all()
-
-    def tear_down_all(self):
-        """
-        Run after each test suite.
-        """
-        pass
-
