* [dts][PATCH V3 1/3] test_plans/fortville_rss_granularity_config: delete the test plan @ 2021-12-02 11:14 Yan Xia 2021-12-02 11:14 ` [dts][PATCH V3 2/3] test_plans/index: delete fortville_rss_granularity_config Yan Xia 2021-12-02 11:14 ` [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite Yan Xia 0 siblings, 2 replies; 5+ messages in thread From: Yan Xia @ 2021-12-02 11:14 UTC (permalink / raw) To: dts; +Cc: Yan Xia delete fortville_rss_granularity_config test plan dpdk commit id: 81db321da ethdev: remove legacy HASH filter type support Signed-off-by: Yan Xia <yanx.xia@intel.com> --- ...ville_rss_granularity_config_test_plan.rst | 321 ------------------ 1 file changed, 321 deletions(-) delete mode 100644 test_plans/fortville_rss_granularity_config_test_plan.rst diff --git a/test_plans/fortville_rss_granularity_config_test_plan.rst b/test_plans/fortville_rss_granularity_config_test_plan.rst deleted file mode 100644 index 18592b1e..00000000 --- a/test_plans/fortville_rss_granularity_config_test_plan.rst +++ /dev/null @@ -1,321 +0,0 @@ -.. Copyright (c) <2015-2017>, Intel Corporation - 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. - -=================================================================== -Fortville Granularity Configuration of RSS and 32-bit GRE key Tests -=================================================================== - -Description -=========== - -This document provides test plan for testing the function of Fortville: - -1. 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. 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 - - -Prerequisites -------------- - -1. Hardware: - - * 1x Fortville_eagle NIC (4x 10G) - * 1x Fortville_spirit NIC (2x 40G) - * 2x Fortville_spirit_single NIC (1x 40G) - -2. Software: - - * dpdk: http://dpdk.org/git/dpdk - * scapy: http://www.secdev.org/projects/scapy/ - -3. Bind one port to DPDK driver:: - - ./usertools/dpdk-devbind.py -b igb_uio 05:00.0 - - Suppose the MAC address of the port is "00:00:00:00:01:00". - - -Test Case 1: test with flow type ipv4-tcp -========================================= - -1. config testpmd on DUT - - 1. set up testpmd with Fortville NICs:: - - ./testpmd -c 0x1ffff -n 4 -- -i --coremask=0x1fffe --portmask=0x1 --rxq=16 --txq=16 --tx-offloads=0x8fff - - 2. Reta Configuration(optional, if not set, will use default):: - - testpmd> port config 0 rss reta (hash_index,queue_id) - - 3. PMD fwd only receive the packets:: - - testpmd> set fwd rxonly - - 4. rss received package type configuration:: - - testpmd> port config all rss tcp - - 5. set hash function:: - - testpmd>set_hash_global_config 0 toeplitz ipv4-tcp enable - - 6. verbose configuration:: - - testpmd> set verbose 8 - - 7. start packet receive:: - - testpmd> start - -2. using scapy to send packets with ipv4-tcp on tester:: - - sendp([Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.1", dst="192.168.0.2")/TCP(sport=1024,dport=1025)], iface=tester_itf) - - then got hash value and queue value that output from the testpmd on DUT. - -3. set hash input set to "none" by testpmd on dut:: - - testpmd> set_hash_input_set 0 ipv4-tcp none select - - send packet as step 2, got hash value and queue value that output from the - testpmd on DUT, the values should be different from the values in step 2. - -4. set hash input set by testpmd on dut, enable src-ipv4 & dst-ipv4:: - - testpmd> set_hash_input_set 0 ipv4-tcp src-ipv4 add - testpmd> set_hash_input_set 0 ipv4-tcp dst-ipv4 add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - different from the values in step 2. - -5. set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, tcp-src-port, tcp-dst-port:: - - testpmd> set_hash_input_set 0 ipv4-tcp tcp-src-port add - testpmd> set_hash_input_set 0 ipv4-tcp tcp-dst-port add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values - should be different with the values from step 3 & step 4, should be same as step 2. - -6. set hash input set by testpmd on dut, enable tcp-src-port, tcp-dst-port:: - - testpmd> set_hash_input_set 0 ipv4-tcp none select - testpmd> set_hash_input_set 0 ipv4-tcp tcp-src-port add - testpmd> set_hash_input_set 0 ipv4-tcp tcp-dst-port add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - should be different with the values from step2 & step 3 & step 4 & step 5. - - So it can be approved that with flow type ipv4-tcp, rss hash can be calculated by only included IPv4 fields - or only included TCP fields or both IPv4+TCP fields. - - -Test Case 2: test with flow type ipv4-udp -========================================= - -1. config testpmd on DUT - - 1. set up testpmd with Fortville NICs:: - - ./testpmd -c 0x1ffff -n 4 -- -i --coremask=0x1fffe --portmask=0x1 --rxq=16 --txq=16 --tx-offloads=0x8fff - - 2. Reta Configuration(optional, if not set, will use default):: - - testpmd> port config 0 rss reta (hash_index,queue_id) - - 3. PMD fwd only receive the packets:: - - testpmd> set fwd rxonly - - 4. rss received package type configuration:: - - testpmd> port config all rss udp - - 5. set hash function:: - - testpmd>set_hash_global_config 0 toeplitz ipv4-udp enable - - 6. verbose configuration:: - - testpmd> set verbose 8 - - 7. start packet receive:: - - testpmd> start - -2. using scapy to send packets with ipv4-udp on tester:: - - - sendp([Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=1024,dport=1025)], iface=tester_itf)) - - then got hash value and queue value that output from the testpmd on DUT. - -3. set hash input set to "none" by testpmd on dut:: - - testpmd> set_hash_input_set 0 ipv4-udp none select - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - different from the values in step 2. - -4. set hash input set by testpmd on dut, enable src-ipv4 and dst-ipv4:: - - testpmd> set_hash_input_set 0 ipv4-udp src-ipv4 add - testpmd> set_hash_input_set 0 ipv4-udp dst-ipv4 add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - different from the values in step 2 & step 3. - -5. set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4, udp-src-port, udp-dst-port:: - - testpmd> set_hash_input_set 0 ipv4-udp udp-src-port add - testpmd> set_hash_input_set 0 ipv4-udp udp-dst-port add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - should be different with the values from step 3 & step 4, should be same as step 2. - -6. set hash input set by testpmd on dut, enable udp-src-port, udp-dst-port:: - - testpmd> set_hash_input_set 0 ipv4-udp none select - testpmd> set_hash_input_set 0 ipv4-udp udp-src-port add - testpmd> set_hash_input_set 0 ipv4-udp udp-dst-port add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - should be different with the values from step2 & step 3 & step 4 & step 5. - - So it can be approved that with flow type ipv4-udp, rss hash can be calculated by only included IPv4 fields - or only included UDP fields or both IPv4+UDP fields. - -Test Case 3: test with flow type ipv6-tcp -========================================= - -test method is same as Test Case 1, but it need change all ipv4 to ipv6, -and using scapy to send packets with ipv6-tcp on tester:: - - sendp([Ether(dst="00:00:00:00:01:00")/IPv6(src="3ffe:2501:200:1fff::1", dst="3ffe:2501:200:3::2")/TCP(sport=1024,dport=1025)], iface=tester_itf) - -and the test result should be same as Test Case 1. - - -Test Case 4: test with flow type ipv6-udp -========================================= - -test method is same as Test Case 2, but it need change all ipv4 to ipv6, -and using scapy to send packets with ipv6-udp on tester:: - - sendp([Ether(dst="00:00:00:00:01:00")/IPv6(src="3ffe:2501:200:1fff::1", dst="3ffe:2501:200:3::2")/UDP(sport=1024,dport=1025)], iface=tester_itf) - -and the test result should be same as Test Case 2. - - -Test Case 6: 32-bit GRE keys and 24-bit GRE keys test -===================================================== - -1. config testpmd on DUT - - 1. set up testpmd with Fortville NICs:: - - ./testpmd -c 0x1ffff -n 4 -- -i --coremask=0x1fffe --portmask=0x1 --rxq=16 --txq=16 --tx-offloads=0x8fff - - 2. Reta Configuration(optional, if not set, will use default):: - - testpmd> port config 0 rss reta (hash_index,queue_id) - - 3. PMD fwd only receive the packets:: - - testpmd> set fwd rxonly - - 4. rss received package type configuration:: - - testpmd> port config all rss all - - 5. set hash function:: - - testpmd>set_hash_global_config 0 toeplitz ipv4-other enable - - 6. verbose configuration:: - - testpmd> set verbose 8 - - 7. start packet receive:: - - testpmd> start - -2. using scapy to send packets with GRE header on tester:: - - sendp([Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.1",dst="192.168.0.2",proto=47)/GRE(key_present=1,proto=2048,key=67108863)/IP()], iface=tester_itf) - - then got hash value and queue value that output from the testpmd on DUT. - -3. set hash input set to "none" by testpmd on dut:: - - testpmd> set_hash_input_set 0 ipv4-other none select - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the value should be - different with the values in step 2. - -4. set hash input set by testpmd on dut, enable src-ipv4, dst-ipv4:: - - testpmd> set_hash_input_set 0 ipv4-other src-ipv4 add - testpmd> set_hash_input_set 0 ipv4-other dst-ipv4 add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the value should be - same with the values in step 2. - -5. set hash input set and gre-key-len=3 by testpmd on dut, enable gre-key:: - - testpmd> global_config 0 gre-key-len 3 - testpmd> set_hash_input_set 0 ipv4-other gre-key add - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - different with the values in step 2 & step3. - -6. set gre-key-len=4 by testpmd on dut, enable gre-key:: - - testpmd> global_config 0 gre-key-len 4 - - send packet as step 2, got hash value and queue value that output from the testpmd on DUT, the values should be - different with the values in step 2 & step3 & step 5. - - So with gre-key-len=3 (24bit gre key) or gre-key-len=4 (32bit gre key), different rss hash value and queue value - can be got, it can be proved that 32bit & 24bit gre key are supported by Fortville. -- 2.33.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [dts][PATCH V3 2/3] test_plans/index: delete fortville_rss_granularity_config 2021-12-02 11:14 [dts][PATCH V3 1/3] test_plans/fortville_rss_granularity_config: delete the test plan Yan Xia @ 2021-12-02 11:14 ` Yan Xia 2021-12-02 11:14 ` [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite Yan Xia 1 sibling, 0 replies; 5+ messages in thread From: Yan Xia @ 2021-12-02 11:14 UTC (permalink / raw) To: dts; +Cc: Yan Xia delete fortville_rss_granularity_config dpdk commit id: 81db321da ethdev: remove legacy HASH filter type support Signed-off-by: Yan Xia <yanx.xia@intel.com> --- test_plans/index.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/test_plans/index.rst b/test_plans/index.rst index 0c2a94d0..ab5a1d31 100644 --- a/test_plans/index.rst +++ b/test_plans/index.rst @@ -87,7 +87,6 @@ The following are the test plans for the DPDK DTS automated test system. firmware_version_test_plan floating_veb_test_plan flow_classify_softnic_test_plan - fortville_rss_granularity_config_test_plan fortville_rss_input_test_plan generic_flow_api_test_plan hotplug_mp_test_plan -- 2.33.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite 2021-12-02 11:14 [dts][PATCH V3 1/3] test_plans/fortville_rss_granularity_config: delete the test plan Yan Xia 2021-12-02 11:14 ` [dts][PATCH V3 2/3] test_plans/index: delete fortville_rss_granularity_config Yan Xia @ 2021-12-02 11:14 ` Yan Xia 2021-12-06 2:25 ` Peng, Yuan 1 sibling, 1 reply; 5+ messages in thread From: Yan Xia @ 2021-12-02 11:14 UTC (permalink / raw) To: dts; +Cc: Yan Xia delete fortville_rss_granularity_config testsuite dpdk commit id: 81db321da ethdev: remove legacy HASH filter type support Signed-off-by: Yan Xia <yanx.xia@intel.com> --- ...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 - -- 2.33.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite 2021-12-02 11:14 ` [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite Yan Xia @ 2021-12-06 2:25 ` Peng, Yuan 2021-12-16 10:56 ` Tu, Lijuan 0 siblings, 1 reply; 5+ messages in thread From: Peng, Yuan @ 2021-12-06 2:25 UTC (permalink / raw) To: Xia, YanX, dts Acked-by Peng, Yuan <yuan.peng@intel.com> -----Original Message----- From: Yan Xia <yanx.xia@intel.com> Sent: Thursday, December 2, 2021 7:15 PM To: dts@dpdk.org Cc: Xia, YanX <yanx.xia@intel.com> Subject: [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite delete fortville_rss_granularity_config testsuite dpdk commit id: 81db321da ethdev: remove legacy HASH filter type support Signed-off-by: Yan Xia <yanx.xia@intel.com> --- ...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 - -- 2.33.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite 2021-12-06 2:25 ` Peng, Yuan @ 2021-12-16 10:56 ` Tu, Lijuan 0 siblings, 0 replies; 5+ messages in thread From: Tu, Lijuan @ 2021-12-16 10:56 UTC (permalink / raw) To: Peng, Yuan, Xia, YanX, dts > -----Original Message----- > From: Peng, Yuan <yuan.peng@intel.com> > Sent: 2021年12月6日 10:26 > To: Xia, YanX <yanx.xia@intel.com>; dts@dpdk.org > Subject: RE: [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete > the suite > > Acked-by Peng, Yuan <yuan.peng@intel.com> > > -----Original Message----- > From: Yan Xia <yanx.xia@intel.com> > Sent: Thursday, December 2, 2021 7:15 PM > To: dts@dpdk.org > Cc: Xia, YanX <yanx.xia@intel.com> > Subject: [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the > suite > > delete fortville_rss_granularity_config testsuite dpdk commit id: 81db321da > ethdev: remove legacy HASH filter type support > > Signed-off-by: Yan Xia <yanx.xia@intel.com> Series applied ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-12-16 10:56 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-12-02 11:14 [dts][PATCH V3 1/3] test_plans/fortville_rss_granularity_config: delete the test plan Yan Xia 2021-12-02 11:14 ` [dts][PATCH V3 2/3] test_plans/index: delete fortville_rss_granularity_config Yan Xia 2021-12-02 11:14 ` [dts][PATCH V3 3/3] tests/fortville_rss_granularity_config: delete the suite Yan Xia 2021-12-06 2:25 ` Peng, Yuan 2021-12-16 10:56 ` Tu, Lijuan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).