From patchwork Thu Jun 8 18:27:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Huang, ZhiminX" X-Patchwork-Id: 128418 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B4CFF42C5C; Thu, 8 Jun 2023 12:16:22 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AE65440A84; Thu, 8 Jun 2023 12:16:22 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id F093240042 for ; Thu, 8 Jun 2023 12:16:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686219380; x=1717755380; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hi+TtshKmo7kVIIZnECt26h9YkY0h6D87und7c+9xEo=; b=b6CoKhgdTtlW1kjgldr1QR87AO9UkbyyxkEduuODV4pW/XA2WXFREmWH Qri62T4tEE3c6lNP+x8j7qteHSE+vE9jHQtACRrtmUHXD2r3mIXiXJyGu qUTAF1GN0/kV0HXeZHRtXYGRhZlHUb4crUcjL0pVXM4XOVOEDUK+fPX1b mBQoFu+vI6MWNSJG5Cly/i+TWPS1JMeRD2rJ5qGoRtL67chOQKrl1nDOk T6jyuuPl6kFy+oFaHSkGbWq+X50nRIhBSx07sW+GQvqhOlNy8NndbFX+H OeXqItPMK7M1GwaEw55nwms/D+Ww3GBA9QZMTurOCLQZ4GtgLA1Px+yfX w==; X-IronPort-AV: E=McAfee;i="6600,9927,10734"; a="420832836" X-IronPort-AV: E=Sophos;i="6.00,226,1681196400"; d="scan'208";a="420832836" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2023 03:16:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10734"; a="660327235" X-IronPort-AV: E=Sophos;i="6.00,226,1681196400"; d="scan'208";a="660327235" Received: from unknown (HELO localhost.localdomain) ([10.239.252.96]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2023 03:15:57 -0700 From: Zhimin Huang To: dts@dpdk.org Cc: Zhimin Huang Subject: [dst][PATCH V1 3/6] test_plans/kernelpf_vf_test_plan:add new plan to cover most of the basic vf cases Date: Thu, 8 Jun 2023 18:27:39 +0000 Message-Id: <20230608182742.360594-4-zhiminx.huang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230608182742.360594-1-zhiminx.huang@intel.com> References: <20230608182742.360594-1-zhiminx.huang@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org add new testplan for kernelpf_vf test suite Signed-off-by: Zhimin Huang --- test_plans/kernelpf_vf_test_plan.rst | 1294 ++++++++++++++++++++++++++ 1 file changed, 1294 insertions(+) create mode 100644 test_plans/kernelpf_vf_test_plan.rst diff --git a/test_plans/kernelpf_vf_test_plan.rst b/test_plans/kernelpf_vf_test_plan.rst new file mode 100644 index 00000000..7d4ecef4 --- /dev/null +++ b/test_plans/kernelpf_vf_test_plan.rst @@ -0,0 +1,1294 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2023 Intel Corporation + +======================== +Kernel PF + VF test plan +======================== + +Intel Adaptive Virtual Function is aimed to provide a common VF for VM +which means just need one unified VF driver so you don't have to reload +different VF driver when you upgrade the PF NIC. +One of the advantages is you don't have to do any modification for code or +hardware for an existing VM image running on the new NIC. + +Requirement +=========== +This plan for VF only supports kernel PF scenario. + +Hardware +======== +ICE/I40E driver NIC. + +Prerequisites +============= +1. Get the pci device id of DUT, for example:: + + ./usertools/dpdk-devbind.py -s + + 0000:18:00.0 'Device 1592' if=enp24s0f0 drv=ice unused=igb_uio + 0000:18:00.1 'Device 1592' if=enp24s0f1 drv=ice unused=igb_uio + +2. Create 2 VF from 2 kernel PF:: + + echo 1 > /sys/bus/pci/devices/0000\:18\:00.0/sriov_numvfs + echo 1 > /sys/bus/pci/devices/0000\:18\:00.1/sriov_numvfs + +3. Set VF mac as 00:01:23:45:67:89:: + + ip link set $PF_INTF vf 0 mac 00:01:23:45:67:89 + +4. Test IAVF cases on host or in qemu + +5. Bind VF device to vfio-pci:: + + usertools/dpdk-devbind.py --force --bind=vfio-pci 0000:18:01.0 0000:18:09.0 + +launch testpmd:: + + .//app/dpdk-testpmd -c f -n 4 -- -i + +.. note:: + + 1.the kernel driver has MAC and VLAN Anti-Spoofing feature for VFs, the default is enable. + disabled for vfs: ip link set vf spoofchk {off|on} + + 2.for vf-vlan-pruning in ethtool --set-priv-flag, enable function to receive specific vlan packet. + +Test case: VF basic RX/TX +========================= +Set rxonly forward, start testpmd + +Send 100 random packets from tester, check packets can be received + +Set txonly forward, start testpmd + +Check tester could receive the packets from application generated + +Test case: VF promisc +===================== +Enable kernel trust mode:: + + ip link set $PF_INTF vf 0 trust on + +Start VF testpmd, set mac forward and enable print output + +Use scapy to send random packets with current VF0's MAC, verify the +packets can be received and forwarded by the VF. + +Use scapy to send random packets with a wrong MAC to VF0, verify the +packets can be received and forwarded by the VF. + +Disable promisc mode:: + + testpmd> set promisc all off + +Use scapy to send random packets with current VF0's MAC, verify the +packets can be received and forwarded by the VF. + +Use scapy to send random packets with a wrong MAC to VF0, verify the +packets can't be received and forwarded by the VF. + +Enable promisc mode:: + + testpmd> set promisc all on + +Use scapy to send random packets with current VF0's MAC, verify the +packets can be received and forwarded by the VF. + +Use scapy to send random packets with a wrong MAC to VF0, verify the +packets can be received and forwarded by the VF. + +Disable kernel trust mode:: + + ip link set $PF_INTF vf 0 trust off + +Test case: VF multicast +======================= + +Start VF testpmd + +Disable promisc and multicast mode:: + + testpmd> set promisc all off + testpmd> set allmulti all off + testpmd> start + +Send packet with current VF0's MAC, and check VF can receive the packet. + +Send packet with multicast MAC 01:80:C2:00:00:08, and check VF can not +receive the packet. + +Enable multicast mode:: + + testpmd> set allmulti all on + +configure multicast address:: + + testpmd> mcast_addr add 0 01:80:C2:00:00:08 + +Send packet with current VF0's MAC, and check VF can receive the packet. + +Send packet with multicast MAC 01:80:C2:00:00:08, and check VF can +receive the packet. + +Test case: VF broadcast +======================= +Disable VF promisc mode:: + + testpmd> set promisc all off + testpmd> start + +Send packet with broadcast address ff:ff:ff:ff:ff:ff, and check VF can +receive the packet + +Test case: VF unicast +===================== +Disable VF promisc and multicast mode:: + + testpmd> set promisc all off + testpmd> set allmulti all off + testpmd> start + +Send packet with unicast address, and check VF can receive the packet + +Test case: VF mac add filter +============================ +Disable VF promisc and enable crc strip and add mac address:: + + testpmd> port stop all + testpmd> port config all crc-strip on + testpmd> port start all + testpmd> set promisc all off + testpmd> mac_addr add 0 00:11:22:33:44:55 + +Use scapy to send 100 random packets with current VF0's MAC, verify the +packets can be received by one VF and can be forwarded to another VF +correctly. + +Use scapy to send 100 random packets with new added VF0's MAC, verify the +packets can be received by one VF and can be forwarded to another VF correctly. + +remove the added mac address:: + + testpmd> mac_addr remove 0 00:11:22:33:44:55 + +Use scapy to send 100 random packets to the deleted MAC to VF0, verify the +packets can't be received by one VF and also can't be forwarded to another +VF correctly + +Use scapy to send 100 random packets with a wrong MAC to VF0, verify the +packets can't be received by one VF and also can't be forwarded to another +VF correctly. + +Test case: VF vlan insertion +============================ + +Disable VF vlan strip:: + + testpmd> vlan set strip off 0 + +Set vlan id 20 for tx_vlan:: + + testpmd> port stop all + testpmd> tx_vlan set 0 20 + testpmd> vlan set filter on 0 + testpmd> rx_vlan set 0 20 + testpmd> port start all + testpmd> set fwd mac + testpmd> start + +Send normal packet:: + + p=Ether(dst="00:01:23:45:67:89")/IP()/Raw(load='X'*30) + +Verify packet that out from VF contains the vlan tag 20 + +Test case: VF vlan strip +======================== + +Enable VF vlan strip:: + + testpmd> vlan set filter on 0 + testpmd> rx_vlan add 20 0 + testpmd> vlan set strip on 0 + testpmd> set fwd mac + testpmd> set verbose 1 + testpmd> start + +Send packets with vlan tag:: + + p=Ether(dst="00:01:23:45:67:89")/Dot1Q(id=0x8100,vlan=20)/IP()/Raw(load='X'*30) + +Check that out from VF doesn't contain the vlan tag. + +Disable VF vlan strip:: + + testpmd> vlan set strip off 0 + +Send packets with vlan tag:: + + Ether(dst="00:01:23:45:67:89")/Dot1Q(id=0x8100,vlan=20)/IP()/Raw(load='X'*30) + +Check that out from VF contains the vlan tag. + +Test case: VF vlan filter +========================= + +Enable vlan filter:: + + testpmd> vlan set filter on 0 + testpmd> rx_vlan add 20 0 + testpmd> vlan set strip off 0 + testpmd> set promisc all off + testpmd> set fwd mac + testpmd> set verbose 1 + testpmd> start + +Send packets with vlan tag:: + + p=Ether(dst="00:01:23:45:67:89")/Dot1Q(id=0x8100,vlan=20)/IP()/Raw(load='X'*30) + +Check packets can be received and forwarded with vlan tag. + +Send packets with unmatched vlan tag:: + + p=Ether(dst="00:01:23:45:67:89")/Dot1Q(id=0x8100,vlan=30)/IP()/Raw(load='X'*30) + +Check packets can not be received and forwarded. + +Disable VF vlan filter:: + + testpmd> vlan set filter off 0 + +Send packets with vlan tag:: + + Ether(dst="00:01:23:45:67:89")/Dot1Q(id=0x8100,vlan=20)/IP()/Raw(load='X'*30) + +if vf-vlan-pruning is on:: + + Check packets can be received and forwarded with vlan tag. + +if vf-vlan-pruning is off or not have this option:: + + Check packets can not be received and forwarded + +Test case: VF vlan promisc +========================== + +Enable promisc and disable vlan filter:: + + testpmd> port stop all + testpmd> set promisc all on + testpmd> set verbose 1 + testpmd> vlan set filter off 0 + testpmd> vlan set strip off 0 + testpmd> set fwd mac + testpmd> port start all + testpmd> start + +Send 10 random packets with vlan tag:: + + Ether(dst="00:01:23:45:67:89",type=0x8100)/Dot1Q(vlan=100,type=0x0800)/IP(src="196.222.232.1")/("X"*480) + ... + +if vf-vlan-pruning is on:: + + Check packets can be received and forwarded. + +if vf-vlan-pruning is off or not have this option:: + + Check packets can not be received and forwarded. + +Send 10 random packets without vlan tag:: + + Ether(dst="00:01:23:45:67:89")/IP(src="196.222.232.1")/("X"*480) + ... + +Check packets can be received and forwarded. + +Test case: VF add pvid base rx +============================== + +Add pvid on VF0 from PF device:: + + ip link set $PF_INTF vf 0 vlan 2 + +Check pf device show correct pvid setting:: + + ip link show ens259f0 + ... + vf 0 MAC 00:00:00:00:00:00, vlan 1, spoof checking on, link-state auto + + +Start testpmd + +Send packet with same vlan id and check VF can receive + +Send packet without vlan and check VF can't receive + +Send packet with wrong vlan id and check Vf can't receive + +Remove added vlan from PF device:: + + ip link set $PF_INTF vf 0 vlan 0 + +Restart testpmd and send packet without vlan and check VF can receive + +Set packet with vlan id 0 and check VF can receive + +Set packet with random id 1-4095 + +if vf-vlan-pruning is on:: + + Check packets can be received and forwarded. + +if vf-vlan-pruning is off or not have this option:: + + Check packets can not be received and forwarded + + +send vlan=0 and not vlan pkt, also receive + +Test case: VF add pvid base tx +============================== +Add pvid on VF0 from PF device:: + + ip link set $PF_INTF vf 0 vlan 2 + +Start testpmd with mac forward mode:: + + testpmd> set fwd mac + testpmd> start + +Send packet from tester port1 and check packet received by tester port0:: + + Check port1 received packet with configured vlan 2 + +Test case: VF vlan rx combination +================================= +Start testpmd with rxonly mode and parameter "--enable-hw-vlan":: + + testpmd> set fwd rxonly + testpmd> set verbose 1 + testpmd> start + +.. note:: + + parameter "--enable-hw-vlan" not support nic: IXGBE_10G-82599_SFP. + +Send packet without vlan and check packet received + +Send packet with vlan 0 and check packet received + +Add vlan on VF0 from VF driver:: + + testpmd> rx_vlan add 1 0 + +Send packet with vlan0/1 and check packet received + +Rerun with step5-6 with random vlan and max vlan 4095 + +Remove vlan on VF0:: + + rx_vlan rm 1 0 + +Send packet with vlan 0 and check packet received + +Send packet without vlan and check packet received + +Send packet with vlan 1 + +if vf-vlan-pruning is on:: + + Check packets can be received and forwarded. + +if vf-vlan-pruning is off or not have this option:: + + Check packets can not be received and forwarded. + +Test case: VF RSS +================= + +Start command with multi-queues like below:: + + .//app/dpdk-testpmd -c f -n 4 -- -i --txq=4 --rxq=4 + +Show RSS RETA configuration:: + + testpmd> show port 0 rss reta 64 (0xffffffffffffffff) + + RSS RETA configuration: hash index=0, queue=0 + RSS RETA configuration: hash index=1, queue=1 + RSS RETA configuration: hash index=2, queue=2 + RSS RETA configuration: hash index=3, queue=3 + ... + RSS RETA configuration: hash index=60, queue=0 + RSS RETA configuration: hash index=61, queue=1 + RSS RETA configuration: hash index=62, queue=2 + RSS RETA configuration: hash index=63, queue=3 + +Config hash reta table:: + + testpmd> port config 0 rss reta (0,3) + testpmd> port config 0 rss reta (1,2) + testpmd> port config 0 rss reta (2,1) + testpmd> port config 0 rss reta (3,0) + +Check RSS RETA configuration has changed:: + + testpmd> show port 0 rss reta 64 (0xffffffffffffffff) + + RSS RETA configuration: hash index=0, queue=3 + RSS RETA configuration: hash index=1, queue=2 + RSS RETA configuration: hash index=2, queue=2 + RSS RETA configuration: hash index=3, queue=1 + +Enable IP/TCP/UDP RSS:: + + testpmd> port config all rss (all|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|none) + +Send different flow types' IP/TCP/UDP packets to VF port, check packets are +received by different configured queues. + +Test case: VF RSS hash key +========================== + +Start command with multi-queues like below:: + + .//app/dpdk-testpmd -c f -n 4 -- -i --txq=4 --rxq=4 + +Show port rss hash key:: + + testpmd> show port 0 rss-hash key + +Set rxonly fwd, enable print, start testpmd:: + + testpmd> set fwd rxonly + testpmd> set verbose 1 + testpmd> start + +Send ipv4 packets, mark the RSS hash value:: + + p=Ether(dst="56:0A:EC:50:A4:28")/IP(src="1.2.3.4")/Raw(load='X'*30) + +Update ipv4 different hash key:: + + testpmd> port config 0 rss-hash-key ipv4 1b9d58a4b961d9cd1c56ad1621c3ad51632c16a5d16c21c3513d132c135d132c13ad1531c23a51d6ac49879c499d798a7d949c8a + +Show port rss hash key, check the key is same to configured key:: + + testpmd> show port 0 rss-hash key + RSS functions: + all ipv4 ipv6 ip + RSS key: + 1B9D58A4B961D9CD1C56AD1621C3AD51632C16A5D16C21C3513D132C135D132C13AD1531C23A51D6AC49879C499D798A7D949C8A + +Send ipv4 packets, check RSS hash value is different:: + + p=Ether(dst="56:0A:EC:50:A4:28")/IP(src="1.2.3.4")/Raw(load='X'*30) + +Test case: test rxq txq number inconsistent +=========================================== + +Start the testpmd with rxq not equal to txq:: + + .//app/dpdk-testpmd -l 1-9 -n 2 -- -i --rxq=4 --txq=8 + +.. note:: + queue pairs in number of 1, 2, 4, 8, 16, 32, 64, etc. + For vf of ixgbe, the maximum number of rxq and txq supported is 4. + +Set rxonly fwd, enable print, start testpmd:: + + testpmd> set fwd rxonly + testpmd> set verbose 1 + testpmd> start + +Send different hash types' packets with different keywords, then check rx port + could receive packets by different queues:: + + sendp([Ether(dst="00:01:23:45:67:89")/IP(src="192.168.0.4", dst=RandIP())], iface="eth3") + +Check the total Rx packets in all the RxQ should be equal to the total HW Rx packets:: + + testpmd> show fwd stats all + ------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 0/Queue= 0 ------- + RX-packets: 252 TX-packets: 0 TX-dropped: 0 + + ------- Forward Stats for RX Port= 0/Queue= 1 -> TX Port= 0/Queue= 1 ------- + RX-packets: 257 TX-packets: 0 TX-dropped: 0 + + ------- Forward Stats for RX Port= 0/Queue= 2 -> TX Port= 0/Queue= 2 ------- + RX-packets: 259 TX-packets: 0 TX-dropped: 0 + + ------- Forward Stats for RX Port= 0/Queue= 3 -> TX Port= 0/Queue= 3 ------- + RX-packets: 256 TX-packets: 0 TX-dropped: 0 + + ---------------------- Forward statistics for port 0 ---------------------- + RX-packets: 1024 RX-dropped: 0 RX-total: 1024 + TX-packets: 0 TX-dropped: 0 TX-total: 0 + ---------------------------------------------------------------------------- + + +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ + RX-packets: 1024 RX-dropped: 0 RX-total: 1024 + TX-packets: 0 TX-dropped: 0 TX-total: 0 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Test case: VF port stop/start +============================= + +Stop VF port:: + + testpmd> port stop all + +Start VF port:: + + testpmd> port start all + +Repeat above stop and start port for 10 times + +Send packets from tester + +Check VF could receive packets + +Test case: VF statistics reset +============================== + +Check VF port stats:: + + testpmd> show port stats all + +Clear VF port stats:: + + testpmd> clear port stats all + +Check VF port stats, RX-packets and TX-packets are 0 + +Set mac forward, enable print out + +Send 100 packets from tester + +Check VF port stats, RX-packets and TX-packets are 100 + +Clear VF port stats + +Check VF port stats, RX-packets and TX-packets are 0 + +Test case: VF information +========================= + +Start testpmd + +Show VF port information, check link, speed...information correctness:: + + testpmd> show port info all + +Set mac forward, enable print out + +Send 100 packets from tester + +Check VF port stats, RX-packets and TX-packets are 100 + +Test case: VF xstats check +========================== + +Launch testpmd and enable rss:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c f -n 4 -- -i --rxq=4 --txq=4 --max-pkt-len=9000 + testpmd> port config all rss all + testpmd> set fwd mac + +.. Note:: + + 8259x family VF device jumbo frame size setting shared with PF device. + ifconfig PF_intf mtu 3000 + +show the xstats before packet forwarding, all the value are 0. + +Start forward and send 100 packets with random src IP address, + then stop forward. + +Check stats and xstats:: + + testpmd> stop + + testpmd> show port stats all + + testpmd> show port xstats all + +verify rx_good_packets, RX-packets of port 0 and tx_good_packets, TX-packets of port 1 are both 100. +rx_good_bytes, RX-bytes of port 0 and tx_good_bytes, TX-bytes of port 1 are the same. +Intel® Ethernet 700 Series does not support hardware per queue stats, +so rx_qx_packets and rx_qx_bytes are both 0. +tx_qx_packets and tx_qx_bytes are both 0 too. + +Clear stats:: + + testpmd> clear port stats all + +Check stats and xstats, verify rx_good_packets, RX-packets of port 0 and tx_good_packets, TX-packets of port 1 are both 0. + +Repeat above 4 and 5 steps. + +Clear xstats:: + + testpmd> clear port xstats all + +Check stats and xstats, verify rx_good_packets, RX-packets of port 0 and tx_good_packets, TX-packets of port 1 are both 0. + +Test case: IAVF DUAL VLAN filtering +=================================== + +enable vlan filtering on port VF:: + + testpmd> set fwd mac + Set mac packet forwarding mode + testpmd> vlan set filter on 0 + +check the vlan mode is set successfully:: + + testpmd> show port info 0 + + ********************* Infos for port 0 ********************* + ...... + VLAN offload: + strip off, filter on, extend off, qinq strip off + +tester send qinq pkt and single vlan pkt which outer vlan id is 1 to VF:: + + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=1,type=0x8100,prio=1)/Dot1Q(vlan=2,type=0x0800,prio=2)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + +check the pkts can't be received in VF, but if the kernel cannot set ``vf-vlan-pruning`` or kdriver is ixgbe, check can receive 2 pkts in VF. + +add rx_vlan in VF:: + + testpmd> rx_vlan add 1 0 + +repeat step 3, check the pkts can be received by VF and fwd to tester:: + + check the pkts can be received by PF and fwd to tester with inner and outer correct vlan ID and priority value. + testpmd> port 0/queue 0: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=522 - nb_segs=1 - hw ptype: L2_ETHER - sw ptype: L2_ETHER_VLAN INNER_L2_ETHER_VLAN - l2_len=18 - inner_l2_len=4 - Receive queue=0x0 + ol_flags: PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + port 0/queue 0: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=518 - nb_segs=1 - hw ptype: L2_ETHER - sw ptype: L2_ETHER_VLAN - l2_len=18 - Receive queue=0x0 + ol_flags: PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + tcpdump -i ens786f0 -nn -e -v + + 16:50:38.807158 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 1, ethertype 802.1Q, vlan 2, p 2, ethertype 0x0800, + 16:50:38.807217 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 522: vlan 1, p 1, ethertype 802.1Q, vlan 2, p 2, ethertype 0x0800, + + 16:51:06.083084 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 518: vlan 1, p 0, ethertype 0x0800, + 16:51:06.083127 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 518: vlan 1, p 0, ethertype 0x0800, + +tester send qinq pkt and single vlan pkt which outer vlan id is 11 to VF:: + + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=11,type=0x8100,prio=1)/Dot1Q(vlan=2,type=0x0800,prio=2)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=11,type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + +check the pkts can not be received by VF. + +remove rx_vlan in VF1:: + + testpmd> rx_vlan rm 1 0 + +repeat step 3, check the pkts can not be received by VF, but if the kernel cannot set ``vf-vlan-pruning``, check can receive 2 pkts in VF. + +Test case: IAVF DUAL VLAN header stripping +========================================== + +enable vlan filtering on port VF:: + + testpmd> vlan set filter on 0 + testpmd> rx_vlan add 1 0 + +check the vlan mode is set successfully:: + + testpmd> show port info 0 + + ********************* Infos for port 0 ********************* + ...... + VLAN offload: + strip off, filter on, extend off, qinq strip off + +enable vlan header stripping on VF:: + + testpmd> vlan set strip on 0 + +check the vlan mode is set successfully:: + + testpmd> show port info 0 + + ********************* Infos for port 0 ********************* + ...... + VLAN offload: + strip on, filter on, extend off, qinq strip off + +tester send qinq pkt and single vlan pkt which outer vlan id is 1 to VF:: + + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=1,type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + +check the pkts can be received in VF and fwd to tester without outer vlan header:: + + testpmd> port 0/queue 10: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=518 - nb_segs=1 - RSS hash=0xc7b627aa - RSS queue=0xa - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN L3_IPV4 - l2_len=18 - l3_len=20 - Tail/CRC: 0x58585858/0x00000000 - Receive queue=0xa + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + port 0/queue 10: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0xc7b627aa - RSS queue=0xa - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Tail/CRC: 0x58585858/0x00000000 - Receive queue=0xa + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + 10:12:38.034948 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 10:12:38.035025 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 518: vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + + 10:12:44.806825 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 518: vlan 1, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 10:12:44.806865 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype IPv4 (0x0800), length 514: (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +disable vlan header stripping on VF1:: + + testpmd> vlan set strip off 0 + +check the vlan mode is set successfully:: + + testpmd> show port info 0 + + ********************* Infos for port 0 ********************* + ...... + VLAN offload: + strip off, filter on, extend off, qinq strip off + +repeat step 5, check the pkts can be received in VF and fwd to tester with outer vlan header:: + + testpmd> port 0/queue 10: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=522 - nb_segs=1 - RSS hash=0xc7b627aa - RSS queue=0xa - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=18 - inner_l2_len=4 - inner_l3_len=20 - Tail/CRC: 0x58585858/0x00000000 - Receive queue=0xa + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + port 0/queue 10: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=518 - nb_segs=1 - RSS hash=0xc7b627aa - RSS queue=0xa - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN L3_IPV4 - l2_len=18 - l3_len=20 - Tail/CRC: 0x58585858/0x00000000 - Receive queue=0xa + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + 09:49:08.295172 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 09:49:08.295239 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + + 09:49:41.043101 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 518: vlan 1, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 09:49:41.043166 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 518: vlan 1, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +Test case: IAVF DUAL VLAN header insertion +========================================== + +.. note:: + + according to dpdk commit d048a0aaae27809523969904c2f7b71fe3cc1bb6, + when the ice driver version newer than 1.8.9, avx512 tx path not support insert correct vlag tag(outer of QinQ) + +enable vlan filtering on port VF:: + + testpmd> vlan set filter on 0 + testpmd> rx_vlan add 11 0 + +set up test environment again:: + + echo 1 > /sys/bus/pci/devices/0000:18:00.0/sriov_numvfs + ip link set ens785f0 vf 0 mac 00:11:22:33:44:11 + ip link set dev ens785f0 vf 0 spoofchk off + ./usertools/dpdk-devbind.py -b vfio-pci 0000:18:01.0 + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:18:01.0 -- -i --rxq=16 --txq=16 + testpmd> set fwd mac + testpmd> set verbose 1 + +enable vlan header insertion on VF:: + + testpmd> port stop 0 + Stopping ports... + Checking link statuses... + Done + testpmd> tx_vlan set 0 1 + testpmd> port start 0 + +tester send pkt to VF:: + + sendp([Ether(dst="00:11:22:33:44:11",type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=11,type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + +check the pkts with vlan header can be received in tester:: + + testpmd> port 0/queue 13: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0xcaf4abfd - RSS queue=0xd - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0xd + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + port 0/queue 8: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=518 - nb_segs=1 - RSS hash=0x28099b78 - RSS queue=0x8 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN L3_IPV4 - l2_len=18 - l3_len=20 - Receive queue=0x8 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + 10:32:55.566801 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype IPv4 (0x0800), length 514: (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 10:32:55.566856 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 518: vlan 1, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + + 06:29:32.281896 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 518: vlan 11, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 06:29:32.281940 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 522: vlan 11, p 0, ethertype 802.1Q, vlan 1, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +disable vlan header insertion on VF1:: + + testpmd> port stop 0 + Stopping ports... + Checking link statuses... + Done + testpmd> tx_vlan reset 0 + testpmd> port start 0 + +repeat step 4, check the pkts without vlan tag can be received in tester:: + + testpmd> port 0/queue 9: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0xa63e8869 - RSS queue=0x9 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x9 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + port 0/queue 12: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=518 - nb_segs=1 - RSS hash=0x6f5533bc - RSS queue=0xc - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN L3_IPV4 - l2_len=18 - l3_len=20 - Receive queue=0xc + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + 10:34:40.070754 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype IPv4 (0x0800), length 514: (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 10:34:40.070824 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype IPv4 (0x0800), length 514: (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + + 06:36:57.641871 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 518: vlan 11, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 06:36:57.641909 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 518: vlan 11, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + + +Test case: Enable/disable AVF CRC stripping +=========================================== + +start testpmd with "--disable-crc-strip":: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 20-23 -n 4 -a 0000:18:01.0 -- -i --rxq=16 --txq=16 --disable-crc-strip + testpmd> set fwd mac + testpmd> set verbose 1 + +send pkts to VF:: + + sendp([Ether(dst="00:11:22:33:44:11",type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + +check VF1 receive this pkts with CRC:: + + testpmd> port 0/queue 0: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x890d9a70 - RSS queue=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 518 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 514 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + clear port stats all + +enable crc strip in testpmd:: + + testpmd> stop + testpmd> port stop 0 + testpmd> port config 0 rx_offload keep_crc off + testpmd> port start 0 + testpmd> start + +repeat step 2, check VF receive this pkts without CRC:: + + testpmd> port 0/queue 2: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0xa94c21d2 - RSS queue=0x2 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x2 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 514 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 514 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + clear port stats all + +disable crc strip in testpmd:: + + testpmd> stop + testpmd> port stop 0 + testpmd> port config 0 rx_offload keep_crc on + testpmd> port start 0 + testpmd> start + +repeat step 2, check VF1 receive this pkts with CRC:: + + testpmd> port 0/queue 0: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x79c10190 - RSS queue=0x0 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 518 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 514 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + clear port stats all + +re-launch testpmd without "--disable-crc-strip":: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 20-23 -n 4 -a 0000:18:01.0 -- -i --rxq=16 --txq=16 + testpmd> set fwd mac + testpmd> set verbose 1 + +repeat step 2, check VF receive this pkts without CRC:: + + testpmd> port 0/queue 2: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x898ada82 - RSS queue=0x2 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x2 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 514 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 514 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + + +Test case: IAVF CRC strip and Vlan strip co-exists +================================================== + +start testpmd with crc strip enable, vlan strip disable:: + + ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 20-23 -n 4 -a 0000:18:01.0 -- -i --rxq=16 --txq=16 + testpmd> set fwd mac + testpmd> set verbose 1 + testpmd> show port info 0 + ********************* Infos for port 0 ********************* + MAC address: 00:11:22:33:44:11 + Device name: 0000:18:01.1 + Driver name: net_iavf + ...... + VLAN offload: + strip off, filter off, extend off, qinq strip off + +request disable vlan strip:: + + testpmd> vlan set strip off 0 + +check the vlan strip still disable:: + + testpmd> show port info 0 + ********************* Infos for port 0 ********************* + MAC address: 00:11:22:33:44:11 + Device name: 0000:18:01.1 + Driver name: net_iavf + ...... + VLAN offload: + strip off, filter off, extend off, qinq strip off + +set vlan filter on and add rx_vlan 1:: + + testpmd> vlan set filter on 0 + testpmd> rx_vlan add 1 0 + testpmd> start + +send qinq pkts to check vlan strip is off, crc strip is on:: + + sendp([Ether(dst="00:11:22:33:44:11",type=0x8100)/Dot1Q(vlan=1,type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + + testpmd> port 0/queue 6: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=522 - nb_segs=1 - RSS hash=0xf6521426 - RSS queue=0x6 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=18 - inner_l2_len=4 - inner_l3_len=20 - Tail/CRC: 0x58585858/0x00000000 - Receive queue=0x6 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 522 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 522 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + + 09:07:45.863251 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 09:07:45.863340 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +request enable vlan strip:: + + testpmd> vlan set strip on 0 + +check the vlan strip enable successfully:: + + testpmd> show port info 0 + ********************* Infos for port 0 ********************* + MAC address: 00:11:22:33:44:11 + Device name: 0000:18:01.1 + Driver name: net_iavf + ...... + VLAN offload: + strip on, filter off, extend off, qinq strip off + +repeat step 5, send qinq pkts to check vlan strip is on(tx-4), crc strip is on:: + + testpmd> port 0/queue 6: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=518 - nb_segs=1 - RSS hash=0xf6521426 - RSS queue=0x6 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN L3_IPV4 - l2_len=18 - l3_len=20 - Tail/CRC: 0x58585858/0x00000000 - Receive queue=0x6 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 522 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 518 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + + 11:09:03.918907 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 11:09:03.918952 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 518: vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +request disable vlan strip:: + + testpmd> vlan set strip off 0 + +check the vlan strip disable successfully:: + + testpmd> show port info 0 + ********************* Infos for port 0 ********************* + MAC address: 00:11:22:33:44:11 + Device name: 0000:18:01.1 + Driver name: net_iavf + ...... + VLAN offload: + strip off, filter on, extend off, qinq strip off + +request disable crc strip:: + + testpmd> stop + testpmd> port stop 0 + testpmd> port config 0 rx_offload keep_crc on + testpmd> port start 0 + testpmd> start + +repeat step 5, send qinq pkts to check vlan strip is off, crc strip is off(rx+4):: + + testpmd> port 0/queue 7: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=522 - nb_segs=1 - RSS hash=0xbc8b1857 - RSS queue=0x7 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=18 - inner_l2_len=4 - inner_l3_len=20 - Tail/CRC: 0x58585858/0x6d870bf6 - Receive queue=0x7 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 526 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 522 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + + 10:23:57.350934 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 10:23:57.351008 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +request enable vlan strip:: + + testpmd> vlan set strip on 0 + iavf_execute_vf_cmd(): No response or return failure (-64) for cmd 54 + iavf_config_vlan_strip_v2(): fail to execute command VIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2 + rx_vlan_strip_set(port_pi=0, on=1) failed diag=-5 + +repeat step 5, send qinq pkts to check the vlan strip can not enable:: + + testpmd> port 0/queue 7: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=518 - nb_segs=1 - RSS hash=0xbc8b1857 - RSS queue=0x7 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN L3_IPV4 - l2_len=18 - l3_len=20 - Tail/CRC: 0x58585858/0x6d870bf6 - Receive queue=0x7 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 526 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 522 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + + 10:26:08.346936 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 10:26:08.347006 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +request disable vlan strip:: + + vlan set strip off 0 + +check the vlan strip still disable:: + + testpmd> show port info 0 + ********************* Infos for port 0 ********************* + MAC address: 00:11:22:33:44:11 + Device name: 0000:18:01.1 + Driver name: net_iavf + ...... + VLAN offload: + strip off, filter on, extend off, qinq strip off + +request enable crc strip:: + + testpmd> stop + testpmd> port stop 0 + testpmd> port config 0 rx_offload keep_crc off + testpmd> port start 0 + testpmd> start + +repeat step 5, send qinq pkts to check the crc strip enable successfully:: + + testpmd> port 0/queue 3: received 1 packets + src=00:00:00:00:00:00 - dst=00:11:22:33:44:11 - type=0x8100 - length=522 - nb_segs=1 - RSS hash=0x2b4ad203 - RSS queue=0x3 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=18 - inner_l2_len=4 - inner_l3_len=20 - Receive queue=0x3 + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + port 0/queue 3: sent 1 packets + src=00:11:22:33:44:11 - dst=02:00:00:00:00:00 - type=0x8100 - length=522 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=18 - inner_l2_len=4 - inner_l3_len=20 - Send queue=0x3 + ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + show port stats all + ######################## NIC statistics for port 0 ######################## + RX-packets: 1 RX-missed: 0 RX-bytes: 522 + RX-errors: 0 + RX-nombuf: 0 + TX-packets: 1 TX-errors: 0 TX-bytes: 522 + + Throughput (since last show) + Rx-pps: 0 Rx-bps: 0 + Tx-pps: 0 Tx-bps: 0 + ############################################################################ + + 10:29:19.995352 00:00:00:00:00:00 > 00:11:22:33:44:11, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + 10:29:19.995424 00:11:22:33:44:11 > 02:00:00:00:00:00, ethertype 802.1Q (0x8100), length 522: vlan 1, p 0, ethertype 802.1Q, vlan 2, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto Options (0), length 500) + 196.222.232.221 > 127.0.0.1: ip-proto-0 480 + +Test Case: vf queue start/stop +============================== + +This case support VF (Intel® Ethernet 700 Series/Intel® Ethernet 800 Series) + +Launch testpmd:: + + x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a 0000:af:01.0 -- -i --portmask=0x1 --port-topology=loop + +Run "set verbose 1" to set verbose + +Run "set fwd mac" to set fwd type + +Run "start" to start fwd package + +Start a packet capture on the tester in the background:: + + tcpdump -i ens7 'ether[12:2] != 0x88cc' -Q in -w /tmp/tester/sniff_ens7.pcap + +Start packet generator to transmit packets:: + + sendp([Ether(dst='3c:fd:fe:c1:0f:4c', src='00:00:20:00:00:00')/IP()/UDP()/Raw(load=b'XXXXXXXXXXXXXXXXXX')],iface="ens7",count=4,inter=0,verbose=False) + +Stop testpmd:: + + ---------------------- Forward statistics for port 0 ---------------------- + RX-packets: 4 RX-dropped: 0 RX-total: 4 + TX-packets: 0 TX-dropped: 0 TX-total: 0 + ---------------------------------------------------------------------------- + + ---------------------- Forward statistics for port 1 ---------------------- + RX-packets: 0 RX-dropped: 0 RX-total: 0 + TX-packets: 4 TX-dropped: 0 TX-total: 4 + ---------------------------------------------------------------------------- + + +Quit tcpdump and check tester port receive 4 packets + +Run "port 0 rxq 0 stop" to stop rxq 0 in port 0 + +Start packet generator to transmit and check tester port not receive packets + +Run "port 0 rxq 0 start" to start rxq 0 in port 0 + +Run "port 0 txq 0 stop" to stop txq 0 in port 0 + +Start packet generator to transmit and check tester port not receive packets and in testpmd it not has "port 0/queue +0: received 1 packets" print + +Stop testpmd:: + + ---------------------- Forward statistics for port 0 ---------------------- + RX-packets: 4 RX-dropped: 0 RX-total: 4 + TX-packets: 0 TX-dropped: 0 TX-total: 0 + ---------------------------------------------------------------------------- + + ---------------------- Forward statistics for port 1 ---------------------- + RX-packets: 0 RX-dropped: 0 RX-total: 0 + TX-packets: 0 TX-dropped: 0 TX-total: 0 + ---------------------------------------------------------------------------- + +Run "port 0 txq 0 start" to start txq 0 in port 0 + +Start packet generator to transmit and check tester port receive 4 packets and in testpmd it has "port 0/queue 0: +received 1 packets" print + +Stop testpmd:: + + ---------------------- Forward statistics for port 0 ---------------------- + RX-packets: 4 RX-dropped: 0 RX-total: 4 + TX-packets: 0 TX-dropped: 0 TX-total: 0 + ---------------------------------------------------------------------------- + + ---------------------- Forward statistics for port 1 ---------------------- + RX-packets: 0 RX-dropped: 0 RX-total: 0 + TX-packets: 4 TX-dropped: 0 TX-total: 4 + ---------------------------------------------------------------------------- +