From patchwork Mon Nov 15 14:56:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yan Xia X-Patchwork-Id: 104300 Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id ECB73A0C43; Mon, 15 Nov 2021 07:56:13 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E0F60410EA; Mon, 15 Nov 2021 07:56:13 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 9E2B740141 for ; Mon, 15 Nov 2021 07:56:11 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10168"; a="232110374" X-IronPort-AV: E=Sophos;i="5.87,235,1631602800"; d="scan'208";a="232110374" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2021 22:56:11 -0800 X-IronPort-AV: E=Sophos;i="5.87,235,1631602800"; d="scan'208";a="453920456" Received: from unknown (HELO dpdk.lan) ([10.240.183.77]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2021 22:56:09 -0800 From: Yan Xia To: dts@dpdk.org Cc: Yan Xia Subject: [dts][PATCH V1 2/3] tests/fortville_rss_granularity_config: delete this suite Date: Mon, 15 Nov 2021 14:56:27 +0000 Message-Id: <20211115145628.111987-3-yanx.xia@intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211115145628.111987-1-yanx.xia@intel.com> References: <20211115145628.111987-1-yanx.xia@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org delete fortville_rss_granularity_config dpdk commit-id: a12c188b85 net/mlx5: remove unused hash list operations --- ...tSuite_fortville_rss_granularity_config.py | 563 ------------------ 1 file changed, 563 deletions(-) delete mode 100644 tests/TestSuite_fortville_rss_granularity_config.py 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 -