From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 132EA1BBE for ; Wed, 8 Mar 2017 03:41:21 +0100 (CET) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP; 07 Mar 2017 18:41:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,261,1486454400"; d="scan'208";a="73485561" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga005.fm.intel.com with ESMTP; 07 Mar 2017 18:41:20 -0800 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 7 Mar 2017 18:41:19 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 7 Mar 2017 18:41:18 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.177]) by SHSMSX103.ccr.corp.intel.com ([10.239.4.69]) with mapi id 14.03.0248.002; Wed, 8 Mar 2017 10:40:52 +0800 From: "Xu, HuilongX" To: "dts@dpdk.org" , "Pei, Yulong" Thread-Topic: [PATCH V2 2/2] add fdir test code for new case Thread-Index: AQHSkjG4HA5TqIkRlkqGPkdcu2ZJCaGKRi2A Date: Wed, 8 Mar 2017 02:40:52 +0000 Message-ID: References: <1488334580-41742-1-git-send-email-huilongx.xu@intel.com> <1488334580-41742-2-git-send-email-huilongx.xu@intel.com> In-Reply-To: <1488334580-41742-2-git-send-email-huilongx.xu@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH V2 2/2] add fdir test code for new case 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: Wed, 08 Mar 2017 02:41:23 -0000 Hi yulong, Could you help me review this test case? Thanks a lot > -----Original Message----- > From: Xu, HuilongX > Sent: Wednesday, March 01, 2017 10:16 AM > To: dts@dpdk.org > Cc: Xu, HuilongX > Subject: [PATCH V2 2/2] add fdir test code for new case >=20 > update list: > 1. update send_and_verify function for support check designated queue 2. > add fdir_tos_proto_ttl, fdir_ipv6_tc, fdir_ivlan test case >=20 > Signed-off-by: xu,huilong > --- > tests/TestSuite_fdir.py | 348 > +++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 347 insertions(+), 1 deletion(-) >=20 > diff --git a/tests/TestSuite_fdir.py b/tests/TestSuite_fdir.py index > aa0ec52..ce220fa 100644 > --- a/tests/TestSuite_fdir.py > +++ b/tests/TestSuite_fdir.py > @@ -64,7 +64,7 @@ class TestFdir(TestCase, IxiaPacketGenerator): > # >=20 > ########################################################## > ################# >=20 > - def send_and_verify(self, condition, packet): > + def send_and_verify(self, condition, packet, queueid =3D -2): > """ > Send packages and verify behavior. > """ > @@ -89,6 +89,8 @@ class TestFdir(TestCase, IxiaPacketGenerator): > self.queue =3D 0 > else: > self.queue =3D -1 > + else: > + self.queue =3D queueid >=20 > result_scanner =3D r"port ([0-9]+)/queue ([0-9]+): received = ([0-9]+) > packets\s*src=3D[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A= - > F\d]{2} - dst=3D[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A= - > F\d]{2}" > scanner =3D re.compile(result_scanner, re.DOTALL) @@ -764,6 = +766,350 > @@ class TestFdir(TestCase, IxiaPacketGenerator): >=20 > self.dut.send_expect("quit", "# ", 30) >=20 > + def test_ipv4_tos_proto_ttl(self): > + """ > + Expand Flow Director for fortville to support ipv4 TOS, ipv4 PRO= TO, ipv4 > TTL > + """ > + if not self.nic in ["fortville_eagle", "fortville_spirit", > "fortville_spirit_single"]: > + self.verify(False, "This case only support fortville nic") > + self.dut.kill_all() > + self.dut.send_expect("./%s/app/testpmd -c %s -n 4 -- -i --portma= sk=3D%s > --disable-rss --rxq=3D4 --txq=3D4 --nb-cores=3D4 --nb-ports=3D1 --pkt-fil= ter- > mode=3Dperfect" % (self.target, self.coreMask, > utils.create_mask([self.dut_ports[0]])), "testpmd>", 120) > + self.dut.send_expect("set verbose 1", "testpmd>") > + self.dut.send_expect("set fwd rxonly", "testpmd>") > + > + self.fdir_set_rule() > + self.fdir_get_flexbytes() > + # fwd comand testing > + self.fdir_type =3D " " > + self.dut.send_expect("set_fdir_input_set %d ipv4-other none sele= ct" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv4-other src-ipv4 = add" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv4-other dst-ipv4 > + add" % self.dut_ports[0], "testpmd>") > + > + # test add and remove tso rule > + self.dut.send_expect("set_fdir_input_set %d ipv4-other ipv4-tos = add" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 255 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 8 proto 255 ttl 255 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 1) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D8, proto=3D255, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 2) > + > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 255 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 8 proto 255 ttl 255 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D8, proto=3D255, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 0) > + > + # test add and remove proto reul > + self.dut.send_expect("set_fdir_input_set %d ipv4-other ipv4-prot= o > add" % self.dut_ports[0], "testpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 253 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 254 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D253, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 1) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D254, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 2) > + > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 253 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 254 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D253, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D254, > ttl=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 0) > + > + # test add and remove ttl rule > + self.dut.send_expect("set_fdir_input_set %d ipv4-other ipv4-ttl = add" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 255 ttl 32 vlan 0 flexbytes (= %s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 255 ttl 64 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D32) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 1) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 2) > + > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 255 ttl 32 vlan 0 flexbytes (= %s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > other src 192.168.1.1 dst 192.168.1.2 \ > + tos 16 proto 255 ttl 64 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D32) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 0) > + > + def test_fdir_ipv6_tc(self): > + """ > + Expand Flow Director for fortville to support ipv6 TC, next-head= er, hop- > limits > + """ > + if not self.nic in ["fortville_eagle", "fortville_spirit", > "fortville_spirit_single"]: > + self.verify(False, "This case only support fortville nic") > + self.dut.kill_all() > + self.dut.send_expect("./%s/app/testpmd -c %s -n 4 -- -i --portma= sk=3D%s > --disable-rss --rxq=3D4 --txq=3D4 --nb-cores=3D4 --nb-ports=3D1 --pkt-fil= ter- > mode=3Dperfect" % (self.target, self.coreMask, > utils.create_mask([self.dut_ports[0]])), "testpmd>", 120) > + self.dut.send_expect("set verbose 1", "testpmd>") > + self.dut.send_expect("set fwd rxonly", "testpmd>") > + > + self.fdir_set_rule() > + self.fdir_get_flexbytes() > + # fwd comand testing > + self.fdir_type =3D " " > + self.dut.send_expect("set_fdir_input_set %d ipv6-other none sele= ct" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv6-other src-ipv6 = add" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv6-other dst-ipv6 > + add" % self.dut_ports[0], "testpmd>") > + > + # test add and remove ipv6 tc reul > + self.dut.send_expect("set_fdir_input_set %d ipv6-other ipv6-tc a= dd" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 255 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 8 proto 255 ttl 255 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D255, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 1) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D8, nh=3D255, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 2) > + > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 255 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 8 proto 255 ttl 255 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D255, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D8, nh=3D255, hlim=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 0) > + > + # test add and remove pv6-next-header reul > + self.dut.send_expect("set_fdir_input_set %d ipv6-other ipv6-next= - > header add" % self.dut_ports[0], "testpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 253 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 254 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D253, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 1) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D254, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 2) > + > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 253 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 254 ttl 255 vlan 0 flexbytes = (%s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D253, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D254, hlim=3D255) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 0) > + > + # test add and remove ipv6-hop-limits rule > + self.dut.send_expect("set_fdir_input_set %d ipv6-other ipv6-hop- > limits add" % self.dut_ports[0], "testpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 255 ttl 32 vlan 0 flexbytes (= %s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 255 ttl 64 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D255, hlim=3D32) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 1) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D255, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 2) > + > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 255 ttl 32 vlan 0 flexbytes (= %s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv6- > other src 2000::1 dst 2000::2 \ > + tos 16 proto 255 ttl 64 vlan 0 flexbytes (= %s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D255, hlim=3D32) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /IPv6(src=3D"2000::1", dst=3D"2000::2", tc= =3D16, nh=3D255, hlim=3D64) \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + def test_fdir_ivlan(self): > + """ > + Expand Flow Director for fortville to support ipv4 TOS, ipv4 PRO= TO, ipv4 > TTL > + """ > + if not self.nic in ["fortville_eagle", "fortville_spirit", > "fortville_spirit_single"]: > + self.verify(False, "This case only support fortville nic") > + self.dut.kill_all() > + self.dut.send_expect("./%s/app/testpmd -c %s -n 4 -- -i --portma= sk=3D%s > --disable-rss --rxq=3D4 --txq=3D4 --nb-cores=3D4 --nb-ports=3D1 --pkt-fil= ter- > mode=3Dperfect" % (self.target, self.coreMask, > utils.create_mask([self.dut_ports[0]])), "testpmd>", 120) > + self.dut.send_expect("set verbose 1", "testpmd>") > + self.dut.send_expect("set fwd rxonly", "testpmd>") > + > + self.fdir_set_rule() > + self.fdir_get_flexbytes() > + # fwd comand testing > + self.fdir_type =3D " " > + self.dut.send_expect("set_fdir_input_set %d ipv4-other none sele= ct" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv4-other src-ipv4 = add" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv4-other dst-ipv4 = add" % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("vlan set qinq on %d" % self.dut_ports[0], > "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv4-udp none select= " % > self.dut_ports[0], "testpmd>") > + self.dut.send_expect("set_fdir_input_set %d ipv4-udp ivlan add" > + % self.dut_ports[0], "testpmd>") > + > + > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 1 flexbytes (= %s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 15 flexbytes = (%s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 255 flexbytes= (%s) fwd pf queue 3 > fd_id 3" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP add flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 4095 flexbyte= s (%s) fwd pf queue > 4 fd_id 4" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D1) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 1) > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D15) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 2) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D255) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 3) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D4095) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 4) > + > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 1 flexbytes (= %s) fwd pf queue 1 > fd_id 1" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 15 flexbytes = (%s) fwd pf queue 2 > fd_id 2" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 255 flexbytes= (%s) fwd pf queue 3 > fd_id 3" > + % (self.dut_ports[0], self.flexbytes), "te= stpmd>") > + self.dut.send_expect("flow_director_filter %d mode IP del flow i= pv4- > udp src 192.168.1.1 1021 dst 192.168.1.2 1022 \ > + tos 16 proto 255 ttl 32 vlan 4095 flexbyte= s (%s) fwd pf queue > 4 fd_id 4" > + % (self.dut_ports[0], self.flexbytes), > + "testpmd>") > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D1) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 0) > + > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D15) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D255) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, sel= f.dut_rx_interface), > queueid =3D 0) > + self.send_and_verify(True, 'sendp([Ether(src=3Dget_if_hwaddr("%s= "), > dst=3D"00:1B:21:8E:B2:30") \ > + /Dot1Q(id=3D0x8100,vlan=3D16)/Dot1Q(id=3D0x= 8100,vlan=3D4095) \ > + /IP(src=3D"192.168.1.1", dst=3D"192.168.1.2= ", tos=3D16, proto=3D255, > ttl=3D255) \ > + /UDP(sport=3D"1021",dport=3D"1022") \ > + /Raw(load=3D"%s")], iface=3D"%s")' \ > + % (self.dut_rx_interface, self.payload, > + self.dut_rx_interface), queueid =3D 0) > + > + > + > def failed_test_fdir_flush(self): > """ > FDir flush in Fortville. > -- > 1.9.3