From patchwork Wed Sep 7 13:54:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Jiale, SongX" X-Patchwork-Id: 116021 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 76F23A0550; Wed, 7 Sep 2022 07:40:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 70B2340A79; Wed, 7 Sep 2022 07:40:04 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id A7CF8400D6 for ; Wed, 7 Sep 2022 07:40:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1662529201; x=1694065201; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=PePR6+md4OQSx9mRJmhGV9p4dBXMMByjfpskaL0RUZI=; b=ZtbJ/oYfjaVDXDcZS6vz2ZqyYpNH4Kw4Zr2Nk8Wil2VFnY1romTDY7wr ibcdabNXJYxw0U6fRkstt1ZanWSIXdAlQaUtpVBfEj5DAYxEmmq32ccsr w+/i/yznKOpGVX8XfJ6CbZwyTmMD7p4Mfc31laVqdYgRMwNvIlijfoqIA 1p6WRi/M2w52cFcUJ3is4n2HQlZ7sdm5dNR339wKK/SOC7OH4MjT5sqpm G02rl9atnq3tiJlWkpIqe9HQo+UmNNyIuB7SMwRCt8L9xEE0gslBYRqsh i7QaAUSAi9geFd3fRCfNRyOxleC0GcxJA1Vob30m0DGZXf2Pjps6Lg0Co Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10462"; a="298100487" X-IronPort-AV: E=Sophos;i="5.93,295,1654585200"; d="scan'208";a="298100487" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Sep 2022 22:40:00 -0700 X-IronPort-AV: E=Sophos;i="5.93,295,1654585200"; d="scan'208";a="644469528" Received: from unknown (HELO cvl_tetser_105.icx.intel.com) ([10.239.252.94]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Sep 2022 22:39:59 -0700 From: Song Jiale To: dts@dpdk.org Cc: Song Jiale Subject: [dts] [PATCH V1 2/4] test_plans/ice_iavf_dual_vlan: split test suite Date: Wed, 7 Sep 2022 13:54:31 +0000 Message-Id: <20220907135433.16073-2-songx.jiale@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220907135433.16073-1-songx.jiale@intel.com> References: <20220907135433.16073-1-songx.jiale@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 split the test suite of ice_qinq into ice_dcf_dual_vlan and ice_iavf_dual_vlan. Signed-off-by: Song Jiale --- test_plans/ice_iavf_dual_vlan_test_plan.rst | 650 ++++++++++++++++++++ 1 file changed, 650 insertions(+) create mode 100644 test_plans/ice_iavf_dual_vlan_test_plan.rst diff --git a/test_plans/ice_iavf_dual_vlan_test_plan.rst b/test_plans/ice_iavf_dual_vlan_test_plan.rst new file mode 100644 index 00000000..a780797f --- /dev/null +++ b/test_plans/ice_iavf_dual_vlan_test_plan.rst @@ -0,0 +1,650 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2021 Intel Corporation + +============================== +ICE IAVF support QinQ protocol +============================== +DPDK support QinQ protocol in IntelĀ® Ethernet 800 Series as below requirements: +* AVF is able to configure inner VLAN filter when port vlan is enabled base on negotiation. +* AVF is able to configure outer VLAN (8100) if no port VLANis enabled to compatible with legacy mode. +this test plan contain 3 parts to cover above requirements: +* AVF VLAN offload for QinQ. + +Prerequisites +============= +1. Hardware: + IntelĀ® Ethernet 800 Series: E810-XXVDA4/E810-CQ + +2. Software: + dpdk: http://dpdk.org/git/dpdk + scapy: http://www.secdev.org/projects/scapy/ + +3. Copy specific ice package to /lib/firmware/updates/intel/ice/ddp/ice.pkg, + then load driver:: + + rmmod ice + insmod ice.ko + +4. Compile DPDK:: + + CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static x86_64-native-linuxapp-gcc + ninja -C x86_64-native-linuxapp-gcc -j 110 + +5. Get the pci device id of DUT, for example:: + + ./usertools/dpdk-devbind.py -s + + 0000:18:00.0 'Device 159b' if=ens785f0 drv=ice unused=vfio-pci + 0000:18:00.1 'Device 159b' if=ens785f1 drv=ice unused=vfio-pci + +6. Disable vlan prune flag:: + + ethtool --set-priv-flags ens785f0 vf-vlan-pruning off + +7. Generate 1 VF on PF0(not all the VFs are used):: + + echo 1 > /sys/bus/pci/devices/0000:18:00.0/sriov_numvfs + + ./usertools/dpdk-devbind.py -s + 0000:18:01.0 'Ethernet Adaptive Virtual Function 1889' if=ens785f0v0 drv=iavf unused=vfio-pci + +9. Set mac addr for VF:: + + ip link set ens785f0 vf 0 mac 00:11:22:33:44:11 + +10. Bind VFs to dpdk driver:: + + modprobe vfio-pci + ./usertools/dpdk-devbind.py -b vfio-pci 0000:18:01.0 0000:18:01.1 0000:18:01.2 0000:18:01.3 + +11. Disabel spoofchk for VF:: + + ip link set dev ens785f0 vf 0 spoofchk off + +12. For AVF QinQ test cases(1-5), recreate Generate 1 VFs on PF0, reconfig the VF then launch testpmd:: + + echo 0 > /sys/bus/pci/devices/0000:18:00.0/sriov_numvfs + ethtool --set-priv-flags ens785f0 vf-vlan-pruning on + 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 + testpmd> start + +Test case 1: Enable/Disable IAVF VLAN filtering +=============================================== + +1. enable vlan filtering on port VF:: + + testpmd> set fwd mac + Set mac packet forwarding mode + testpmd> vlan set filter on 0 + +2. 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 + +3. 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") + +4. check the pkts can't be received in VF. + +5. add rx_vlan in VF:: + + testpmd> rx_vlan add 1 0 + +6. repeat step 3, check the pkts can be received by VF and fwd to tester:: + + 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 0, ethertype 802.1Q, vlan 2, p 0, 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 0, ethertype 802.1Q, vlan 2, p 0, 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, + +7. 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)/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=11,type=0x0800)/IP(src="196.222.232.221")/("X"*480)], iface="ens786f0") + +8. check the pkts can not be received by VF. + +9. remove rx_vlan in VF1:: + + testpmd> rx_vlan rm 1 0 + +10. repeat step 3, check the pkts can not be received by VF. + + +Test case 2: Enable/Disable IAVF VLAN header stripping +====================================================== + +1. enable vlan filtering on port VF:: + + testpmd> vlan set filter on 0 + testpmd> rx_vlan add 1 0 + +2. 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 + +3. enable vlan header stripping on VF:: + + testpmd> vlan set strip on 0 + +4. 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 + +5. 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") + +6. 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 + +7. disable vlan header stripping on VF1:: + + testpmd> vlan set strip off 0 + +8. 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 + +9. 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 3: Enable/Disable IAVF VLAN header insertion +====================================================== + +1. disable vf-vlan-pruning flag:: + + echo 0 > /sys/bus/pci/devices/0000:18:00.0/sriov_numvfs + ethtool --set-priv-flags ens785f0 vf-vlan-pruning off + +2. 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 + +3. 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 + +4. 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") + +5. 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 + +6. 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 + +7. 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 4: Enable/disable AVF CRC stripping +============================================= + +1. 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 + +2. 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") + +3. 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 + +4. 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 + +5. 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 + +6. 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 + +7. 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 + +8. 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 + +9. 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 5: AVF CRC strip and Vlan strip co-exists +=================================================== + +1. 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 + +2. request disable vlan strip:: + + testpmd> vlan set strip off 0 + +3. 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 + +4. set vlan filter on and add rx_vlan 1:: + + testpmd> vlan set filter on 0 + testpmd> rx_vlan add 1 0 + testpmd> start + +5. 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 + +6. request enable vlan strip:: + + testpmd> vlan set strip on 0 + +7. 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 + +8. 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 + +9. request disable vlan strip:: + + testpmd> vlan set strip off 0 + +10. 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 + +11. 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 + +12. 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 + +13. 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 + +14. 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 + +15. request disable vlan strip:: + + vlan set strip off 0 + +16. 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 + +17. 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 + +18. 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 + + testpmd> 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