From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 3FED82BD6 for ; Thu, 5 May 2016 04:35:32 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 04 May 2016 19:35:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,580,1455004800"; d="scan'208";a="946544761" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga001.jf.intel.com with ESMTP; 04 May 2016 19:35:30 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.248.2; Wed, 4 May 2016 19:35:30 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.58]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.175]) with mapi id 14.03.0248.002; Thu, 5 May 2016 10:35:28 +0800 From: "Liu, Yong" To: "Mo, YufengX" , "dts@dpdk.org" CC: "Mo, YufengX" Thread-Topic: [dts] [PATCH V1]userspace_ethtool: update test script and test plan Thread-Index: AQHRpnUz3Ko8NxjdKEu/LN+jUtQtEZ+pFyuAgACJWmA= Date: Thu, 5 May 2016 02:35:27 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E14F1B59E@SHSMSX103.ccr.corp.intel.com> References: <1462415003-3752-1-git-send-email-yufengx.mo@intel.com> <1462415003-3752-2-git-send-email-yufengx.mo@intel.com> In-Reply-To: <1462415003-3752-2-git-send-email-yufengx.mo@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzZjMDE4YmEtMzQ1My00Y2UzLTkzZjYtMzg3MDAxZjFkMmMwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6Im9XSTBnY21wZ3JYaVVjN0gwcFZFeG14YmFGcUIxYzVWaEtZOE9QOUJQU0U9In0= x-ctpclassification: CTP_IC 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 V1]userspace_ethtool: update test script and test plan 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: Thu, 05 May 2016 02:35:33 -0000 Yufen, please check comments in previous email. > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Yufen Mo > Sent: Wednesday, May 04, 2016 7:23 PM > To: dts@dpdk.org > Cc: Mo, YufengX > Subject: [dts] [PATCH V1]userspace_ethtool: update test script and test > plan >=20 > From: yufengmx >=20 > change vlan packet check number when doing vlan testing.Add process to > resize linux ethtool eeprom dump > data content as the size dump by dpdk ethtool. Ignore auto test link > connect status on FVL. update related > test cases' test plan, add testing configuration and requirements. >=20 > Signed-off-by: yufengmx > --- > test_plans/userspace_ethtool_test_plan.rst | 167 ++++++++++++++++++-----= - > ----- > tests/TestSuite_userspace_ethtool.py | 89 +++++++++------ > 2 files changed, 160 insertions(+), 96 deletions(-) >=20 > diff --git a/test_plans/userspace_ethtool_test_plan.rst > b/test_plans/userspace_ethtool_test_plan.rst > index 5ee79a1..83e7fac 100644 > --- a/test_plans/userspace_ethtool_test_plan.rst > +++ b/test_plans/userspace_ethtool_test_plan.rst > @@ -34,31 +34,42 @@ > Userspace Ethtool > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > -This feature is designed to provide one rte_ethtool shim layer based on > -rte_ethdev API. The implementation also along with a command prompt > driven > -demonstration application. It only contained of 18 popular used Ethtool > and > -Netdevice ops as described in rte_ethtool.h. > +This feature is designed to provide one rte_ethtool shim layer based on > +rte_ethdev API. The Ethtool sample application shows an implementation > +of an ethtool-like API and provides a console environment that allows > +its use to query and change Ethernet card parameters. The Ethtool sample > +is based upon a simple L2 frame reflector. >=20 > Prerequisites > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > - > +notice: On FVL, test case "test_dump_driver_info" need a physical link > disconnect, > +this case must do manually at this condition. > + > Assume port 0 and 1 are connected to the traffic generator, to run the > test > -application in linuxapp environment with 4 lcores, 2 ports. > +application in linux app environment with 4 lcores, 2 ports. >=20 > ethtool -c f -n 4 >=20 > -The sample should be validated on Forville, Niantic and i350 Nics. > +The sample should be validated on Forville, Niantic and i350 Nics. > + > +other requirements: > +*. igxbe driver (version >=3D 4.3.13). > +*. ethtool of linux is the default reference tool. > +*. md5sum is a tool to do dumped bin format file comparison. > +*. insert two nic cards on No.0 socket >=20 > -Test Case: Dump driver infor test > +Test Case: Dump driver information test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > -User "drvinfo" command to dump driver information and then check that > dumped > -information was exactly the same as fact. > +User "drvinfo" command to dump driver information and then check that > +dumped information, which are dumped separately by dpdk's ethtool and > +linux's ethtool, were exactly the same. >=20 > EthApp> drvinfo > Port 0 driver: rte_ixgbe_pmd (ver: RTE 2.1.0) > Port 1 driver: rte_ixgbe_pmd (ver: RTE 2.1.0) >=20 > Use "link" command to dump all ports link status. > +Notice:: On FVL, link detect need a physical link disconnect. > EthApp> link > Port 0: Up > Port 1: Up > @@ -68,7 +79,7 @@ Change tester port link status to down and re-check lin= k > status. > Port 0: Down > Port 1: Down >=20 > -Send few packets to l2fwd and check that command "portstats" dumped > correct > +Send a few packets to l2fwd and check that command "portstats" dumps > correct > port statistics. > EthApp> portstats 0 > Port 0 stats > @@ -78,34 +89,38 @@ port statistics. > Test Case: Retrieve eeprom test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > Unbind ports from igb_uio and bind them to default driver. > -Dump eeprom binary by ethtool. > +Dump eeprom binary by linux's ethtool and dpdk's ethtool separately. >=20 > ethtool --eeprom-dump INTF_0 raw on > ethtool_eeprom_0.bin > ethtool --eeprom-dump INTF_1 raw on > ethtool_eeprom_1.bin >=20 > -Retrieve eeprom on specified port and compare csum with the file dumped > by ethtool. > +Retrieve eeprom on specified port using dpdk's ethtool and > +compare csum with the file dumped by ethtool. >=20 > EthApp> eeprom 0 eeprom_0.bin > EthApp> eeprom 1 eeprom_1.bin >=20 > -md5sum ethtool_eeprom_0.bin > -md5sum eeprom_0.bin > eeprom_0.bin > - > -diff ethtool_eeprom_0.hex eeprom_0.hex > + md5sum ethtool_eeprom_0.bin > + md5sum eeprom_0.bin > + > +compare md5sum value of the two bin files. >=20 > Test Case: Retrieve register test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > -Retrieve register on specified port, do not known how to check the binar= y? > +Retrieve register on specified port. >=20 > EthApp> regs 0 reg_0.bin > EthApp> regs 1 reg_1.bin >=20 > Unbind ports from igb_uio and bind them to default driver. > + > + dpdk/tools/dpdk_nic_bind.py --bind=3Dixgbe x:xx.x > + > Check that dumped register information is correct. >=20 > -ethtool -d INTF_0 raw on file reg_0.bin > -ethtool -d INTF_1 raw on file reg_0.bin > - > +ethtool -d INTF_0 raw off file reg_0.bin > +ethtool -d INTF_1 raw off file reg_0.bin > + > Test Case: Ring param test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D > Dump port 0 ring size by ringparam command and check numbers are correct= . > @@ -126,52 +141,30 @@ Port 0 ring paramaeters > Rx Pending: 256 (256 max) > Tx Pending: 2048 (4096 max) >=20 > -Test Case: Pause test > -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > -Enable port 0 Rx pause frame and then create two packets flows in IXIA > port. > -One flow is 100000 normally packet and the second flow is pause frame. > -Check that port 0 Rx speed dropped. For example, niantic will drop from > -14.8Mpps to 7.49Mpps. > - > - EthApp> pause 0 rx > - > -Use "parse" command to print port pause status, check that port 0 rx has > been > -paused. > - EthApp> pause 0 > - Port 0: Rx Paused > - > -Unpause port 0 rx and then restart port0, check that packets Rx speed is > normal. > - EthApp> pause 0 none > - EthApp> > +send packet by scapy on Tester >=20 > -Pause port 0 TX pause frame. > - EthApp> pause 0 tx > - > -Use "parse" command to print port pause status, check that port 1 tx has > been > -paused. > - EthApp> pause 0 > - Port 0: Tx Paused > - > -Enable flow control in IXIA port and send packets from IXIA with line > rate. > -Check that IXIA receive flow control packets and IXIA transmit speed > dropped. > -IXIA Rx packets more then Tx packets to check that received pause frame. > - > -Unpause port 0 tx and restart port 0. Then send packets to port0, check > that > -packets forwarded normally from port 0. > - EthApp> pause 0 none > - EthApp> stop 0 > - EthApp> open 0 > +check tx/rx packets > +EthApp> portstats 0 >=20 > Test Case: Vlan test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +enable vlan filter flag in main.c of dpdk's ethtool > + > + sed -i -e '/cfg_port.txmode.mq_mode =3D > ETH_MQ_TX_NONE;$/a\\cfg_port.rxmode.hw_vlan_filter=3D1;' > examples/ethtool/ethtool-app/main.c > + > +re-compile examples/ethtool > + > + make -C examples/ethtool > + > Add vlan 0 to port 0 and vlan 1 to port1, send packet without vlan to > port0,1 > Verify port0 and port1 recevied vlan packets > + > EthApp> vlan 0 add 0 > VLAN vid 0 added >=20 > EthApp> vlan 1 add 1 > VLAN vid 1 added > - > + > Send packet with vlan0,1 to port0&1. Verify port0 and port1 received vla= n > packets >=20 > @@ -189,7 +182,11 @@ port0 and port1 can not receive vlan packet. > Test Case: Mac address test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > Use "macaddr" command to dump port mac address and then check that dumpe= d > -information is exactly the same as fact. > +information is exactly the same as ifconfig do. > + > +set a new mac address by dpdk's ethtool, send and sniff packet and check > packet > +forwared status > + > EthApp> macaddr 0 > Port 0 MAC Address: XX:XX:XX:XX:XX:XX > EthApp> macaddr 1 > @@ -211,8 +208,8 @@ Use "macaddr" command to change port mac address and > then check mac changed. > MAC address changed > EthApp> macaddr 0 > Port 0 MAC Address: 00:10:00:00:00:00 > - > -Verified mac adress in forwarded packets has been changed. > + > +Verified mac adress in forwarded packets has been changed. >=20 > Test Case: Port config test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > @@ -224,18 +221,58 @@ Use "open" command to re-enable port0. Send packets > to port0 and verify > packets received and forwarded. > EthApp> open 0 >=20 > - > Test case: Mtu config test > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D > -Use "mtu" command to change port 0 mtu from default 1518 to 1000. > +Use "mtu" command to change port 0 mtu from default 1519 to 9000 on > Tester's port. >=20 > -Send packet size over 1000 and check that packet will be detected as > error. > +Send packet size over 1519 and check that packet will be detected as > error. >=20 > - EthApp> mtu 0 1000 > + EthApp> mtu 0 1519 > Port 0 stats > In: 0 (0 bytes) > Out: 0 (0 bytes) > Err: 1 >=20 > -Change mtu to default value and send packet size over 1000 and check tha= t > -packet will normally received. > +Change mtu to default value and send packet size over 1519 and check tha= t > +packet will normally be received. > + > +Test Case: Pause tx/rx test(performance test) > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Enable port 0 Rx pause frame and then create two packets flows on IXIA > port. > +One flow is 100000 normally packet and the second flow is pause frame. > +Check that dut's port 0 Rx speed dropped status. For example, niantic > will drop > +from 14.8Mpps to 7.49Mpps. > + > + EthApp> pause 0 rx > + > +Use "pause" command to print dut's port pause status, check that dut's > port 0 rx > +has been paused. > + > + EthApp> pause 0 > + Port 0: Rx Paused > + > +Release pause status of port 0 rx and then restart port 0, check that > packets Rx > +speed is normal. > + EthApp> pause 0 none > + EthApp> > + > +Pause port 0 TX pause frame. > + EthApp> pause 0 tx > + > +Use "pause" command to print port pause status, check that port 0 tx has > been > +paused. > + EthApp> pause 0 > + Port 0: Tx Paused > + > +Enable flow control in IXIA port and send packets from IXIA with line > rate. > +Record line rate before send packet. > +Check that IXIA receive flow control packets and IXIA transmit speed > dropped. > +IXIA Rx packets more then Tx packets to check that received pause > frame.Compare > +the line rates in the time before and after the Pause packets are > injected > + > +Unpause port 0 tx and restart port 0. Then send packets to port0, check > that > +packets forwarded normally from port 0. > + > + EthApp> pause 0 none > + EthApp> stop 0 > + EthApp> open 0 > diff --git a/tests/TestSuite_userspace_ethtool.py > b/tests/TestSuite_userspace_ethtool.py > index c479093..a0f4018 100644 > --- a/tests/TestSuite_userspace_ethtool.py > +++ b/tests/TestSuite_userspace_ethtool.py > @@ -38,12 +38,12 @@ import dts > import time > import re > from test_case import TestCase > -from pmd_output import PmdOutput > from packet import Packet, sniff_packets, load_sniff_packets > import random > from etgen import IxiaPacketGenerator > from settings import HEADER_SIZE > from settings import SCAPY2IXIA > +from utils import RED >=20 >=20 > class TestUserspaceEthtool(TestCase, IxiaPacketGenerator): > @@ -127,6 +127,22 @@ class TestUserspaceEthtool(TestCase, > IxiaPacketGenerator): > else: > return 1518 >=20 > + def resize_linux_eeprom_file(self, dpdk_eeprom_file, > linux_eeprom_file): > + basePath =3D "/root/dpdk/" > + with open( basePath + dpdk_eeprom_file, 'rb') as fpDpdk: > + dpdk_bytes =3D fpDpdk.read() > + dpdk_length =3D len(dpdk_bytes) > + > + with open( basePath + linux_eeprom_file, 'rb') as fplinux: > + linux_bytes =3D fplinux.read() > + linux_length =3D len(linux_bytes) > + > + self.verify(dpdk_length <=3D linux_length, > + "linux ethtool haven't dump out enough data as dpdk > ethtool") > + > + with open( basePath + linux_eeprom_file, 'wb') as fplinux: > + fplinux.write(linux_bytes[:dpdk_length]) > + > def strip_md5(self, filename): > md5_info =3D self.dut.send_expect("md5sum %s" % filename, "# ") > md5_pattern =3D r"(\w+) (\w+)" > @@ -155,30 +171,33 @@ class TestUserspaceEthtool(TestCase, > IxiaPacketGenerator): > version =3D m.group(3) > print dts.GREEN("Detect port %s with %s driver\n" % (por= t, > driver)) >=20 > - # check link status dump function > - for port in self.ports: > - tester_port =3D self.tester.get_local_port(port) > - intf =3D self.tester.get_interface(tester_port) > - self.tester.send_expect("ip link set dev %s down" % intf, "# > ") > - # wait for link stable > - time.sleep(5) > - > - out =3D self.dut.send_expect("link", "EthApp>", 60) > - link_pattern =3D r"Port (\d+): (.*)" > - link_infos =3D out.split("\r\n") > - for link_info in link_infos: > - m =3D re.match(link_pattern, link_info) > - if m: > - port =3D m.group(1) > - status =3D m.group(2) > - self.verify(status =3D=3D "Down", "Userspace tool failed= to > detect link down") > - > - for port in self.ports: > - tester_port =3D self.tester.get_local_port(port) > - intf =3D self.tester.get_interface(tester_port) > - self.tester.send_expect("ip link set dev %s up" % intf, "# "= ) > - # wait for link stable > - time.sleep(5) > + # ethtool doesn't support port disconnect by tools of linux > + # only detect physical link disconnect status > + if self.nic.startswith("fortville") =3D=3D False: > + # check link status dump function > + for port in self.ports: > + tester_port =3D self.tester.get_local_port(port) > + intf =3D self.tester.get_interface(tester_port) > + self.tester.send_expect("ip link set dev %s down" % intf= , > "# ") > + # wait for link stable > + time.sleep(5) > + > + out =3D self.dut.send_expect("link", "EthApp>", 60) > + link_pattern =3D r"Port (\d+): (.*)" > + link_infos =3D out.split("\r\n") > + for link_info in link_infos: > + m =3D re.match(link_pattern, link_info) > + if m: > + port =3D m.group(1) > + status =3D m.group(2) > + self.verify(status =3D=3D "Down", "Userspace tool fa= iled > to detect link down") > + > + for port in self.ports: > + tester_port =3D self.tester.get_local_port(port) > + intf =3D self.tester.get_interface(tester_port) > + self.tester.send_expect("ip link set dev %s up" % intf, > "# ") > + # wait for link stable > + time.sleep(5) >=20 > # check port stats function > pkt =3D Packet(pkt_type=3D'UDP') > @@ -271,8 +290,10 @@ class TestUserspaceEthtool(TestCase, > IxiaPacketGenerator): >=20 > for index in range(len(self.ports)): > md5 =3D self.strip_md5(portsinfo[index]['eeprom_file']) > + > self.resize_linux_eeprom_file( portsinfo[index]['eeprom_file'], > portsinfo[index]['ethtool_eeprom']) > md5_ref =3D self.strip_md5(portsinfo[index]['ethtool_eeprom'= ]) > - print dts.GREEN("Reference eeprom md5 %s" % md5_ref) > + print dts.GREEN("Reference eeprom md5 %s" % md5) > + print dts.GREEN("Reference eeprom md5_ref %s" % md5_ref) > self.verify(md5 =3D=3D md5_ref, "Dumped eeprom not same as l= inux > dumped") >=20 > def test_ring_parameter(self): > @@ -323,7 +344,6 @@ class TestUserspaceEthtool(TestCase, > IxiaPacketGenerator): > tester_port =3D self.tester.get_local_port(port) > intf =3D self.tester.get_interface(tester_port) > pkt.send_pkt(tx_port=3Dintf) > - time.sleep(2) > rx_pkts, tx_pkts =3D self.strip_portstats(port) > self.verify(rx_pkts =3D=3D ori_rx_pkts + 1, "Failed to Rx vl= an > packet") > self.verify(tx_pkts =3D=3D ori_tx_pkts + 1, "Failed to Tx vl= an > packet") > @@ -372,8 +392,8 @@ class TestUserspaceEthtool(TestCase, > IxiaPacketGenerator): > inst =3D sniff_packets(intf, timeout=3D5) > pkt.send_pkt(tx_port=3Dintf) > pkts =3D load_sniff_packets(inst) > - self.verify(len(pkts) =3D=3D 2, "Packet not forwarded as > expected") > - src_mac =3D pkts[1].strip_layer_element("layer2", "src") > + self.verify(len(pkts) =3D=3D 1, "Packet not forwarded as > expected") > + src_mac =3D pkts[0].strip_layer_element("layer2", "src") > self.verify(src_mac =3D=3D valid_mac, "Forwarded packet not = match > default mac") >=20 > # check multicase will not be valid mac > @@ -405,11 +425,17 @@ class TestUserspaceEthtool(TestCase, > IxiaPacketGenerator): > rx_pkts, tx_pkts =3D self.strip_portstats(index) > self.verify(rx_pkts =3D=3D ori_rx_pkts, "Failed to stop port= ") > # restart port and check packet can normally forwarded > + time.sleep(2) > self.dut.send_expect("open %d" % index, "EthApp>") > # wait few time for port ready > - time.sleep(0.5) > + rx_pkts, tx_pkts =3D self.strip_portstats(index) > + time.sleep(2) > pkt.send_pkt(tx_port=3Dintf) > rx_pkts_open, tx_pkts_open =3D self.strip_portstats(index) > + if rx_pkts_open !=3D rx_pkts + 1: > + RED( "Failed to reopen port rx") > + if tx_pkts_open !=3D tx_pkts + 1: > + RED( "Failed to reopen port tx") > self.verify(rx_pkts_open =3D=3D rx_pkts + 1, "Failed to reop= en > port rx") > self.verify(tx_pkts_open =3D=3D tx_pkts + 1, "Failed to reop= en > port tx") >=20 > @@ -430,11 +456,12 @@ class TestUserspaceEthtool(TestCase, > IxiaPacketGenerator): > self.tester.send_expect("ifconfig %s mtu 9000" % (intf), "# = ") > for mtu in mtus: > self.dut.send_expect("mtu %d %d" % (index, mtu), > "EthApp>") > + ori_rx_pkts, _ =3D self.strip_portstats(index) > pkt_size =3D mtu + HEADER_SIZE['eth'] > pkt =3D Packet(pkt_len=3Dpkt_size) > pkt.send_pkt(tx_port=3Dintf) > rx_pkts, _ =3D self.strip_portstats(index) > - self.verify(rx_pkts =3D=3D 1, "Packet match mtu not forw= arded > as expected") > + self.verify(rx_pkts =3D=3D ori_rx_pkts, "Packet match mt= u not > forwarded as expected") > pkt =3D Packet(pkt_len=3Dmtu + 1) > pkt.send_pkt(tx_port=3Dintf) > rx_pkts_over, _ =3D self.strip_portstats(index) > -- > 1.9.3