test suite reviews and discussions
 help / color / mirror / Atom feed
From: Hailin Xu <hailinx.xu@intel.com>
To: dts@dpdk.org
Cc: Hailin Xu <hailinx.xu@intel.com>
Subject: [dts] [PATCH v1] test_plans:add iavf_flexible_descriptor
Date: Sat, 20 Feb 2021 15:29:19 +0800	[thread overview]
Message-ID: <1613806159-5175-1-git-send-email-hailinx.xu@intel.com> (raw)

add test plan: iavf_flexible_descriptor.

Signed-off-by: Hailin Xu <hailinx.xu@intel.com>
---
 .../iavf_flexible_descriptor_test_plan.rst    | 601 ++++++++++++++++++
 1 file changed, 601 insertions(+)
 create mode 100644 test_plans/iavf_flexible_descriptor_test_plan.rst

diff --git a/test_plans/iavf_flexible_descriptor_test_plan.rst b/test_plans/iavf_flexible_descriptor_test_plan.rst
new file mode 100644
index 00000000..216ee826
--- /dev/null
+++ b/test_plans/iavf_flexible_descriptor_test_plan.rst
@@ -0,0 +1,601 @@
+.. Copyright (c) <2021> 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.
+
+========================
+Flexible RXd Test Suites
+========================
+
+
+Description
+===========
+
+The test suite will cover the flexible RX descriptor on Intel E810
+network interface card.
+
+Prerequisites
+=============
+
+Copy correct ``ice.pkg`` into ``/usr/lib/firmware/intel/ice/ddp/``, \
+For the test cases, comms package is expected.
+
+Prepare test toplogoy, in the test case, it requires
+
+- 1 Intel E810 interface
+- 1 network interface for sending test packet,
+  which could be connect to the E810 interface
+- Directly connect the 2 interfaces
+
+Patch testpmd for dumping flexible fields from RXD::
+
+  diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
+  index 7e9c7bdd6..b75b90a9c 100644
+  --- a/app/test-pmd/meson.build
+  +++ b/app/test-pmd/meson.build
+  @@ -49,6 +49,9 @@ endif
+  if dpdk_conf.has('RTE_NET_I40E')
+        deps += 'net_i40e'
+   endif
+  +if dpdk_conf.has('RTE_NET_ICE')
+  +       deps += ['net_ice', 'net_iavf']
+  +endif
+   if dpdk_conf.has('RTE_NET_IXGBE')
+          deps += 'net_ixgbe'
+   endif
+
+
+  diff --git a/app/test-pmd/util.c b/app/test-pmd/util.c
+  index a9e431a8b..3447a9b43 100644
+  --- a/app/test-pmd/util.c
+  +++ b/app/test-pmd/util.c
+  @@ -12,6 +12,7 @@
+   #include <rte_vxlan.h>
+   #include <rte_ethdev.h>
+   #include <rte_flow.h>
+  +#include <rte_pmd_iavf.h>
+
+   #include "testpmd.h"
+
+  @@ -151,6 +152,7 @@ dump_pkt_burst(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[],
+                            eth_type, (unsigned int) mb->pkt_len,
+                            (int)mb->nb_segs);
+                  ol_flags = mb->ol_flags;
+  +                rte_pmd_ifd_dump_proto_xtr_metadata(mb);
+                  if (ol_flags & PKT_RX_RSS_HASH) {
+                          MKDUMPSTR(print_buf, buf_size, cur_len,
+                                    " - RSS hash=0x%x",
+
+
+Compile DPDK and testpmd::
+
+  CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib x86_64-native-linuxapp-gcc
+  ninja -C x86_64-native-linuxapp-gcc -j 70
+
+Generate 1 VF on each PF and set mac address for each VF::
+
+  echo 1 > /sys/bus/pci/devices/0000:af:00.0/sriov_numvfs
+  ip link set ens802f0 vf 0 mac 00:11:22:33:44:55
+
+Bind the vf interface to vfio-pci driver::
+
+  ./usertools/dpdk-devbind.py -b vfio-pci af:01.0
+
+
+Test Case 01: Check single VLAN fields in RXD (802.1Q)
+======================================================
+
+Launch testpmd by::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=vlan -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+  testpmd>set verbose 1
+  testpmd>set fwd io
+  testpmd>start
+
+check RXDID value correct::
+
+   expected: RXDID[17]
+
+Please change the core setting (-l option) and port's PCI (-w option) \
+by your DUT environment
+
+Send a packet with VLAN tag from test network interface::
+
+  scapy #launch scapy in shell
+
+  #In scapy interactive UI
+  p = Ether(src="68:05:ca:a3:1b:28", dst="00:11:22:33:44:55", type=0x9100)/Dot1Q(prio=1,vlan=23)/IP()/UDP()/DNS()
+  sendp(p, iface='ens192f0', count=1)
+
+Please notice
+
+- Change ethernet source address with your test network interface's address
+- Make sure the ethernet destination addres is NOT your real E810 interface's address
+
+Check the output in testpmd, **ctag=1:0:23** is expected, which is consistent with VLAN tag set in test packet::
+
+  testpmd> port 0/queue 28: received 1 packets
+  src=68:05:CA:A3:1B:28 - dst=00:11:22:33:44:55 - type=0x8100 - length=60 - nb_segs=1 - RSS hash=0xf31f649c - RSS queue=0x1c - Protocol Extraction:[0x0000:0x2017],vlan,stag=0:0:0,ctag=1:0:23  - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_UDP  - sw ptype: L2_ETHER_VLAN L3_IPV4 L4_UDP  - l2_len=18 - l3_len=20 - l4_len=8 - Receive queue=0x1c
+  ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN
+
+
+
+Test Case 02: Check single VLAN fields in RXD (802.1ad)
+=======================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=vlan -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[17]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55', type=0x88A8)/Dot1Q(prio=1,vlan=23)/IP()/UDP()/DNS()
+
+Expected output in testpmd::
+
+  stag=1:0:23
+
+
+Test Case 03: Check double VLAN fields in RXD (802.1Q) only 1 VLAN tag
+======================================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=vlan -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[17]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55', type=0x9100)/Dot1Q(prio=1,vlan=23)/IP()/UDP()/DNS()
+
+Expected output in testpmd::
+
+  stag=1:0:23
+
+Test Case 04: Check double VLAN fields in RXD (802.1Q) 2 VLAN tags
+==================================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=vlan -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[17]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55', type=0x9100)/Dot1Q(prio=1,vlan=23)/Dot1Q(prio=4,vlan=56)/IP()/UDP()/DNS()
+
+Expected output in testpmd::
+
+  stag=1:0:23
+  ctag=4:0:56
+
+
+Test Case 05: Check double VLAN fields in RXD (802.1ad)
+=======================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=vlan -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[17]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55', type=0x88A8)/Dot1Q(prio=1,vlan=23)/Dot1Q(prio=4,vlan=56)/IP()/UDP()/DNS()
+
+Expected output in testpmd::
+
+  stag=1:0:23
+  ctag=4:0:56
+
+
+Test Case 06: Check IPv4 fields in RXD
+======================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=ipv4 -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[18]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55')/IP(tos=23,ttl=98)/UDP()/Raw(load='XXXXXXXXXX')
+
+Expected output in testpmd::
+
+  ver=4
+  hdrlen=5
+  tos=23
+  ttl=98
+  proto=17
+
+
+Test Case 07: Check IPv6 fields in RXD
+=======================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=ipv6 -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[19]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55')/IPv6(tc=12,hlim=34,fl=0x98765)/UDP()/Raw(load='XXXXXXXXXX')
+
+Expected output in testpmd::
+
+  ver=6
+  tc=12
+  flow_hi4=0x9
+  nexthdr=17
+  hoplimit=34
+
+
+Test Case 08: Check IPv6 flow field in RXD
+=======================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=ipv6_flow -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[20]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55')/IPv6(tc=12,hlim=34,fl=0x98765)/UDP()/Raw(load='XXXXXXXXXX')
+
+Expected output in testpmd::
+
+  ver=6
+  tc=12
+  flow=0x98765
+
+
+Test Case 09: Check TCP fields in IPv4 in RXD
+=======================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=tcp -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[21]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55')/IP()/TCP(flags='AS')/Raw(load='XXXXXXXXXX')
+
+Expected output in testpmd::
+
+  doff=5
+  flags=AS
+
+
+Test Case 10: Check TCP fields in IPv6 in RXD
+=======================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=tcp -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+check RXDID value correct::
+
+   expected: RXDID[21]
+
+Test packet::
+
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55')/IPv6()/TCP(flags='S')/Raw(load='XXXXXXXXXX')
+
+Expected output in testpmd::
+
+  doff=5
+  flags=S
+
+
+Test Case 11: Check IPv4, IPv6, TCP fields in RXD on specific queues
+====================================================================
+
+Test steps are same to ``Test Case 01``, just change the launch command of testpmd, test packet and expected output
+
+Launch testpmd command::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr='[(2):ipv4,(3):ipv6,(4):tcp]' -- -i --rxq=16 --txq=16 --portmask=0x1
+
+check RXDID value correct::
+
+   expected: RXDID[16], RXDID[18], RXDID[19], RXDID[21]
+
+Create generic flow on NIC::
+
+  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 23 ttl is 98 / end actions queue index 2 / end
+  flow create 0 ingress pattern eth / ipv6 src is 2001::3 dst is 2001::4 tc is 12 / end actions queue index 3 / end
+  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / tcp src is 25 dst is 23 / end actions queue index 4 / end
+
+Test packet::
+
+  p = Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.1",dst="192.168.0.2",tos=23,ttl=98)/UDP()/Raw(load='XXXXXXXXXX')
+  p = Ether(src='68:05:ca:a3:1b:28', dst='00:11:22:33:44:55')/IPv6(src='2001::3', dst='2001::4', tc=12,hlim=34,fl=0x98765)/UDP()/Raw(load='XXXXXXXXXX')
+  p = Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.1',dst='192.168.0.2')/TCP(flags='AS', dport=23, sport=25)/Raw(load='XXXXXXXXXX')
+
+Expected output in testpmd::
+
+  Receive queue=0x2
+  ver=4
+  hdrlen=5
+  tos=23
+  ttl=98
+  proto=17
+
+  Receive queue=0x3
+  ver=6
+  tc=12
+  flow_hi4=0x9
+  nexthdr=17
+  hoplimit=34
+
+  Receive queue=0x4
+  doff=5
+  flags=AS
+
+
+Test Case 12: Check testpmd use different parameters start
+==========================================================
+Test steps are same to ``Test Case 01``, use different "flex_desc" parameters the launch command of testpmd, check RXDID value.
+
+use error parameter Launch testpmd::
+
+  ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=vxlan -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+testpmd can't started, check "iavf_lookup_flex_desc_type(): wrong flex_desc type, it should be: vlan|ipv4|ipv6|ipv6_flow|tcp|ovs|ip_offset" in testpmd output.
+
+don't use parameter launch testpmd::
+
+   ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0 -- -i --rxq=4 --txq=4 --portmask=0x1 --nb-cores=2
+
+testpmd started, check "iavf_configure_queues(): request RXDID[16] in Queue[0]" in testpmd output
+
+
+MPLS TEST
+===================
+
+testpmd::
+   ./usertools/dpdk-devbind.py -b vfio-pci 0000:af:01.0
+   ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 6-9 -n 4 -w af:01.0,proto_xtr=ip_offset -- -i  --portmask=0x1 --nb-cores=2
+   testpmd> set verbose 1
+   testpmd> start
+check RXDID value correct::
+	expected: RXDID[25]
+
+scapy prepare:
+===================
+about scapy:
+from scapy.contrib.mpls import MPLS
+
+Test Case 13: Check ip offset of ip
+===================================
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=18 # now value is 14, have a bug of it
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=18 # now value is 14, have a bug of it
+
+Test Case 14: check ip offset with vlan
+=======================================
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=22
+
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=22
+
+Test Case 15: check offset with 2 vlan tag
+==========================================
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+
+Test Case 16: check ip offset with multi MPLS
+=============================================
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Offset:ip_offset=18 # now value is 14, have a bug of it
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=22
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=30
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=34
+
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Offset:ip_offset=18 # now value is 14, have a bug of it
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=22
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=30
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=34
+
+Test Case 17: check ip offset with multi MPLS with vlan tag
+===========================================================
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=22
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=30
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=34
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=38
+
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Offset:ip_offset=22
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=30
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=34
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=38
+
+Test Case 18: check ip offset with multi MPLS with 2 vlan tag
+=============================================================
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=30
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=34
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=38
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IP(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=42
+
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=26
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=30
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=34
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=38
+
+	sendp(Ether(dst="00:11:22:33:44:55",type=0x88A8)/Dot1Q(type=0x8100)/Dot1Q(type=0x8847)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=0)/MPLS(s=1)/IPv6(), iface="ens192f0", count=1)
+	Expected output in testpmd:
+	Protocol Offset:ip_offset=42
-- 
2.17.1


                 reply	other threads:[~2021-02-20  7:40 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1613806159-5175-1-git-send-email-hailinx.xu@intel.com \
    --to=hailinx.xu@intel.com \
    --cc=dts@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).