From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 7CD8011C5 for ; Fri, 25 Sep 2015 10:36:24 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 25 Sep 2015 01:36:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,585,1437462000"; d="scan'208";a="812953283" Received: from stv-crb-56.sh.intel.com (HELO [10.239.128.116]) ([10.239.128.116]) by orsmga002.jf.intel.com with ESMTP; 25 Sep 2015 01:36:22 -0700 Message-ID: <560507FA.6060101@intel.com> Date: Fri, 25 Sep 2015 16:38:18 +0800 From: "Liu, Yong" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: yongjie , dts@dpdk.org References: <1443157585-105425-1-git-send-email-yongjiex.gu@intel.com> In-Reply-To: <1443157585-105425-1-git-send-email-yongjiex.gu@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [dts] [PATCH] modify checksum_offload and add coremask 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: Fri, 25 Sep 2015 08:36:25 -0000 Yongjie, Please separate your patch into two patches. one for test plan and one for suite. BTW, do you change test plan format? Seen that total test plan has been changed. On 09/25/2015 01:06 PM, yongjie wrote: > From: GuYongjie > > > Modify testcase_checksum_offload_with_vlan and testplan of testsuite_checksum_offload. > Add testsuite_coremask and testplan of coremask. > > Signed-off-by: GuYongjie > --- > test_plans/checksum_offload_test_plan.rst | 400 +++++++++++++++-------------- > tests/TestSuite_checksum_offload.py | 22 +- > 2 files changed, 217 insertions(+), 205 deletions(-) > > diff --git a/test_plans/checksum_offload_test_plan.rst b/test_plans/checksum_offload_test_plan.rst > index 8325b47..e789f28 100644 > --- a/test_plans/checksum_offload_test_plan.rst > +++ b/test_plans/checksum_offload_test_plan.rst > @@ -1,195 +1,205 @@ > -.. Copyright (c) <2010>, 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. > - > -========================== > -PMD RX/TX Checksum Offload > -========================== > - > -The support of RX/TX L3/L4 Checksum offload features by Poll Mode Drivers consists in: > - > -On the RX side: > -- Verify IPv4 checksum by hardware for received packets. > -- Verify UDP/TCP/SCTP checksum by hardware for received packets. > - > -On the TX side: > - > -- IPv4 checksum insertion by hardware in transmitted packets. > -- IPv4/UDP checksum insertion by hardware in transmitted packets. > -- IPv4/TCP checksum insertion by hardware in transmitted packets. > -- IPv4/SCTP checksum insertion by hardware in transmitted packets (sctp > - length in 4 bytes). > -- IPv6/UDP checksum insertion by hardware in transmitted packets. > -- IPv6/TCP checksum insertion by hardware in transmitted packets. > -- IPv6/SCTP checksum insertion by hardware in transmitted packets (sctp > - length in 4 bytes). > - > -RX side, the L3/L4 checksum offload by hardware can be enabled with the > -following command of the ``testpmd`` application:: > - > - enable-rx-checksum > - > -TX side, the insertion of a L3/L4 checksum by hardware can be enabled with the > -following command of the ``testpmd`` application and running in a dedicated > -tx checksum mode:: > - > - set fwd csum > - tx_checksum set mask port_id > - > -The transmission of packet is done with the ``start`` command of the ``testpmd`` > -application that will receive packets and then transmit the packet out on all > -configured ports. ``mask`` is used to indicated what hardware checksum > -offload is required on the ``port_id``. Please check the NIC datasheet for the > -corrresponding Hardware limits:: > - > - bit 0 - insert ip checksum offload if set > - bit 1 - insert udp checksum offload if set > - bit 2 - insert tcp checksum offload if set > - bit 3 - insert sctp checksum offload if set > - > - > -Prerequisites > -============= > - > -Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and enable vt-d in bios. > -When used vfio , used "modprobe vfio" and "modprobe vfio-pci" insmod vfiod driver, then used > -"./tools/dpdk_nic_bind.py --bind=vfio-pci device_bus_id" to bind vfio driver to test driver. > - > -Assuming that ports ``0`` and ``2`` are connected to a traffic generator, > -launch the ``testpmd`` with the following arguments:: > - > - ./build/app/testpmd -cffffff -n 1 -- -i --burst=1 --txpt=32 \ > - --txht=8 --txwt=0 --txfreet=0 --rxfreet=64 --mbcache=250 --portmask=0x5 > - enable-rx-checksum > - > -Set the verbose level to 1 to display informations for each received packet:: > - > - testpmd> set verbose 1 > - > -Test Case: Validate checksum on the receive packet > -================================================== > - > -Setup the ``csum`` forwarding mode:: > - > - testpmd> set fwd csum > - Set csum packet forwarding mode > - > -Start the packet forwarding:: > - > - testpmd> start > - csum packet forwarding - CRC stripping disabled - packets/burst=32 > - nb forwarding cores=1 - nb forwarding ports=10 > - RX queues=1 - RX desc=128 - RX free threshold=64 > - RX threshold registers: pthresh=8 hthresh=8 wthresh=4 > - TX queues=1 - TX desc=512 - TX free threshold=0 > - TX threshold registers: pthresh=32 hthresh=8 wthresh=8 > - > -Configure the traffic generator to send the multiple packets with the following > -combination: good/bad ip checksum + good/bad udp/tcp checksum. > - > -Except that SCTP header + payload length must be a multiple of 4 bytes. > -IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes. > - > -Then verify that how many packets found with Bad-ipcsum or Bad-l4csum:: > - > - testpmd> stop > - ---------------------- Forward statistics for port 0 ---------------------- > - RX-packets: 0 RX-dropped: 0 RX-total: 0 > - Bad-ipcsum: 0 Bad-l4csum: 0 > - TX-packets: 0 TX-dropped: 0 TX-total: 0 > - ---------------------------------------------------------------------------- > - > - > -Test Case: Insert IPv4/IPv6 UDP/TCP/SCTP checksum on the transmit packet > -======================================================================== > - > -Setup the ``csum`` forwarding mode:: > - > - testpmd> set fwd csum > - Set csum packet forwarding mode > - > -Enable the IPv4/UDP/TCP/SCTP checksum offload on port 0:: > - > - testpmd> tx_checksum set 0xf 0 > - testpmd> start > - csum packet forwarding - CRC stripping disabled - packets/burst=32 > - nb forwarding cores=1 - nb forwarding ports=10 > - RX queues=1 - RX desc=128 - RX free threshold=64 > - RX threshold registers: pthresh=8 hthresh=8 wthresh=4 > - TX queues=1 - TX desc=512 - TX free threshold=0 > - TX threshold registers: pthresh=32 hthresh=8 wthresh=8 > - > -Configure the traffic generator to send the multiple packets for the following > -combination: IPv4/UDP, IPv4/TCP, IPv4/SCTP, IPv6/UDP, IPv6/TCP. > - > -Except that SCTP header + payload length must be a multiple of 4 bytes. > -IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes. > - > -Then verify that the same number of packet are correctly received on the traffic > -generator side. And IPv4 checksum, TCP checksum, UDP checksum, SCTP CRC32c need > -be validated as pass by the IXIA. > - > -The IPv4 source address will not be changed by testpmd. > - > - > -Test Case: Do not insert IPv4/IPv6 UDP/TCP checksum on the transmit packet > -========================================================================== > - > -Setup the ``csum`` forwarding mode:: > - > - testpmd> set fwd csum > - Set csum packet forwarding mode > - > -Disable the IPv4/UDP/TCP/SCTP checksum offload on port 0:: > - > - testpmd> tx_checksum set 0x0 0 > - testpmd> start > - csum packet forwarding - CRC stripping disabled - packets/burst=32 > - nb forwarding cores=1 - nb forwarding ports=10 > - RX queues=1 - RX desc=128 - RX free threshold=64 > - RX threshold registers: pthresh=8 hthresh=8 wthresh=4 > - TX queues=1 - TX desc=512 - TX free threshold=0 > - TX threshold registers: pthresh=32 hthresh=8 wthresh=8 > - > -Configure the traffic generator to send the multiple packets for the follwing > -combination: IPv4/UDP, IPv4/TCP, IPv6/UDP, IPv6/TCP. > - > -IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes. > - > -Then verify that the same number of packet are correctly received on the traffic > -generator side. And IPv4 checksum, TCP checksum, UDP checksum need > -be validated as pass by the IXIA. > - > -The first byte of source IPv4 address will be increment by testpmd. The checksum > -is indeed recalculated by software algorithms. > - > - > - > +.. Copyright (c) <2010>, 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. > + > +========================== > +PMD RX/TX Checksum Offload > +========================== > + > +The support of RX/TX L3/L4 Checksum offload features by Poll Mode Drivers consists in: > + > +On the RX side: > +- Verify IPv4 checksum by hardware for received packets. > +- Verify UDP/TCP/SCTP checksum by hardware for received packets. > + > +On the TX side: > + > +- IPv4 checksum insertion by hardware in transmitted packets. > +- IPv4/UDP checksum insertion by hardware in transmitted packets. > +- IPv4/TCP checksum insertion by hardware in transmitted packets. > +- IPv4/SCTP checksum insertion by hardware in transmitted packets (sctp > + length in 4 bytes). > +- IPv6/UDP checksum insertion by hardware in transmitted packets. > +- IPv6/TCP checksum insertion by hardware in transmitted packets. > +- IPv6/SCTP checksum insertion by hardware in transmitted packets (sctp > + length in 4 bytes). > + > +RX side, the L3/L4 checksum offload by hardware can be enabled with the > +following command of the ``testpmd`` application:: > + > + enable-rx-checksum > + > +TX side, the insertion of a L3/L4 checksum by hardware can be enabled with the > +following command of the ``testpmd`` application and running in a dedicated > +tx checksum mode:: > + > + set fwd csum > + ??tx_checksum set mask port_id > + > +The transmission of packet is done with the ``start`` command of the ``testpmd`` > +application that will receive packets and then transmit the packet out on all > +configured ports. ``mask`` is used to indicated what hardware checksum > +offload is required on the ``port_id``. Please check the NIC datasheet for the > +corrresponding Hardware limits:: > + > + bit 0 - insert ip checksum offload if set > + bit 1 - insert udp checksum offload if set > + bit 2 - insert tcp checksum offload if set > + bit 3 - insert sctp checksum offload if set > + > + > +Prerequisites > +============= > + > +Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and enable vt-d in bios. > +When used vfio , used "modprobe vfio" and "modprobe vfio-pci" insmod vfiod driver, then used > +"./tools/dpdk_nic_bind.py --bind=vfio-pci device_bus_id" to bind vfio driver to test driver. > + > +Assuming that ports ``0`` and ``2`` are connected to a traffic generator, > +launch the ``testpmd`` with the following arguments:: > + > + ./build/app/testpmd -c 0x6 -n 4 -- -i --portmask=0x3 \ > + --disable-hw-vlan --enable-rx-cksum --crc-strip --txqflags=0 > + > +Set the verbose level to 1 to display informations for each received packet:: > + > + testpmd> set verbose 1 > + > +Test Case: Checksum offload with vlan > +================================================== > + > +Setup the ``csum`` forwarding mode:: > + > + testpmd> set fwd csum > + Set csum packet forwarding mode > + > +Enable hw:: > + > + testpmd> csum set ip hw 0 > + testpmd> csum set udp hw 0 > + testpmd> csum set tcp hw 0 > + testpmd> csum set sctp hw 0 > + testpmd> csum set ip hw 1 > + testpmd> csum set udp hw 1 > + testpmd> csum set tcp hw 1 > + testpmd> csum set sctp hw 1 > + > +Start the packet forwarding:: > + > + testpmd> start > + csum packet forwarding - CRC stripping disabled - packets/burst=32 > + nb forwarding cores=1 - nb forwarding ports=10 > + RX queues=1 - RX desc=128 - RX free threshold=64 > + RX threshold registers: pthresh=8 hthresh=8 wthresh=4 > + TX queues=1 - TX desc=512 - TX free threshold=0 > + TX threshold registers: pthresh=32 hthresh=8 wthresh=8 > + > +Configure the traffic generator to send the multiple packets with vlan and > +with the following combination: IPv4/UDP, IPv4/TCP, IPv4/SCTP, IPv6/UDP, IPv6/TCP. > + > +Except that SCTP header + payload length must be a multiple of 4 bytes. > +IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes. > + > +Then verify that the same number of packet are correctly received on the traffic > +generator side. And IPv4 checksum, TCP checksum, UDP checksum need > +be validated as pass by scapy. > + > + > +Test Case: Checksum offload enable hw > +======================================================================== > + > +Setup the ``csum`` forwarding mode:: > + > + testpmd> set fwd csum > + Set csum packet forwarding mode > + > +Enable hw:: > + > + testpmd> csum set ip hw 0 > + testpmd> csum set udp hw 0 > + testpmd> csum set tcp hw 0 > + testpmd> csum set sctp hw 0 > + testpmd> csum set ip hw 1 > + testpmd> csum set udp hw 1 > + testpmd> csum set tcp hw 1 > + testpmd> csum set sctp hw 1 > + > +Start the packet forwarding:: > + > + testpmd> start > + csum packet forwarding - CRC stripping disabled - packets/burst=32 > + nb forwarding cores=1 - nb forwarding ports=10 > + RX queues=1 - RX desc=128 - RX free threshold=64 > + RX threshold registers: pthresh=8 hthresh=8 wthresh=4 > + TX queues=1 - TX desc=512 - TX free threshold=0 > + TX threshold registers: pthresh=32 hthresh=8 wthresh=8 > + > +Configure the traffic generator to send the multiple packets for the following > +combination: IPv4/UDP, IPv4/TCP, IPv4/SCTP, IPv6/UDP, IPv6/TCP. > + > +Except that SCTP header + payload length must be a multiple of 4 bytes. > +IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes. > + > +Then verify that the same number of packet are correctly received on the traffic > +generator side. And IPv4 checksum, TCP checksum, UDP checksum, SCTP CRC32c need > +be validated as pass by scapy. > + > + > +Test Case: Checksum offload disable hw > +========================================================================== > + > +Setup the ``csum`` forwarding mode:: > + > + testpmd> set fwd csum > + Set csum packet forwarding mode > + > +Start the packet forwarding:: > + > + testpmd> start > + csum packet forwarding - CRC stripping disabled - packets/burst=32 > + nb forwarding cores=1 - nb forwarding ports=10 > + RX queues=1 - RX desc=128 - RX free threshold=64 > + RX threshold registers: pthresh=8 hthresh=8 wthresh=4 > + TX queues=1 - TX desc=512 - TX free threshold=0 > + TX threshold registers: pthresh=32 hthresh=8 wthresh=8 > + > +Configure the traffic generator to send the multiple packets for the follwing > +combination: IPv4/UDP, IPv4/TCP, IPv6/UDP, IPv6/TCP. > + > +IPv4 + UDP/TCP packet length can range from the minimum length to 1518 bytes. > + > +Then verify that the same number of packet are correctly received on the traffic > +generator side. And IPv4 checksum, TCP checksum, UDP checksum need > +be validated as pass by scapy. > + > + > + > + > diff --git a/tests/TestSuite_checksum_offload.py b/tests/TestSuite_checksum_offload.py > index abfebb6..0b9254e 100644 > --- a/tests/TestSuite_checksum_offload.py > +++ b/tests/TestSuite_checksum_offload.py > @@ -40,6 +40,7 @@ import dts > import string > import re > import rst > +import random > > from test_case import TestCase > from pmd_output import PmdOutput > @@ -58,6 +59,7 @@ class TestChecksumOffload(TestCase): > self.pmdout = PmdOutput(self.dut) > self.portMask = dts.create_mask([self.dut_ports[0], self.dut_ports[1]]) > self.ports_socket = self.dut.get_numa_id(self.dut_ports[0]) > + self.vlan = random.randint(1,100) > > def set_up(self): > """ > @@ -162,16 +164,16 @@ class TestChecksumOffload(TestCase): > traffic generator side. > """ > dmac = self.dut.get_mac_address(self.dut_ports[1]) > - pktsChkErr = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46)' % dmac, > - 'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46)' % dmac, > - 'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % dmac, > - 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % dmac, > - 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % dmac} > - pkts = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP(src="127.0.0.2")/UDP()/("X"*46)' % dmac, > - 'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP(src="127.0.0.2")/TCP()/("X"*46)' % dmac, > - 'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IP(src="127.0.0.2")/SCTP()/("X"*48)' % dmac, > - 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::2")/UDP()/("X"*46)' % dmac, > - 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::2")/TCP()/("X"*46)' % dmac} > + pktsChkErr = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46)' % (dmac, self.vlan), > + 'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46)' % (dmac, self.vlan), > + 'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % (dmac, self.vlan), > + 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % (dmac, self.vlan), > + 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % (dmac, self.vlan)} > + pkts = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IP(src="127.0.0.2")/UDP()/("X"*46)' % (dmac, self.vlan), > + 'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IP(src="127.0.0.2")/TCP()/("X"*46)' % (dmac, self.vlan), > + 'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IP(src="127.0.0.2")/SCTP()/("X"*48)' % (dmac, self.vlan), > + 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IPv6(src="::2")/UDP()/("X"*46)' % (dmac, self.vlan), > + 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=%s)/IPv6(src="::2")/TCP()/("X"*46)' % (dmac, self.vlan)} > self.checksum_enablehw(self.dut_ports[0]) > self.checksum_enablehw(self.dut_ports[1]) > self.dut.send_expect("start", "testpmd>")