From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4B2EFA04F3; Fri, 3 Jan 2020 03:59:21 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 365961C02D; Fri, 3 Jan 2020 03:59:21 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 2B0341BF9C for ; Fri, 3 Jan 2020 03:59:18 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Jan 2020 18:59:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,389,1571727600"; d="scan'208";a="394205898" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga005.jf.intel.com with ESMTP; 02 Jan 2020 18:59:16 -0800 Received: from FMSMSX109.amr.corp.intel.com (10.18.116.9) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 2 Jan 2020 18:59:16 -0800 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx109.amr.corp.intel.com (10.18.116.9) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 2 Jan 2020 18:59:15 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.30]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.139]) with mapi id 14.03.0439.000; Fri, 3 Jan 2020 10:59:14 +0800 From: "Tu, Lijuan" To: "He, Zhiwei" , "dts@dpdk.org" CC: "He, Zhiwei" Thread-Topic: [dts] [PATCH V1] tests:add advanced rss feature script for CVL nic Thread-Index: AQHVv6n1dRA2F2v6GkamjDsFoZa0oqfYRDIg Date: Fri, 3 Jan 2020 02:59:13 +0000 Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BBA163F@SHSMSX101.ccr.corp.intel.com> References: <1577776465-65564-1-git-send-email-zhiwei.he@intel.com> In-Reply-To: <1577776465-65564-1-git-send-email-zhiwei.he@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH V1] tests:add advanced rss feature script for CVL nic X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" Applied yesterday. > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of zhiwei.he > Sent: Tuesday, December 31, 2019 3:14 PM > To: dts@dpdk.org > Cc: He, Zhiwei > Subject: [dts] [PATCH V1] tests:add advanced rss feature script for CVL n= ic >=20 > From: "zhiwei.he" >=20 > Signed-off-by: zhiwei.he > --- > tests/TestSuite_cvl_advanced_rss.py | 954 > ++++++++++++++++++++++++++++++++++++ > 1 file changed, 954 insertions(+) > create mode 100644 tests/TestSuite_cvl_advanced_rss.py >=20 > diff --git a/tests/TestSuite_cvl_advanced_rss.py > b/tests/TestSuite_cvl_advanced_rss.py > new file mode 100644 > index 0000000..70acd69 > --- /dev/null > +++ b/tests/TestSuite_cvl_advanced_rss.py > @@ -0,0 +1,954 @@ > +import json > +import time > +import re > +import packet > + > +from test_case import TestCase > +from pmd_output import PmdOutput > +from utils import BLUE, RED > +from collections import OrderedDict > +from packet import IncreaseIP, IncreaseIPv6 > +import rte_flow_common as rfc > + > +from socket import AF_INET6 > +from scapy.utils import struct, socket, wrpcap, rdpcap > +from scapy.layers.inet import Ether, IP, TCP, UDP > +from scapy.layers.inet6 import IPv6 > +from scapy.layers.l2 import Dot1Q > +from scapy.layers.sctp import SCTP, SCTPChunkData > +from nvgre import NVGRE > + > +tv_mac_ipv4_l3_src_only =3D { > + "name":"tv_mac_ipv4_l3_src_only", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-src-only end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%d")/(= "X"*48 > 0)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_src_only_frag =3D { > + "name":"tv_mac_ipv4_l3_src_only_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-src-only end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%= d", > frag=3D5)/("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_dst_only =3D { > + "name":"tv_mac_ipv4_l3_dst_only", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-dst-only end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(dst=3D"192.168.0.%= d", > frag=3D5)/("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_dst_only_frag =3D { > + "name":"tv_mac_ipv4_l3_dst_only_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-dst-only end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(dst=3D"192.168.0.%= d", > frag=3D5)/SCTP(sport=3D%d)/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_src_only_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_src_only_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-src-only end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%= d", > frag=3D5)/ICMP()/("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_dst_only_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_dst_only_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-dst-only end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(dst=3D"192.168.0.%= d", > frag=3D5)/ICMP()/("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_all =3D { > + "name":"tv_mac_ipv4_l3_all", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%= d", > dst=3D"192.168.0.%d")/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_all_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_all_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%= d", > dst=3D"192.168.0.%d")/ICMP()/("X"*480)' %(i, i+10) for i in range(0,100)]= , > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_all_nvgre_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_all_nvgre_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(sr= c=3D"19 > 2.168.0.%d", dst=3D"192.168.0.%d")/ICMP()/("X"*480)' %(i, i+10) for i in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_src_nvgre_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_src_nvgre_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-src-only end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(sr= c=3D"19 > 2.168.0.%d", frag=3D5)/ICMP()/("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_dst_nvgre_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_dst_nvgre_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-dst-only end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(ds= t=3D"19 > 2.168.0.%d", frag=3D5)/ICMP()/("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_src_vxlan_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_src_vxlan_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-src-only end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()= /IP(s > rc=3D"192.168.0.%d",frag=3D5)/ICMP()/("X"*480)' %i for i in range(0,100)]= , > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_dst_vxlan_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_dst_vxlan_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 l3-dst-only end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()= /IP(d > st=3D"192.168.0.%d",frag=3D5)/ICMP()/("X"*480)' %i for i in range(0,100)]= , > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_l3_all_vxlan_frag_icmp =3D { > + "name":"tv_mac_ipv4_l3_all_vxlan_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss types ipv4 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()= /IP(s > rc=3D"192.168.0.%d", dst=3D"192.168.0.%d", frag=3D5)/ICMP()/("X"*480)' %(= i, i+10) > for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_l3_src =3D { > + "name":"tv_mac_ipv6_l3_src", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss types ipv6 l3-src-only end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d")/("X"*480)' %i f= or i in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_l3_src_frag =3D { > + "name":"tv_mac_ipv6_l3_src_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss types ipv6 l3-src-only end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d")/IPv6ExtHdrFragm= ent() > /("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_l3_dst_frag =3D { > + "name":"tv_mac_ipv6_l3_dst_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss types ipv6 l3-dst-only end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(dst=3D"2001::%d")/IPv6ExtHdrFragm= ent() > /("X"*480)' %i for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_l3_all_frag_icmp =3D { > + "name":"tv_mac_ipv6_l3_all_frag_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss types ipv6 end key_len 0 queues end / end", > + "scapy_str": ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d= ", > dst=3D"2001::%d")/IPv6ExtHdrFragment()/ICMP()/("X"*480)' %(i, i+10) for i= in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_udp_l3src_l4dst =3D { > + "name":"tv_mac_ipv4_udp_l3src_l4dst", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= end > actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues e= nd / > end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%d")/U= DP(dp > ort=3D%d)/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_udp_all_frag =3D { > + "name":"tv_mac_ipv4_udp_all_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= end > actions rss types ipv4-udp end key_len 0 queues end / end", > + "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%= d", > dst=3D"192.168.0.%d")/UDP(sport=3D%d, dport=3D%d)/("X"*480)' %(i, i+10, > i+50,i+55) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_udp_nvgre =3D { > + "name":"tv_mac_ipv4_udp_nvgre", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= end > actions rss types ipv4-udp end key_len 0 queues end / end", > + > "scapy_str":'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src= =3DRan > dIP(),dst=3DRandIP())/UDP(sport=3DRandShort(),dport=3DRandShort())/("X"*4= 80)', > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(sr= c=3D"19 > 2.168.0.%d", dst=3D"192.168.0.%d")/UDP(sport=3D%d, dport=3D%d)/("X"*480)'= %(i, > i+10, i+50,i+55) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_udp_vxlan=3D { > + "name":"tv_mac_ipv4_udp_vxlan", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= end > actions rss types ipv4-udp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()= /IP(s > rc=3D"192.168.0.%d", dst=3D"192.168.0.%d")/UDP(sport=3D%d, > dport=3D%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_udp_all=3D { > + "name":"tv_mac_ipv6_udp_all", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp /= end > actions rss types ipv6-udp end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d")/UDP(sport=3D%d, > dport=3D%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > + > +tv_mac_ipv6_udp_all_frag=3D { > + "name":"tv_mac_ipv6_udp_all_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp /= end > actions rss types ipv6-udp end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d")/IPv6ExtHdrFragm= ent() > /UDP(sport=3D%d, dport=3D%d)/("X"*480)' %(i, i+10, i+50) for i in range(0= ,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_tcp_l3src_l4dst=3D { > + "name":"tv_mac_ipv4_tcp_l3src_l4dst", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp /= end > actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues e= nd / > end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%d")/T= CP(dp > ort=3D%d)/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_tcp_l3dst_l4src=3D { > + "name":"tv_mac_ipv4_tcp_l3dst_l4src", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp /= end > actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues e= nd / > end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(dst=3D"192.168.0.%d")/T= CP(spo > rt=3D%d)/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_tcp_all=3D { > + "name":"tv_mac_ipv4_tcp_all", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp /= end > actions rss types ipv4-tcp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%d",ds= t=3D"192 > .168.0.%d")/TCP(sport=3D%d,dport=3D%d)/("X"*480)' %(i, i+10, i+50,i+55) f= or i in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_tcp_all_nvgre_frag=3D { > + "name":"tv_mac_ipv4_tcp_all_nvgre_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp /= end > actions rss types ipv4-tcp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(sr= c=3D"19 > 2.168.0.%d", dst=3D"192.168.0.%d")/TCP(sport=3D%d, dport=3D%d)/("X"*480)'= %(i, > i+10, i+50,i+55) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_tcp_all_vxlan_frag=3D { > + "name":"tv_mac_ipv4_tcp_all_vxlan_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp /= end > actions rss types ipv4-tcp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()= /IP(s > rc=3D"192.168.0.%d", dst=3D"192.168.0.%d")/TCP(sport=3D%d, > dport=3D%d)/("X"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_tcp_all=3D { > + "name":"tv_mac_ipv6_tcp_all", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp /= end > actions rss types ipv6-tcp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d")/TCP= (sport > =3D%d, dport=3D%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_tcp_all_frag=3D { > + "name":"tv_mac_ipv6_tcp_all_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp /= end > actions rss types ipv6-tcp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d")/IPv= 6ExtHd > rFragment()/TCP(sport=3D%d, dport=3D%d)/("X"*480)' %(i, i+10, i+50) for i= in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_sctp_l3src_l4dst=3D { > + "name":"tv_mac_ipv4_sctp_l3src_l4dst", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp = / end > actions rss types ipv4-sctp l3-src-only l4-dst-only end key_len 0 queues = end / > end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%d")/S= CTP(dp > ort=3D%d)/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_sctp_all_frag=3D { > + "name":"tv_mac_ipv4_sctp_all_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp = / end > actions rss types ipv4-sctp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.%d",ds= t=3D"192 > .168.0.%d", frag=3D4)/SCTP(sport=3D%d,dport=3D%d)/("X"*480)' %(i, i+10,i+= 50,i+55) > for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_sctp_nvgre=3D { > + "name":"tv_mac_ipv4_sctp_nvgre", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp = / end > actions rss types ipv4-sctp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(sr= c=3D"19 > 2.168.0.%d",dst=3D"192.168.0.%d", > frag=3D4)/SCTP(sport=3D%d,dport=3D%d)/("X"*480)' %(i, i+10,i+50,i+55) for= i in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_sctp_vxlan=3D { > + "name":"tv_mac_ipv4_sctp_vxlan", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp = / end > actions rss types ipv4-sctp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()= /IP(s > rc=3D"192.168.0.%d",dst=3D"192.168.0.%d")/SCTP(sport=3D%d,dport=3D%d)/("X= "*480 > )' %(i, i+10,i+50,i+55) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_sctp_all=3D { > + "name":"tv_mac_ipv6_sctp_all", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp = / end > actions rss types ipv6-sctp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"2001::%d")/SCT= P(spor > t=3D%d, dport=3D%d)/("X"*480)' %(i, i+10, i+50) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_pppod_pppoe=3D { > + "name":"tv_mac_ipv4_pppod_pppoe", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv= 4 / > end actions rss types ipv4 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/PPPoE(sessionid=3D%d)/PPP(= proto > =3D0x21)/IP(src=3D"192.168.0.%d")/UDP(sport=3D%d)/("X"*480)' %(i, i+10,i+= 50) for i > in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_pppoe_all=3D { > + "name":"tv_mac_ipv4_pppoe_all", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv= 4 / > end actions rss types ipv4 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/PPPoE(sessionid=3D%d)/PPP(= proto > =3D0x21)/IP(src=3D"192.168.0.%d",dst=3D"192.168.0.%d")/("X"*480)' %(i, i+= 10,i+50) > for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_pppoe_udp=3D { > + "name":"tv_mac_ipv4_pppoe_udp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv= 4 / > udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len = 0 > queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/PPPoE(sessionid=3D%d)/PPP(= proto > =3D0x21)/IP(src=3D"192.168.0.%d")/UDP(dport=3D%d)/("X"*480)' %(i, i+10,i+= 50) for > i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_pppoe_tcp=3D { > + "name":"tv_mac_ipv4_pppoe_tcp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv= 4 / > tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/PPPoE(sessionid=3D%d)/PPP(= proto > =3D0x21)/IP(src=3D"192.168.0.%d")/TCP(sport=3D%d)/("X"*480)' %(i, i+10,i+= 50) for i > in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_pppoe_sctp=3D { > + "name":"tv_mac_ipv4_pppoe_sctp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv= 4 / > sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/PPPoE(sessionid=3D%d)/PPP(= proto > =3D0x21)/IP(src=3D"192.168.0.%d")/SCTP(dport=3D%d)/("X"*480)' %(i, i+10,i= +50) for > i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_pppoe_icmp=3D { > + "name":"tv_mac_ipv4_pppoe_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv= 4 / > end actions rss types ipv4 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/PPPoE(sessionid=3D%d)/PPP(= proto > =3D0x21)/IP(src=3D"192.168.0.%d")/ICMP()/("X"*480)' %(i, i+10) for i in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_gtpu_icmp=3D { > + "name":"tv_mac_ipv4_gtpu_icmp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= gtpu / > gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 que= ues > end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP(dport=3D2152)/GTP= _U_H > eader(teid=3D0x123456)/IP(src=3D"192.168.0.%d")/ICMP()/("X"*480)' %i for = i in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_gtpu_udp_frag=3D { > + "name":"tv_mac_ipv4_gtpu_udp_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= gtpu / > gtp_psc / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues en= d / > end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP(dport=3D2152)/GTP= _U_H > eader(teid=3D0x123456)/IP(src=3D"192.168.0.%d", > frag=3D6)/UDP(dport=3D%d)/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_gtpu_ipv4_frag=3D { > + "name":"tv_mac_ipv4_gtpu_ipv4_frag", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= gtpu / > gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 que= ues > end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP(dport=3D2152)/GTP= _U_H > eader(teid=3D0x123456)/IP(src=3D"192.168.0.%d", frag=3D6)/("X"*480)' %i f= or i in > range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_gtpu_tcp=3D { > + "name":"tv_mac_ipv4_gtpu_tcp", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= gtpu / > gtp_psc / ipv4 / tcp / end actions rss types ipv4 l3-src-only end key_len= 0 > queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP(dport=3D2152)/GTP= _U_H > eader(teid=3D0x123456)/IP(src=3D"192.168.0.%d", > frag=3D6)/TCP(dport=3D%d)/("X"*480)' %(i, i+10) for i in range(0,100)], > + "check_func": rfc.check_packets_of_each_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tvs_mac_rss_ipv4 =3D [ > + tv_mac_ipv4_l3_src_only, > + tv_mac_ipv4_l3_src_only_frag, > + tv_mac_ipv4_l3_dst_only, > + tv_mac_ipv4_l3_all > + ] > + > +tvs_mac_rss_ipv4_port =3D [ > + tv_mac_ipv4_l3_src_only_frag_icmp, > + tv_mac_ipv4_l3_dst_only_frag_icmp, > + tv_mac_ipv4_l3_all_frag_icmp, > + tv_mac_ipv4_udp_l3src_l4dst, > + tv_mac_ipv4_udp_all_frag, > + tv_mac_ipv4_tcp_l3src_l4dst, > + tv_mac_ipv4_tcp_l3dst_l4src, > + tv_mac_ipv4_tcp_all, > + tv_mac_ipv4_sctp_l3src_l4dst, > + tv_mac_ipv4_sctp_all_frag > + ] > + > +tvs_mac_rss_ipv4_nvgre =3D [ > + tv_mac_ipv4_l3_all_nvgre_frag_icmp, > + tv_mac_ipv4_l3_src_nvgre_frag_icmp, > + tv_mac_ipv4_l3_dst_nvgre_frag_icmp, > + tv_mac_ipv4_tcp_all_nvgre_frag, > + tv_mac_ipv4_sctp_nvgre > + ] > +tvs_mac_rss_ipv4_vxlan =3D[ > + tv_mac_ipv4_l3_src_vxlan_frag_icmp, > + tv_mac_ipv4_l3_dst_vxlan_frag_icmp, > + tv_mac_ipv4_l3_all_vxlan_frag_icmp, > + tv_mac_ipv4_tcp_all_vxlan_frag, > + tv_mac_ipv4_sctp_vxlan, > + tv_mac_ipv4_udp_vxlan > + ] > + > +tvs_mac_rss_ipv6 =3D[ > + tv_mac_ipv6_l3_src, > + tv_mac_ipv6_l3_src_frag, > + tv_mac_ipv6_l3_dst_frag, > + tv_mac_ipv6_l3_all_frag_icmp, > + tv_mac_ipv6_udp_all, > + tv_mac_ipv6_udp_all_frag, > + tv_mac_ipv6_tcp_all, > + tv_mac_ipv6_tcp_all_frag, > + tv_mac_ipv6_sctp_all > +] > + > +tvs_mac_rss_ipv4_pppoe =3D[ > + tv_mac_ipv4_pppod_pppoe, > + tv_mac_ipv4_pppoe_all, > + tv_mac_ipv4_pppoe_tcp, > + tv_mac_ipv4_pppoe_sctp, > + tv_mac_ipv4_pppoe_icmp > + ] > +tvs_mac_rss_ipv4_gtp =3D[ > + tv_mac_ipv4_gtpu_icmp, > + tv_mac_ipv4_gtpu_udp_frag, > + tv_mac_ipv4_gtpu_ipv4_frag, > + tv_mac_ipv4_gtpu_tcp > + ] > + > +tv_mac_ipv4_symmetric_toeplitz =3D { > + "name": "tv_mac_ipv4_symmetric_toeplitz", > + "rte_flow_pattern": "flow create 0 ingress pattern eth / ipv4 / end = actions > rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.1",dst=3D"192.168.= 0.2")/("X > "*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.2",dst=3D"192.168.0= .1")/("X" > *480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port": 0} > +} > + > +tv_mac_ipv4_frag_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_frag_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.1",dst= =3D"192.1 > 68.0.2",frag=3D6)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.2",dst=3D"192.168.0= .1",frag=3D > 6)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_udp_frag_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_udp_frag_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= end > actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues e= nd > / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.1",dst= =3D"192.1 > 68.0.2",frag=3D6)/UDP(sport=3D20,dport=3D22)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.2",dst=3D"192.168.0= .1",frag=3D > 6)/UDP(sport=3D22,dport=3D20)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_udp_frag_symmetric_toeplitz_all=3D { > + "name":"tv_mac_ipv4_udp_frag_symmetric_toeplitz_all", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= end > actions rss func symmetric_toeplitz types ipv4-udp l3-src-only l3-dst-onl= y l4- > src-only l4-dst-only end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"1.1.4.1",dst=3D"= 2.2.2.3")/ > UDP(sport=3D20,dport=3D22)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"2.2.2.3",dst=3D"1.1.4.1")/UDP= (sport=3D22 > ,dport=3D20)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_tcp_frag_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_tcp_frag_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp /= end > actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues e= nd > / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.1",dst= =3D"192.1 > 68.0.2",frag=3D6)/TCP(sport=3D20,dport=3D22)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.2",dst=3D"192.168.0= .1",frag=3D > 6)/TCP(sport=3D22,dport=3D20)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_sctp_frag_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_sctp_frag_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp = / end > actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues = end > / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.1",dst= =3D"192.1 > 68.0.2",frag=3D6)/SCTP(sport=3D20,dport=3D22)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.2",dst=3D"192.168.0= .1",frag=3D > 6)/SCTP(sport=3D22,dport=3D20)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_icmp_frag_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_icmp_frag_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.1",dst= =3D"192.1 > 68.0.2",frag=3D6)/ICMP()/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP(src=3D"192.168.0.2",dst=3D"192.168.0= .1",frag=3D > 6)/ICMP()/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", > + > "scapy_str":['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"ABAB:910B:6666= :3457 > :8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/( > "X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"CDCD:910A:2222:5498:8475:11= 11: > 3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:1800:2929")/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_frag_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_frag_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"CDCD:910A:2222:5498:8475:1= 111: > 3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:1800:2929")/IPv6ExtHdrFr > agment()/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"ABAB:910B:6666:3457:8295:33= 33:1 > 800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFra > gment()/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_udp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_udp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp /= end > actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"CDCD:910A:2222:5498:8475:1= 111: > 3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=3D3 > 0,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"ABAB:910B:6666:3457:8295:33= 33:1 > 800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=3D32 > ,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_tcp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_tcp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp /= end > actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"CDCD:910A:2222:5498:8475:1= 111: > 3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=3D3= 0 > ,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"ABAB:910B:6666:3457:8295:33= 33:1 > 800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=3D32= , > dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_sctp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_sctp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp = / end > actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues = end > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"CDCD:910A:2222:5498:8475:1= 111: > 3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:1800:2929")/SCTP(sport=3D= 3 > 0,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"ABAB:910B:6666:3457:8295:33= 33:1 > 800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=3D3 > 2,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_icmp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_icmp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss func symmetric_toeplitz types ipv6 end key_len 0 queues end key_len 0 > queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"CDCD:910A:2222:5498:8475:1= 111: > 3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"* > 480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6(src=3D"ABAB:910B:6666:3457:8295:33= 33:1 > 800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*4 > 80)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_nvgre_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_nvgre_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end ", > + "scapy_str": > ['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.8",dst=3D"192.168.0.69= ",frag=3D > 6)/("X"*480)', > + > 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.69",dst=3D"192.168.0.8"= ,frag=3D6 > )/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_vxlan_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_vxlan_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"1= 92.168 > .0.1",dst=3D"192.168.0.2",frag=3D6)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"19= 2.168. > 0.2",dst=3D"192.168.0.1",frag=3D6)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_nvgre_udp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_nvgre_udp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp /= end > actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst=3D"68:05:ca:a3:= 28:94" > )/IP(src=3D"8.8.8.1",dst=3D"5.6.8.2")/UDP(sport=3D20,dport=3D22)/("X"*480= )', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst=3D"68:05:ca:a3:2= 8:94") > /IP(src=3D"5.6.8.2",dst=3D"8.8.8.1")/UDP(sport=3D22,dport=3D20)/("X"*480)= '], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / sctp = / end > actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues = end > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst=3D"68:05:ca:a3:= 28:94" > )/IP(src=3D"8.8.8.1",dst=3D"5.6.8.2")/SCTP(sport=3D20,dport=3D22)/("X"*48= 0)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst=3D"68:05:ca:a3:2= 8:94") > /IP(src=3D"5.6.8.2",dst=3D"8.8.8.1")/SCTP(sport=3D22,dport=3D20)/("X"*480= )'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / tcp /= end > actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst=3D"68:05:ca:a3:= 28:94" > )/IP(src=3D"8.8.8.1",dst=3D"5.6.8.2")/TCP(sport=3D20,dport=3D22)/("X"*480= )', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst=3D"68:05:ca:a3:2= 8:94") > /IP(src=3D"5.6.8.2",dst=3D"8.8.8.1")/TCP(sport=3D22,dport=3D20)/("X"*480)= '], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / end a= ctions > rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src=3D"8.8.8.1= ",dst=3D" > 5.6.8.2")/ICMP()/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src=3D"5.6.8.2"= ,dst=3D"8. > 8.8.1")/ICMP()/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_nvgre_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_nvgre_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"CDCD:= 910A: > 2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:180 > 0:2929")/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"ABAB:9= 10B:6 > 666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900 > :2020")/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_nvgre_udp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_nvgre_udp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp /= end > actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"CDCD:= 910A: > 2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:180 > 0:2929")/UDP(sport=3D30,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"ABAB:9= 10B:6 > 666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900 > :2020")/UDP(sport=3D32,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp /= end > actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"CDCD:= 910A: > 2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:180 > 0:2929")/TCP(sport=3D30,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"ABAB:9= 10B:6 > 666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900 > :2020")/TCP(sport=3D32,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp = / end > actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues = end > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"CDCD:= 910A: > 2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:180 > 0:2929")/SCTP(sport=3D30,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"ABAB:9= 10B:6 > 666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900 > :2020")/SCTP(sport=3D32,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"CDCD:= 910A: > 2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295:3333:180 > 0:2929")/ICMP()/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src=3D"ABAB:9= 10B:6 > 666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1111:3900 > :2020")/ICMP()/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_vxlan_udp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_vxlan_udp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp /= end > actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"CD > CD:910A:2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295: > 3333:1800:2929")/UDP(sport=3D30,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"ABA > B:910B:6666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1 > 111:3900:2020")/UDP(sport=3D32,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_vxlan_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_vxlan_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IPv6(src=3D= "CDCD > :910A:2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295:333 > 3:1800:2929")/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IPv6(src=3D"= ABAB: > 910B:6666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:111 > 1:3900:2020")/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / tcp /= end > actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues e= nd > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"CD > CD:910A:2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295: > 3333:1800:2929")/TCP(sport=3D30,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"ABA > B:910B:6666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1 > 111:3900:2020")/TCP(sport=3D32,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_vxlan_sctp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_vxlan_sctp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / sctp = / end > actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues = end > / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"CD > CD:910A:2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295: > 3333:1800:2929")/SCTP(sport=3D30,dport=3D32)/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"ABA > B:910B:6666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1 > 111:3900:2020")/SCTP(sport=3D32,dport=3D30)/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz=3D { > + "name":"tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / end a= ctions > rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end", > + "scapy_str": > ['Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"CD > CD:910A:2222:5498:8475:1111:3900:2020",dst=3D"ABAB:910B:6666:3457:8295: > 3333:1800:2929")/ICMP()/("X"*480)', > + > 'Ether(dst=3D"68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src= =3D"ABA > B:910B:6666:3457:8295:3333:1800:2929",dst=3D"CDCD:910A:2222:5498:8475:1 > 111:3900:2020")/ICMP()/("X"*480)'], > + "check_func": rfc.check_symmetric_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv4_simple_xor=3D { > + "name":"tv_mac_ipv4_simple_xor", > + "rte_flow_pattern":"flow create 0 ingress pattern end actions rss fu= nc > simple_xor key_len 0 queues end / end", > + "scapy_str": ['Ether()/IP("src=3D"1.1.4.1",dst=3D"2.2.2.3")/("X"*480= )', > + 'Ether()/IP("src=3D"2.2.2.3",dst=3D"1.1.4.1")/("X"*480= )'], > + "check_func": rfc.check_simplexor_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tv_mac_ipv6_simple_xor=3D { > + "name":"tv_mac_ipv6_sctp_simple_xor", > + "rte_flow_pattern":"flow create 0 ingress pattern end actions rss fu= nc > simple_xor key_len 0 queues end / end", > + "scapy_str": > ['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",dst=3D"ABA= B: > 910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"*480)', > + > 'Ether()/IPv6(src=3D"ABAB:910B:6666:3457:8295:3333:1800:2929",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)'], > + "check_func": rfc.check_simplexor_queue, > + "check_func_param": {"expect_port":0} > +} > + > +tvs_mac_rss_ipv4_symmetric_toeplitz =3D [ > + tv_mac_ipv4_symmetric_toeplitz, > + tv_mac_ipv4_frag_symmetric_toeplitz, > + tv_mac_ipv4_udp_frag_symmetric_toeplitz, > + tv_mac_ipv4_udp_frag_symmetric_toeplitz_all, > + tv_mac_ipv4_tcp_frag_symmetric_toeplitz, > + tv_mac_ipv4_sctp_frag_symmetric_toeplitz, > + tv_mac_ipv4_icmp_frag_symmetric_toeplitz > + ] > + > +tvs_mac_rss_ipv6_symmetric_toeplitz =3D [ > + tv_mac_ipv6_symmetric_toeplitz, > + tv_mac_ipv6_frag_symmetric_toeplitz, > + tv_mac_ipv6_udp_symmetric_toeplitz, > + tv_mac_ipv6_tcp_symmetric_toeplitz, > + tv_mac_ipv6_sctp_symmetric_toeplitz, > + tv_mac_ipv6_icmp_symmetric_toeplitz > + ] > + > +tvs_mac_rss_ipv4_symmetric_toeplitz_nvgre =3D [ > + tv_mac_ipv4_nvgre_symmetric_toeplitz, > + tv_mac_ipv4_nvgre_udp_symmetric_toeplitz, > + tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz, > + tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz, > + tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz > + ] > + > +tvs_mac_rss_ipv6_symmetric_toeplitz_nvgre =3D [ > + tv_mac_ipv6_nvgre_symmetric_toeplitz, > + tv_mac_ipv6_nvgre_udp_symmetric_toeplitz, > + tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz, > + tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz, > + tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz > + ] > + > +tvs_mac_rss_symmetric_toeplitz_vxlan =3D [ > + tv_mac_ipv4_vxlan_symmetric_toeplitz, > + tv_mac_ipv6_vxlan_udp_symmetric_toeplitz, > + tv_mac_ipv6_vxlan_symmetric_toeplitz, > + tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz, > + tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz > + ] > + > +tvs_mac_rss_simple_xor =3D [ > + tv_mac_ipv4_simple_xor, > + tv_mac_ipv6_simple_xor > + ] > + > + > +test_results =3D OrderedDict() > + > +class AdvancedRSSTest(TestCase): > + > + def set_up_all(self): > + """ > + Run at the start of each test suite. > + Generic filter Prerequistites > + """ > + self.dut_ports =3D self.dut.get_ports(self.nic) > + # Verify that enough ports are available > + self.verify(len(self.dut_ports) >=3D 1, "Insufficient ports") > + #self.cores =3D "1S/8C/1T" > + self.pmdout =3D PmdOutput(self.dut) > + > + localPort =3D self.tester.get_local_port(self.dut_ports[0]) > + self.__tx_iface =3D self.tester.get_interface(localPort) > + self.pf_interface =3D self.dut.ports_info[self.dut_ports[0]]['in= tf'] > + self.pf_mac =3D self.dut.get_mac_address(0) > + self.pf_pci =3D self.dut.ports_info[self.dut_ports[0]]['pci'] > + self.verify(self.nic in ["columbiaville_25g","columbiaville_100g= "], "%s > nic not support ethertype filter" % self.nic) > + > + def set_up(self): > + """ > + Run before each test case. > + """ > + self.dut.kill_all() > + > + def tear_down(self): > + """ > + Run after each test case. > + """ > + self.dut.kill_all() > + > + > + def tear_down_all(self): > + """ > + Run after each test suite. > + """ > + self.dut.kill_all() > + > + > + def create_testpmd_command(self): > + """ > + Create testpmd command for non-pipeline mode > + """ > + #Prepare testpmd EAL and parameters > + all_eal_param =3D self.dut.create_eal_parameters() > + print all_eal_param #print eal parameters > + command =3D "./%s/app/testpmd %s -- -i %s" % (self.dut.target, > all_eal_param, "--rxq=3D64 --txq=3D64") > + return command > + > + > + def create_testpmd_command_pipeline_mode(self): > + """ > + Create testpmd command for pipeline mode > + """ > + #Prepare testpmd EAL and parameters > + all_eal_param =3D self.dut.create_eal_parameters(ports=3D[0], > port_options=3D{0:"pipeline-mode-support=3D1"}) > + print all_eal_param #print eal parameters > + command =3D "./%s/app/testpmd %s -- -i %s" % (self.dut.target, > all_eal_param, "--rxq=3D64 --txq=3D64") > + return command > + > + > + def get_rule_number(self,outstring): > + """ > + get the rule number. > + """ > + result_scanner =3D r'Flow rule #(\d+) created' > + scanner =3D re.compile(result_scanner, re.DOTALL) > + m =3D scanner.search(outstring) > + rule_num =3D int(m.group(1)) > + return rule_num > + > + def _rte_flow_validate_pattern(self, test_vectors, command, is_vxlan= ): > + > + global test_results > + out =3D self.dut.send_expect(command, "testpmd> ", 120) > + self.logger.debug(out) #print the log > + self.dut.send_expect("port config 0 rss-hash-key ipv4 > 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd > 1234abcd1234abcd1234abcd1234abcd1234abcd", "testpmd> ", 15) > + if is_vxlan: > + self.dut.send_expect("rx_vxlan_port add 4789 0", "testpmd> "= , 15) > + self.dut.send_expect("set fwd rxonly", "testpmd> ", 15) > + self.dut.send_expect("set verbose 1", "testpmd> ", 15) > + > + overall_result =3D True > + test_results.clear() > + self.count =3D 1 > + self.mac_count=3D100 > + for tv in test_vectors: > + out =3D self.dut.send_expect(tv["rte_flow_pattern"], "testpm= d> ", 15) > #create a rule > + print out > + self.dut.send_expect("start", "testpmd> ", 15) > + time.sleep(2) > + tv["check_func_param"]["expect_port"] =3D self.dut_ports[0] > + print "expect_port is", self.dut_ports[0] > + > + #send a packet > + if isinstance(tv["scapy_str"], list): > + pkt =3D packet.Packet() > + pkt.update_pkt(tv["scapy_str"]) > + pkt.send_pkt(self.tester, tx_port=3Dself.__tx_iface, cou= nt=3Dself.count) > + else: > + for index in range(10): > + pkt =3D Packet(pkt_str=3Dtv["scapy_str"]) > + pkt.send_pkt(self.tester, tx_port=3Dself.__tx_iface, > count=3Dself.count) > + print "packet:" > + print tv["scapy_str"] > + > + out =3D self.dut.send_expect("stop", "testpmd> ",60) > + print out > + log_msg =3D tv["check_func"](out) > + print log_msg > + rfc.check_rx_tx_packets_match(out, self.mac_count) > + > + self.dut.send_expect("flow flush %d" % self.dut_ports[0], "testp= md> ") > + self.dut.send_expect("quit", "#") > + > + self.verify(overall_result =3D=3D True, "Some test case failed."= ) > + > + > + def test_advance_rss_ipv4(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv4, command, is_vx= lan > =3D True) > + > + def test_advance_rss_ipv4_port(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_port, command, > is_vxlan =3D True) > + > + def test_advance_rss_ipv4_nvgre(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_nvgre, command, > is_vxlan =3D True) > + > + def test_advance_rss_ipv4_vxlan(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_vxlan, command, > is_vxlan =3D True) > + > + def test_advance_rss_ipv6(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv6, command, is_vx= lan > =3D True) > + > + def test_advance_rss_ipv4_pppoe(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_pppoe, command, > is_vxlan =3D True) > + > + def test_advance_rss_ipv4_gtp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_gtp, command, > is_vxlan =3D True) > + > + def test_rss_ipv4_symetric_toeplitz(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_symmetric_toep= litz, > command, is_vxlan =3D True) > + > + def test_rss_ipv6_symetric_toeplitz(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_ipv6_symmetric_toep= litz, > command, is_vxlan =3D True) > + > + def test_rss_ipv4_symetric_toeplitz_nvgre(self): > + command =3D self.create_testpmd_command() > + > self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_symmetric_toeplitz_nvgre= , > command, is_vxlan =3D True) > + > + def test_rss_ipv6_symetric_toeplitz_nvgre(self): > + command =3D self.create_testpmd_command() > + > self._rte_flow_validate_pattern(tvs_mac_rss_ipv6_symmetric_toeplitz_nvgre= , > command, is_vxlan =3D True) > + > + def test_rss_symetric_toeplitz_vxlan(self): > + command =3D self.create_testpmd_command() > + > self._rte_flow_validate_pattern(tvs_mac_rss_symmetric_toeplitz_vxlan, > command, is_vxlan =3D True) > + > + def test_rss_simple_xor(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_rss_simple_xor, command= , > is_vxlan =3D True) > + > + > -- > 1.8.3.1