From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 25005239 for ; Tue, 6 Nov 2018 12:13:01 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2018 03:13:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,471,1534834800"; d="scan'208";a="105680191" Received: from dts-maintain.sh.intel.com (HELO [10.67.119.110]) ([10.67.119.110]) by fmsmga001.fm.intel.com with ESMTP; 06 Nov 2018 03:13:00 -0800 To: Peng Yuan , dts@dpdk.org References: <1541486958-26636-1-git-send-email-yuan.peng@intel.com> From: Lijuan Tu Message-ID: <71ee07b3-9fcb-8c09-3653-d66228d2a3fb@intel.com> Date: Wed, 7 Nov 2018 03:40:54 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <1541486958-26636-1-git-send-email-yuan.peng@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Subject: Re: [dts] [PATCH v2] tests: change TestSuite_rss_to_rte_flow.py X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Nov 2018 11:13:02 -0000 Applied, thanks On 2018年11月06日 14:49, Peng Yuan wrote: > Added 'none' and 'all' to rss types in action list. > Added 'key' and 'key_len' to rss items in action list. > > Signed-off-by: Peng Yuan > > diff --git a/tests/TestSuite_rss_to_rte_flow.py b/tests/TestSuite_rss_to_rte_flow.py > index 2b2ac48..660ffab 100644 > --- a/tests/TestSuite_rss_to_rte_flow.py > +++ b/tests/TestSuite_rss_to_rte_flow.py > @@ -49,6 +49,7 @@ from project_dpdk import DPDKdut > from dut import Dut > from packet import Packet > > + > class TestRSS_to_Rteflow(TestCase): > > def set_up_all(self): > @@ -119,25 +120,34 @@ class TestRSS_to_Rteflow(TestCase): > self.verify(queue in rss_queue, "the packet doesn't enter the expected RSS queue.") > return queue > > - def send_packet(self, itf): > + def send_packet(self, ptype, itf): > """ > Sends packets. > """ > self.tester.scapy_foreground() > time.sleep(2) > - for i in range(64): > - packet = r'sendp([Ether(dst="%s", src=get_if_hwaddr("%s"))/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP(dport=%d, sport=%d)], iface="%s")' % ( > - self.pf_mac, itf, i + 1, i + 2, i + 21, i + 22, itf) > + for i in range(128): > + if ptype == "ipv4-udp": > + packet = r'sendp([Ether(dst="%s", src=get_if_hwaddr("%s"))/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP(dport=%d, sport=%d)], iface="%s")' % ( > + self.pf_mac, itf, i + 1, i + 2, i + 21, i + 22, itf) > + elif ptype == "ipv4-other": > + packet = r'sendp([Ether(dst="%s", src=get_if_hwaddr("%s"))/IP(src="192.168.0.%d", dst="192.168.0.%d")], iface="%s")' % ( > + self.pf_mac, itf, i + 1, i + 2, itf) > self.tester.scapy_append(packet) > self.tester.scapy_execute() > time.sleep(2) > > - def check_packet_queue(self, out): > + def check_packet_queue(self, queue, out): > """ > get the queue which packet enter. > """ > - self.verify("Queue= 0" in out and "Queue= 1" in out and "Queue= 2" in out and "Queue= 3" in out, > - "there is some queues doesn't work") > + time.sleep(2) > + if queue == "all": > + self.verify("Queue= 0" in out and "Queue= 1" in out and "Queue= 2" in out and "Queue= 3" in out, > + "There is some queues doesn't work.") > + elif queue == "0": > + self.verify("Queue= 0" in out and "Queue= 1" not in out and "Queue= 2" not in out and "Queue= 3" not in out, > + "RSS is enabled.") > lines = out.split("\r\n") > reta_line = {} > queue_flag = 0 > @@ -160,11 +170,11 @@ class TestRSS_to_Rteflow(TestCase): > m = scanner.search(line) > packet_rec = m.group(1) > > - self.verify(packet_sumnum == int(packet_rec) == 64, "There are some packets lost.") > + self.verify(packet_sumnum == int(packet_rec) == 128, "There are some packets lost.") > > - def test_enable_rss_rule(self): > + def test_disable_enable_rss(self): > """ > - Enable RSS. > + Disable and enable RSS. > """ > self.pmdout.start_testpmd("%s" % self.cores, "--rxq=4 --txq=4 --port-topology=chained") > self.dut.send_expect("set fwd rxonly", "testpmd> ", 120) > @@ -172,14 +182,91 @@ class TestRSS_to_Rteflow(TestCase): > self.dut.send_expect("start", "testpmd> ", 120) > time.sleep(2) > > - # Create a rss queue rule > + # Show port default RSS fuctions > + if (self.nic in ["fortville_eagle", "fortville_spirit", > + "fortville_spirit_single", "fortpark_TLV"]): > + self.dut.send_expect( > + "show port 0 rss-hash", "ipv4-frag ipv4-other ipv6-frag ipv6-other ip") > + else: > + self.dut.send_expect( > + "show port 0 rss-hash", "ipv4 ipv6 ipv6-ex ip") > + self.send_packet("ipv4-other", self.tester_itf) > + out = self.dut.send_expect("stop", "testpmd> ", 120) > + self.check_packet_queue("all", out) > + self.dut.send_expect("start", "testpmd> ", 120) > + > + # Disable RSS hash function > self.dut.send_expect( > - "flow create 0 ingress pattern end actions rss types ipv4-udp end / end", "created") > + "flow create 0 ingress pattern end actions rss types none end / end", "created") > + self.dut.send_expect( > + "show port 0 rss-hash", "RSS disabled") > + # send the packets and verify the results > + self.send_packet("ipv4-other", self.tester_itf) > + out = self.dut.send_expect("stop", "testpmd> ", 120) > + self.check_packet_queue("0", out) > + self.dut.send_expect("start", "testpmd> ", 120) > + > + # Enable RSS hash function all > + self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types all end / end", "created") > + if (self.nic in ["fortville_eagle", "fortville_spirit", > + "fortville_spirit_single", "fortpark_TLV"]): > + self.dut.send_expect( > + "show port 0 rss-hash", "all ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l2-payload ip udp tcp sctp") > + else: > + self.dut.send_expect( > + "show port 0 rss-hash", "all ipv4 ipv4-tcp ipv4-udp ipv6 ipv6-tcp ipv6-udp ipv6-ex ipv6-tcp-ex ipv6-udp-ex ip udp tcp") > # send the packets and verify the results > - self.send_packet(self.tester_itf) > + self.send_packet("ipv4-other", self.tester_itf) > out = self.dut.send_expect("stop", "testpmd> ", 120) > + self.check_packet_queue("all", out) > + > + def test_enable_ipv4_udp_rss(self): > + """ > + Enable IPv4-UDP RSS. > + """ > + self.pmdout.start_testpmd("%s" % self.cores, "--rxq=4 --txq=4 --port-topology=chained") > + self.dut.send_expect("set fwd rxonly", "testpmd> ", 120) > + self.dut.send_expect("set verbose 1", "testpmd> ", 120) > + self.dut.send_expect("start", "testpmd> ", 120) > time.sleep(2) > - self.check_packet_queue(out) > + > + # Show port default RSS fuctions > + if (self.nic in ["fortville_eagle", "fortville_spirit", > + "fortville_spirit_single", "fortpark_TLV"]): > + self.dut.send_expect( > + "show port 0 rss-hash", "ipv4-frag ipv4-other ipv6-frag ipv6-other ip") > + else: > + self.dut.send_expect( > + "show port 0 rss-hash", "ipv4 ipv6 ipv6-ex ip") > + self.send_packet("ipv4-other", self.tester_itf) > + out = self.dut.send_expect("stop", "testpmd> ", 120) > + self.check_packet_queue("all", out) > + self.dut.send_expect("start", "testpmd> ", 120) > + > + self.send_packet("ipv4-udp", self.tester_itf) > + out = self.dut.send_expect("stop", "testpmd> ", 120) > + if (self.nic in ["fortville_eagle", "fortville_spirit", > + "fortville_spirit_single", "fortpark_TLV"]): > + self.check_packet_queue("0", out) > + else: > + self.check_packet_queue("all", out) > + self.dut.send_expect("start", "testpmd> ", 120) > + > + # enable ipv4-udp rss function > + self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types ipv4-udp end / end", "created") > + self.dut.send_expect( > + "show port 0 rss-hash", "ipv4-udp udp") > + # send the packets and verify the results > + self.send_packet("ipv4-other", self.tester_itf) > + out = self.dut.send_expect("stop", "testpmd> ", 120) > + self.check_packet_queue("0", out) > + self.dut.send_expect("start", "testpmd> ", 120) > + > + self.send_packet("ipv4-udp", self.tester_itf) > + out = self.dut.send_expect("stop", "testpmd> ", 120) > + self.check_packet_queue("all", out) > > def test_rss_queue_rule(self): > """ > @@ -223,6 +310,8 @@ class TestRSS_to_Rteflow(TestCase): > # There can't be more than one RSS queue rule existing. > self.dut.send_expect( > "flow create 0 ingress pattern end actions rss queues 3 end / end", "error") > + self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types ipv4-udp end queues 3 end / end", "error") > # Flush the rules and create a new RSS queue rule. > self.dut.send_expect("flow flush 0", "testpmd> ") > self.dut.send_expect( > @@ -301,6 +390,70 @@ class TestRSS_to_Rteflow(TestCase): > self.dut.send_expect( > "flow create 0 ingress pattern end actions rss types ipv6-other end queues 3 end / end", "error") > > + def test_set_key_keylen(self): > + """ > + Set key and key_len. > + """ > + # Only supported by i40e > + self.verify(self.nic in ["fortville_eagle", "fortville_spirit", > + "fortville_spirit_single", "fortpark_TLV"], "NIC Unsupported: " + str(self.nic)) > + pkt1 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.0')/UDP(sport=100, dport=200)/('X'*48)" % self.pf_mac > + pkt2 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.0')/UDP(sport=100, dport=201)/('X'*48)" % self.pf_mac > + pkt3 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.0')/UDP(sport=101, dport=201)/('X'*48)" % self.pf_mac > + pkt4 = "Ether(dst='%s')/IP(src='0.0.0.0',dst='4.0.0.1')/UDP(sport=101, dport=201)/('X'*48)" % self.pf_mac > + pkt5 = "Ether(dst='%s')/IP(src='0.0.0.1',dst='4.0.0.1')/UDP(sport=101, dport=201)/('X'*48)" % self.pf_mac > + > + self.pmdout.start_testpmd("%s" % self.cores, "--rxq=4 --txq=4 --port-topology=chained") > + self.dut.send_expect("set fwd rxonly", "testpmd> ", 120) > + self.dut.send_expect("set verbose 1", "testpmd> ", 120) > + self.dut.send_expect("start", "testpmd> ", 120) > + time.sleep(2) > + > + # Create a rss rule > + self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types ipv4-udp end / end", "created") > + out1 = self.dut.send_expect("show port 0 rss-hash key", "testpmd> ", 120) > + rss_queue = ["1"] > + self.send_and_check(pkt1, rss_queue) > + rss_queue = ["3"] > + self.send_and_check(pkt2, rss_queue) > + rss_queue = ["3"] > + self.send_and_check(pkt3, rss_queue) > + rss_queue = ["1"] > + self.send_and_check(pkt4, rss_queue) > + rss_queue = ["2"] > + self.send_and_check(pkt5, rss_queue) > + > + # Create a rss key rule > + self.dut.send_expect( > + "flow flush 0", "testpmd> ") > + self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types ipv4-udp end key 67108863 / end", "created") > + out2 = self.dut.send_expect("show port 0 rss-hash key", "testpmd> ", 120) > + rss_queue = ["3"] > + self.send_and_check(pkt1, rss_queue) > + rss_queue = ["3"] > + self.send_and_check(pkt2, rss_queue) > + rss_queue = ["0"] > + self.send_and_check(pkt3, rss_queue) > + rss_queue = ["1"] > + self.send_and_check(pkt4, rss_queue) > + rss_queue = ["0"] > + self.send_and_check(pkt5, rss_queue) > + > + self.verify(out1 != out2, "the key setting doesn't take effect.") > + > + # Create a rss key_len rule > + self.dut.send_expect( > + "flow flush 0", "testpmd> ") > + self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types ipv4-udp end key_len 3 / end", "created") > + # Create a rss key rule > + self.dut.send_expect( > + "flow flush 0", "testpmd> ") > + self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types ipv4-udp end key 67108863 key_len 3 / end", "created") > + > def test_disable_rss_in_commandline(self): > """ > Set RSS queue rule while disable RSS in command-line. > @@ -313,6 +466,19 @@ class TestRSS_to_Rteflow(TestCase): > > # Create a rss queue rule > self.dut.send_expect( > + "flow create 0 ingress pattern end actions rss types all end / end", "created") > + self.send_packet("ipv4-udp", self.tester_itf) > + out = self.dut.send_expect("stop", "testpmd> ", 120) > + self.check_packet_queue("all", out) > + self.dut.send_expect("quit", "# ") > + > + self.pmdout.start_testpmd("%s" % self.cores, "--rxq=8 --txq=8 --disable-rss --port-topology=chained") > + self.dut.send_expect("set fwd rxonly", "testpmd> ", 120) > + self.dut.send_expect("set verbose 1", "testpmd> ", 120) > + self.dut.send_expect("start", "testpmd> ", 120) > + time.sleep(2) > + # Create a rss queue rule > + self.dut.send_expect( > "flow create 0 ingress pattern end actions rss types ipv6-tcp ipv4-udp sctp ipv6-other end queues 5 6 7 end / end", "created") > # send the packets and verify the results > if (self.nic in ["fortville_eagle", "fortville_spirit",