Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/116622/?format=api
https://patches.dpdk.org/api/patches/116622/?format=api", "web_url": "https://patches.dpdk.org/project/dts/patch/20220922142950.398902-5-hongbox.li@intel.com/", "project": { "id": 3, "url": "https://patches.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<20220922142950.398902-5-hongbox.li@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20220922142950.398902-5-hongbox.li@intel.com", "date": "2022-09-22T14:29:48", "name": "[V1,5/7] tests/vxlan:Separated performance cases", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "7ae8e7b056bd2d331148d0911b29607a5a4a5b8e", "submitter": { "id": 2804, "url": "https://patches.dpdk.org/api/people/2804/?format=api", "name": "Li, HongboX", "email": "hongbox.li@intel.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dts/patch/20220922142950.398902-5-hongbox.li@intel.com/mbox/", "series": [ { "id": 24769, "url": "https://patches.dpdk.org/api/series/24769/?format=api", "web_url": "https://patches.dpdk.org/project/dts/list/?series=24769", "date": "2022-09-22T14:29:44", "name": "[V1,1/7] tests/efd:Separated performance cases", "version": 1, "mbox": "https://patches.dpdk.org/series/24769/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/116622/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/116622/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dts-bounces@dpdk.org>", "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id BE0ABA0540;\n\tThu, 22 Sep 2022 08:25:22 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 93A424067C;\n\tThu, 22 Sep 2022 08:25:22 +0200 (CEST)", "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by mails.dpdk.org (Postfix) with ESMTP id 6487540156\n for <dts@dpdk.org>; Thu, 22 Sep 2022 08:25:20 +0200 (CEST)", "from fmsmga005.fm.intel.com ([10.253.24.32])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 21 Sep 2022 23:25:19 -0700", "from unknown (HELO localhost.localdomain) ([10.239.252.92])\n by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 21 Sep 2022 23:18:24 -0700" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1663827920; x=1695363920;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=5Rd18D2eBu6WAV0nGozwIILCn/1zhthDuRJmVdHaHFM=;\n b=FLKZfu3E5Pzjflx9QtUmpFexDfz2fEXWYlvxHa7MjtJrtJ8C4UmTRkUU\n imLJZ9OoYWeNyjD9YquPVZBr8Hujpqg4wpCdkuvBr4K1l37e+PEl1i1Zv\n 2DEQUTS0lMxwLVggEmSK73WXNELknarybfQZgE+w5SsQacwCjtrt31RAC\n Ogk//m6fuT5qws8RDHMf9nle+L66RYbU+J2JM4e8dv4gGA+cfqVXxIh3X\n tqifQuxjOj4qKSz3VEDrK3p5yZzbrvp991bep3XplWEJRAuM8IMC1tr0Q\n 1U7ZBQ8ktM8jAdVP79AlCVHS3a9y8Z5dLOF7qWNJtcb++JzRrWE2hnXvJ A==;", "X-IronPort-AV": [ "E=McAfee;i=\"6500,9779,10477\"; a=\"298927707\"", "E=Sophos;i=\"5.93,335,1654585200\"; d=\"scan'208\";a=\"298927707\"", "E=Sophos;i=\"5.93,335,1654585200\"; d=\"scan'208\";a=\"948467586\"" ], "From": "Hongbo Li <hongbox.li@intel.com>", "To": "dts@dpdk.org", "Cc": "Hongbo Li <hongbox.li@intel.com>", "Subject": "[dts][PATCH V1 5/7] tests/vxlan:Separated performance cases", "Date": "Thu, 22 Sep 2022 14:29:48 +0000", "Message-Id": "<20220922142950.398902-5-hongbox.li@intel.com>", "X-Mailer": "git-send-email 2.25.1", "In-Reply-To": "<20220922142950.398902-1-hongbox.li@intel.com>", "References": "<20220922142950.398902-1-hongbox.li@intel.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org" }, "content": "Separated performance cases\n\nSigned-off-by: Hongbo Li <hongbox.li@intel.com>\n---\n test_plans/perf_vxlan_test_plan.rst | 84 ++++\n test_plans/vxlan_test_plan.rst | 57 ---\n tests/TestSuite_perf_vxlan.py | 691 ++++++++++++++++++++++++++++\n tests/TestSuite_vxlan.py | 213 ---------\n 4 files changed, 775 insertions(+), 270 deletions(-)\n create mode 100644 test_plans/perf_vxlan_test_plan.rst\n create mode 100644 tests/TestSuite_perf_vxlan.py", "diff": "diff --git a/test_plans/perf_vxlan_test_plan.rst b/test_plans/perf_vxlan_test_plan.rst\nnew file mode 100644\nindex 00000000..18347a94\n--- /dev/null\n+++ b/test_plans/perf_vxlan_test_plan.rst\n@@ -0,0 +1,84 @@\n+.. SPDX-License-Identifier: BSD-3-Clause\n+ Copyright(c) 2014-2017 Intel Corporation\n+\n+======================================\n+Intel® Ethernet 700 Series Vxlan Tests\n+======================================\n+Cloud providers build virtual network overlays over existing network\n+infrastructure that provide tenant isolation and scaling. Tunneling\n+layers added to the packets carry the virtual networking frames over\n+existing Layer 2 and IP networks. Conceptually, this is similar to\n+creating virtual private networks over the Internet. Intel® Ethernet\n+700 Series will process these tunneling layers by the hardware.\n+\n+This document provides test plan for Intel® Ethernet 700 Series vxlan\n+packet detecting, checksum computing and filtering.\n+\n+Prerequisites\n+=============\n+1x Intel® X710 (Intel® Ethernet 700 Series) NICs (2x 40GbE full duplex\n+optical ports per NIC) plugged into the available PCIe Gen3 8-lane slot.\n+\n+1x Intel® XL710-DA4 (Eagle Fountain) (1x 10GbE full duplex optical ports per NIC)\n+plugged into the available PCIe Gen3 8-lane slot.\n+\n+DUT board must be two sockets system and each cpu have more than 8 lcores.\n+\n+\n+Test Case: Vxlan Checksum Offload Performance Benchmarking\n+==========================================================\n+The throughput is measured for each of these cases for vxlan tx checksum\n+offload of \"all by software\", \"L3 offload by hardware\", \"L4 offload by\n+hardware\", \"l3&l4 offload by hardware\".\n+\n+The results are printed in the following table:\n+\n++----------------+--------+--------+------------+\n+| Calculate Type | Queues | Mpps | % linerate |\n++================+========+========+============+\n+| SOFTWARE ALL | Single | | |\n++----------------+--------+--------+------------+\n+| HW L4 | Single | | |\n++----------------+--------+--------+------------+\n+| HW L3&L4 | Single | | |\n++----------------+--------+--------+------------+\n+| SOFTWARE ALL | Multi | | |\n++----------------+--------+--------+------------+\n+| HW L4 | Multi | | |\n++----------------+--------+--------+------------+\n+| HW L3&L4 | Multi | | |\n++----------------+--------+--------+------------+\n+\n+Test Case: Vxlan Tunnel filter Performance Benchmarking\n+=======================================================\n+The throughput is measured for different Vxlan tunnel filter types.\n+Queue single mean there's only one flow and forwarded to the first queue.\n+Queue multi mean there are two flows and configure to different queues.\n+\n++--------+------------------+--------+--------+------------+\n+| Packet | Filter | Queue | Mpps | % linerate |\n++========+==================+========+========+============+\n+| Normal | None | Single | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | None | Single | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac-ivlan | Single | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac-ivlan-tenid | Single | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac-tenid | Single | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac | Single | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | omac-imac-tenid | Single | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac-ivlan | Multi | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac-ivlan-tenid | Multi | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac-tenid | Multi | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | imac | Multi | | |\n++--------+------------------+--------+--------+------------+\n+| Vxlan | omac-imac-tenid | Multi | | |\n++--------+------------------+--------+--------+------------+\ndiff --git a/test_plans/vxlan_test_plan.rst b/test_plans/vxlan_test_plan.rst\nindex d59cee31..96fdea0e 100644\n--- a/test_plans/vxlan_test_plan.rst\n+++ b/test_plans/vxlan_test_plan.rst\n@@ -307,60 +307,3 @@ Add Cloud filter with invalid vni \"16777216\" will be failed.\n \n Add Cloud filter with invalid queue id \"64\" will be failed.\n \n-Test Case: Vxlan Checksum Offload Performance Benchmarking\n-==========================================================\n-The throughput is measured for each of these cases for vxlan tx checksum\n-offload of \"all by software\", \"L3 offload by hardware\", \"L4 offload by\n-hardware\", \"l3&l4 offload by hardware\".\n-\n-The results are printed in the following table:\n-\n-+----------------+--------+--------+------------+\n-| Calculate Type | Queues | Mpps | % linerate |\n-+================+========+========+============+\n-| SOFTWARE ALL | Single | | |\n-+----------------+--------+--------+------------+\n-| HW L4 | Single | | |\n-+----------------+--------+--------+------------+\n-| HW L3&L4 | Single | | |\n-+----------------+--------+--------+------------+\n-| SOFTWARE ALL | Multi | | |\n-+----------------+--------+--------+------------+\n-| HW L4 | Multi | | |\n-+----------------+--------+--------+------------+\n-| HW L3&L4 | Multi | | |\n-+----------------+--------+--------+------------+\n-\n-Test Case: Vxlan Tunnel filter Performance Benchmarking\n-=======================================================\n-The throughput is measured for different Vxlan tunnel filter types.\n-Queue single mean there's only one flow and forwarded to the first queue.\n-Queue multi mean there are two flows and configure to different queues.\n-\n-+--------+------------------+--------+--------+------------+\n-| Packet | Filter | Queue | Mpps | % linerate |\n-+========+==================+========+========+============+\n-| Normal | None | Single | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | None | Single | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac-ivlan | Single | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac-ivlan-tenid | Single | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac-tenid | Single | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac | Single | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | omac-imac-tenid | Single | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac-ivlan | Multi | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac-ivlan-tenid | Multi | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac-tenid | Multi | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | imac | Multi | | |\n-+--------+------------------+--------+--------+------------+\n-| Vxlan | omac-imac-tenid | Multi | | |\n-+--------+------------------+--------+--------+------------+\ndiff --git a/tests/TestSuite_perf_vxlan.py b/tests/TestSuite_perf_vxlan.py\nnew file mode 100644\nindex 00000000..4bd50c21\n--- /dev/null\n+++ b/tests/TestSuite_perf_vxlan.py\n@@ -0,0 +1,691 @@\n+import os\n+import re\n+import string\n+import time\n+from random import randint\n+\n+from scapy.config import conf\n+from scapy.layers.inet import IP, TCP, UDP, Ether\n+from scapy.layers.inet6 import IPv6\n+from scapy.layers.l2 import Dot1Q\n+from scapy.layers.sctp import SCTP, SCTPChunkData\n+from scapy.layers.vxlan import VXLAN\n+from scapy.route import *\n+from scapy.sendrecv import sniff\n+from scapy.utils import rdpcap, wrpcap\n+\n+import framework.packet as packet\n+import framework.utils as utils\n+from framework.packet import IncreaseIP, IncreaseIPv6\n+from framework.pktgen import PacketGeneratorHelper\n+from framework.pmd_output import PmdOutput\n+from framework.settings import FOLDERS, HEADER_SIZE\n+from framework.test_case import TestCase\n+\n+VXLAN_PORT = 4789\n+PACKET_LEN = 128\n+MAX_TXQ_RXQ = 4\n+BIDIRECT = True\n+\n+\n+class VxlanTestConfig(object):\n+\n+ \"\"\"\n+ Module for config/create/transmit vxlan packet\n+ \"\"\"\n+\n+ def __init__(self, test_case, **kwargs):\n+ self.test_case = test_case\n+ self.init()\n+ for name in kwargs:\n+ setattr(self, name, kwargs[name])\n+ self.pkt_obj = packet.Packet()\n+\n+ def init(self):\n+ self.packets_config()\n+\n+ def packets_config(self):\n+ \"\"\"\n+ Default vxlan packet format\n+ \"\"\"\n+ self.pcap_file = packet.TMP_PATH + \"vxlan.pcap\"\n+ self.capture_file = packet.TMP_PATH + \"vxlan_capture.pcap\"\n+ self.outer_mac_src = \"00:00:10:00:00:00\"\n+ self.outer_mac_dst = \"11:22:33:44:55:66\"\n+ self.outer_vlan = \"N/A\"\n+ self.outer_ip_src = \"192.168.1.1\"\n+ self.outer_ip_dst = \"192.168.1.2\"\n+ self.outer_ip_invalid = 0\n+ self.outer_ip6_src = \"N/A\"\n+ self.outer_ip6_dst = \"N/A\"\n+ self.outer_ip6_invalid = 0\n+ self.outer_udp_src = 63\n+ self.outer_udp_dst = VXLAN_PORT\n+ self.outer_udp_invalid = 0\n+ self.vni = 1\n+ self.inner_mac_src = \"00:00:20:00:00:00\"\n+ self.inner_mac_dst = \"00:00:20:00:00:01\"\n+ self.inner_vlan = \"N/A\"\n+ self.inner_ip_src = \"192.168.2.1\"\n+ self.inner_ip_dst = \"192.168.2.2\"\n+ self.inner_ip_invalid = 0\n+ self.inner_ip6_src = \"N/A\"\n+ self.inner_ip6_dst = \"N/A\"\n+ self.inner_ip6_invalid = 0\n+ self.payload_size = 18\n+ self.inner_l4_type = \"UDP\"\n+ self.inner_l4_invalid = 0\n+\n+ def packet_type(self):\n+ \"\"\"\n+ Return vxlan packet type\n+ \"\"\"\n+ if self.outer_udp_dst != VXLAN_PORT:\n+ if self.outer_ip6_src != \"N/A\":\n+ return \"L3_IPV6_EXT_UNKNOWN\"\n+ else:\n+ return \"L3_IPV4_EXT_UNKNOWN\"\n+ else:\n+ if self.inner_ip6_src != \"N/A\":\n+ return \"L3_IPV6_EXT_UNKNOWN\"\n+ else:\n+ return \"L3_IPV4_EXT_UNKNOWN\"\n+\n+ def create_pcap(self):\n+ \"\"\"\n+ Create pcap file and copy it to tester if configured\n+ Return scapy packet object for later usage\n+ \"\"\"\n+ if self.inner_l4_type == \"SCTP\":\n+ self.inner_payload = SCTPChunkData(data=\"X\" * 16)\n+ else:\n+ self.inner_payload = \"X\" * self.payload_size\n+\n+ if self.inner_l4_type == \"TCP\":\n+ l4_pro = TCP()\n+ elif self.inner_l4_type == \"SCTP\":\n+ l4_pro = SCTP()\n+ else:\n+ l4_pro = UDP()\n+\n+ if self.inner_ip6_src != \"N/A\":\n+ inner_l3 = IPv6()\n+ else:\n+ inner_l3 = IP()\n+\n+ if self.inner_vlan != \"N/A\":\n+ inner = Ether() / Dot1Q() / inner_l3 / l4_pro / self.inner_payload\n+ inner[Dot1Q].vlan = self.inner_vlan\n+ else:\n+ inner = Ether() / inner_l3 / l4_pro / self.inner_payload\n+\n+ if self.inner_ip6_src != \"N/A\":\n+ inner[inner_l3.name].src = self.inner_ip6_src\n+ inner[inner_l3.name].dst = self.inner_ip6_dst\n+ else:\n+ inner[inner_l3.name].src = self.inner_ip_src\n+ inner[inner_l3.name].dst = self.inner_ip_dst\n+\n+ if self.inner_ip_invalid == 1:\n+ inner[inner_l3.name].chksum = 0\n+\n+ # when udp checksum is 0, will skip checksum\n+ if self.inner_l4_invalid == 1:\n+ if self.inner_l4_type == \"SCTP\":\n+ inner[SCTP].chksum = 0\n+ else:\n+ inner[self.inner_l4_type].chksum = 1\n+\n+ inner[Ether].src = self.inner_mac_src\n+ inner[Ether].dst = self.inner_mac_dst\n+\n+ if self.outer_ip6_src != \"N/A\":\n+ outer_l3 = IPv6()\n+ else:\n+ outer_l3 = IP()\n+\n+ if self.outer_vlan != \"N/A\":\n+ outer = Ether() / Dot1Q() / outer_l3 / UDP()\n+ outer[Dot1Q].vlan = self.outer_vlan\n+ else:\n+ outer = Ether() / outer_l3 / UDP()\n+\n+ outer[Ether].src = self.outer_mac_src\n+ outer[Ether].dst = self.outer_mac_dst\n+\n+ if self.outer_ip6_src != \"N/A\":\n+ outer[outer_l3.name].src = self.outer_ip6_src\n+ outer[outer_l3.name].dst = self.outer_ip6_dst\n+ else:\n+ outer[outer_l3.name].src = self.outer_ip_src\n+ outer[outer_l3.name].dst = self.outer_ip_dst\n+\n+ outer[UDP].sport = self.outer_udp_src\n+ outer[UDP].dport = self.outer_udp_dst\n+\n+ if self.outer_ip_invalid == 1:\n+ outer[outer_l3.name].chksum = 0\n+ # when udp checksum is 0, will skip checksum\n+ if self.outer_udp_invalid == 1:\n+ outer[UDP].chksum = 1\n+\n+ if self.outer_udp_dst == VXLAN_PORT:\n+ self.pkt = outer / VXLAN(vni=self.vni) / inner\n+ else:\n+ self.pkt = outer / (\"X\" * self.payload_size)\n+\n+ wrpcap(self.pcap_file, self.pkt)\n+\n+ return self.pkt\n+\n+ def get_chksums(self, pkt=None):\n+ \"\"\"\n+ get chksum values of Outer and Inner packet L3&L4\n+ Skip outer udp for it will be calculated by software\n+ \"\"\"\n+ chk_sums = {}\n+ if pkt is None:\n+ pkt = rdpcap(self.pcap_file)\n+ else:\n+ pkt = pkt.pktgen.pkt\n+\n+ time.sleep(1)\n+ if pkt[0].guess_payload_class(pkt[0]).name == \"802.1Q\":\n+ payload = pkt[0][Dot1Q]\n+ else:\n+ payload = pkt[0]\n+\n+ if payload.guess_payload_class(payload).name == \"IP\":\n+ chk_sums[\"outer_ip\"] = hex(payload[IP].chksum)\n+\n+ if pkt[0].haslayer(\"VXLAN\") == 1:\n+ inner = pkt[0][\"VXLAN\"]\n+ if inner.haslayer(IP) == 1:\n+ chk_sums[\"inner_ip\"] = hex(inner[IP].chksum)\n+ if inner[IP].proto == 6:\n+ chk_sums[\"inner_tcp\"] = hex(inner[TCP].chksum)\n+ if inner[IP].proto == 17:\n+ chk_sums[\"inner_udp\"] = hex(inner[UDP].chksum)\n+ if inner[IP].proto == 132:\n+ chk_sums[\"inner_sctp\"] = hex(inner[SCTP].chksum)\n+ elif inner.haslayer(IPv6) == 1:\n+ if inner[IPv6].nh == 6:\n+ chk_sums[\"inner_tcp\"] = hex(inner[TCP].chksum)\n+ if inner[IPv6].nh == 17:\n+ chk_sums[\"inner_udp\"] = hex(inner[UDP].chksum)\n+ # scapy can not get sctp checksum, so extracted manually\n+ if inner[IPv6].nh == 59:\n+ load = str(inner[IPv6].payload)\n+ chk_sums[\"inner_sctp\"] = hex(\n+ (ord(load[8]) << 24)\n+ | (ord(load[9]) << 16)\n+ | (ord(load[10]) << 8)\n+ | (ord(load[11]))\n+ )\n+\n+ return chk_sums\n+\n+ def send_pcap(self, iface=\"\"):\n+ \"\"\"\n+ Send vxlan pcap file by iface\n+ \"\"\"\n+ del self.pkt_obj.pktgen.pkts[:]\n+ self.pkt_obj.pktgen.assign_pkt(self.pkt)\n+ self.pkt_obj.pktgen.update_pkts()\n+ self.pkt_obj.send_pkt(crb=self.test_case.tester, tx_port=iface)\n+\n+ def pcap_len(self):\n+ \"\"\"\n+ Return length of pcap packet, will plus 4 bytes crc\n+ \"\"\"\n+ # add four bytes crc\n+ return len(self.pkt) + 4\n+\n+\n+class TestVxlan(TestCase):\n+ def set_up_all(self):\n+ \"\"\"\n+ vxlan Prerequisites\n+ \"\"\"\n+ # this feature only enable in Intel® Ethernet 700 Series now\n+ if self.nic in [\n+ \"I40E_10G-SFP_XL710\",\n+ \"I40E_40G-QSFP_A\",\n+ \"I40E_40G-QSFP_B\",\n+ \"I40E_25G-25G_SFP28\",\n+ \"I40E_10G-SFP_X722\",\n+ \"I40E_10G-10G_BASE_T_X722\",\n+ \"I40E_10G-10G_BASE_T_BC\",\n+ ]:\n+ self.compile_switch = \"CONFIG_RTE_LIBRTE_I40E_INC_VECTOR\"\n+ elif self.nic in [\"IXGBE_10G-X550T\", \"IXGBE_10G-X550EM_X_10G_T\"]:\n+ self.compile_switch = \"CONFIG_RTE_IXGBE_INC_VECTOR\"\n+ elif self.nic in [\"ICE_25G-E810C_SFP\", \"ICE_100G-E810C_QSFP\"]:\n+ print(\"Intel® Ethernet 700 Series support default none VECTOR\")\n+ else:\n+ self.verify(False, \"%s not support this vxlan\" % self.nic)\n+ # Based on h/w type, choose how many ports to use\n+ ports = self.dut.get_ports()\n+\n+ # Verify that enough ports are available\n+ self.verify(len(ports) >= 2, \"Insufficient ports for testing\")\n+ global valports\n+ valports = [_ for _ in ports if self.tester.get_local_port(_) != -1]\n+\n+ self.portMask = utils.create_mask(valports[:2])\n+\n+ # Verify that enough threads are available\n+ netdev = self.dut.ports_info[ports[0]][\"port\"]\n+ self.ports_socket = netdev.socket\n+\n+ # start testpmd\n+ self.pmdout = PmdOutput(self.dut)\n+\n+ # init port config\n+ self.dut_port = valports[0]\n+ self.dut_port_mac = self.dut.get_mac_address(self.dut_port)\n+ tester_port = self.tester.get_local_port(self.dut_port)\n+ self.tester_iface = self.tester.get_interface(tester_port)\n+ self.recv_port = valports[1]\n+ tester_recv_port = self.tester.get_local_port(self.recv_port)\n+ self.recv_iface = self.tester.get_interface(tester_recv_port)\n+\n+ # invalid parameter\n+ self.invalid_mac = \"00:00:00:00:01\"\n+ self.invalid_ip = \"192.168.1.256\"\n+ self.invalid_vlan = 4097\n+ self.invalid_queue = 64\n+ self.path = self.dut.apps_name[\"test-pmd\"]\n+\n+ # vxlan payload length for performance test\n+ # inner packet not contain crc, should need add four\n+ self.vxlan_payload = (\n+ PACKET_LEN\n+ - HEADER_SIZE[\"eth\"]\n+ - HEADER_SIZE[\"ip\"]\n+ - HEADER_SIZE[\"udp\"]\n+ - HEADER_SIZE[\"vxlan\"]\n+ - HEADER_SIZE[\"eth\"]\n+ - HEADER_SIZE[\"ip\"]\n+ - HEADER_SIZE[\"udp\"]\n+ + 4\n+ )\n+\n+ self.cal_type = [\n+ {\n+ \"Type\": \"SOFTWARE ALL\",\n+ \"csum\": [],\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Type\": \"HW L4\",\n+ \"csum\": [\"udp\"],\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Type\": \"HW L3&L4\",\n+ \"csum\": [\"ip\", \"udp\", \"outer-ip\"],\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Type\": \"SOFTWARE ALL\",\n+ \"csum\": [],\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Type\": \"HW L4\",\n+ \"csum\": [\"udp\"],\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Type\": \"HW L3&L4\",\n+ \"csum\": [\"ip\", \"udp\", \"outer-ip\"],\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ ]\n+\n+ self.chksum_header = [\"Calculate Type\"]\n+ self.chksum_header.append(\"Queues\")\n+ self.chksum_header.append(\"Mpps\")\n+ self.chksum_header.append(\"% linerate\")\n+\n+ # tunnel filter performance test\n+ self.default_vlan = 1\n+ self.tunnel_multiqueue = 2\n+ self.tunnel_header = [\"Packet\", \"Filter\", \"Queue\", \"Mpps\", \"% linerate\"]\n+ self.tunnel_perf = [\n+ {\n+ \"Packet\": \"Normal\",\n+ \"tunnel_filter\": \"None\",\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"None\",\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac-ivlan\",\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac-ivlan-tenid\",\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac-tenid\",\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac\",\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"omac-imac-tenid\",\n+ \"recvqueue\": \"Single\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"None\",\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac-ivlan\",\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac-ivlan-tenid\",\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac-tenid\",\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"imac\",\n+ \"recvqueue\": \"Multi\",\n+ \"Mpps\": {},\n+ \"pct\": {},\n+ },\n+ {\n+ \"Packet\": \"VXLAN\",\n+ \"tunnel_filter\": \"omac-imac-tenid\",\n+ \"recvqueue\": \"Multi\",\n+ },\n+ ]\n+\n+ self.pktgen_helper = PacketGeneratorHelper()\n+\n+ def set_up(self):\n+ \"\"\"\n+ Run before each test case.\n+ \"\"\"\n+ pass\n+\n+ def test_perf_vxlan_tunnelfilter_performance_2ports(self):\n+ self.result_table_create(self.tunnel_header)\n+ core_list = self.dut.get_core_list(\n+ \"1S/%dC/1T\" % (self.tunnel_multiqueue * 2 + 1), socket=self.ports_socket\n+ )\n+\n+ pmd_temp = (\n+ \"./%s %s -- -i --disable-rss --rxq=2 --txq=2 --nb-cores=4 --portmask=%s\"\n+ )\n+\n+ for perf_config in self.tunnel_perf:\n+ tun_filter = perf_config[\"tunnel_filter\"]\n+ recv_queue = perf_config[\"recvqueue\"]\n+ print(\n+ (\n+ utils.GREEN(\n+ \"Measure tunnel performance of [%s %s %s]\"\n+ % (perf_config[\"Packet\"], tun_filter, recv_queue)\n+ )\n+ )\n+ )\n+\n+ if tun_filter == \"None\" and recv_queue == \"Multi\":\n+ pmd_temp = (\n+ \"./%s %s -- -i --rss-udp --rxq=2 --txq=2 --nb-cores=4 --portmask=%s\"\n+ )\n+\n+ self.eal_para = self.dut.create_eal_parameters(cores=core_list)\n+ pmd_cmd = pmd_temp % (self.path, self.eal_para, self.portMask)\n+ self.dut.send_expect(pmd_cmd, \"testpmd> \", 100)\n+\n+ # config flow\n+ self.config_tunnelfilter(\n+ self.dut_port, self.recv_port, perf_config, \"flow1.pcap\"\n+ )\n+ # config the flows\n+ tgen_input = []\n+ tgen_input.append(\n+ (\n+ self.tester.get_local_port(self.dut_port),\n+ self.tester.get_local_port(self.recv_port),\n+ \"flow1.pcap\",\n+ )\n+ )\n+\n+ if BIDIRECT:\n+ self.config_tunnelfilter(\n+ self.recv_port, self.dut_port, perf_config, \"flow2.pcap\"\n+ )\n+ tgen_input.append(\n+ (\n+ self.tester.get_local_port(self.recv_port),\n+ self.tester.get_local_port(self.dut_port),\n+ \"flow2.pcap\",\n+ )\n+ )\n+\n+ self.dut.send_expect(\"set fwd io\", \"testpmd>\", 10)\n+ self.dut.send_expect(\"start\", \"testpmd>\", 10)\n+ self.pmdout.wait_link_status_up(self.dut_port)\n+ if BIDIRECT:\n+ wirespeed = self.wirespeed(self.nic, PACKET_LEN, 2)\n+ else:\n+ wirespeed = self.wirespeed(self.nic, PACKET_LEN, 1)\n+\n+ # run traffic generator\n+ use_vm = True if recv_queue == \"Multi\" and tun_filter == \"None\" else False\n+ _, pps = self.suite_measure_throughput(tgen_input, use_vm=use_vm)\n+\n+ pps /= 1000000.0\n+ perf_config[\"Mpps\"] = pps\n+ perf_config[\"pct\"] = pps * 100 / wirespeed\n+\n+ out = self.dut.send_expect(\"stop\", \"testpmd>\", 10)\n+ self.dut.send_expect(\"quit\", \"# \", 10)\n+\n+ # verify every queue work fine\n+ check_queue = 0\n+ if recv_queue == \"Multi\":\n+ for queue in range(check_queue):\n+ self.verify(\n+ \"Queue= %d -> TX Port\" % (queue) in out,\n+ \"Queue %d no traffic\" % queue,\n+ )\n+\n+ table_row = [\n+ perf_config[\"Packet\"],\n+ tun_filter,\n+ recv_queue,\n+ perf_config[\"Mpps\"],\n+ perf_config[\"pct\"],\n+ ]\n+\n+ self.result_table_add(table_row)\n+\n+ self.result_table_print()\n+\n+ def test_perf_vxlan_checksum_performance_2ports(self):\n+ self.result_table_create(self.chksum_header)\n+ vxlan = VxlanTestConfig(self, payload_size=self.vxlan_payload)\n+ vxlan.outer_mac_dst = self.dut.get_mac_address(self.dut_port)\n+ vxlan.pcap_file = \"vxlan1.pcap\"\n+ vxlan.inner_mac_dst = \"00:00:20:00:00:01\"\n+ vxlan.create_pcap()\n+\n+ vxlan_queue = VxlanTestConfig(self, payload_size=self.vxlan_payload)\n+ vxlan_queue.outer_mac_dst = self.dut.get_mac_address(self.dut_port)\n+ vxlan_queue.pcap_file = \"vxlan1_1.pcap\"\n+ vxlan_queue.inner_mac_dst = \"00:00:20:00:00:02\"\n+ vxlan_queue.create_pcap()\n+\n+ # socket/core/thread\n+ core_list = self.dut.get_core_list(\n+ \"1S/%dC/1T\" % (self.tunnel_multiqueue * 2 + 1), socket=self.ports_socket\n+ )\n+ core_mask = utils.create_mask(core_list)\n+\n+ self.dut_ports = self.dut.get_ports_performance(force_different_nic=False)\n+ tx_port = self.tester.get_local_port(self.dut_ports[0])\n+ rx_port = self.tester.get_local_port(self.dut_ports[1])\n+\n+ for cal in self.cal_type:\n+ recv_queue = cal[\"recvqueue\"]\n+ print(\n+ (\n+ utils.GREEN(\n+ \"Measure checksum performance of [%s %s %s]\"\n+ % (cal[\"Type\"], recv_queue, cal[\"csum\"])\n+ )\n+ )\n+ )\n+\n+ # configure flows\n+ tgen_input = []\n+ if recv_queue == \"Multi\":\n+ tgen_input.append((tx_port, rx_port, \"vxlan1.pcap\"))\n+ tgen_input.append((tx_port, rx_port, \"vxlan1_1.pcap\"))\n+ else:\n+ tgen_input.append((tx_port, rx_port, \"vxlan1.pcap\"))\n+\n+ # multi queue and signle queue commands\n+ if recv_queue == \"Multi\":\n+ pmd_temp = \"./%s %s -- -i --disable-rss --rxq=2 --txq=2 --nb-cores=4 --portmask=%s\"\n+ else:\n+ pmd_temp = \"./%s %s -- -i --nb-cores=2 --portmask=%s\"\n+\n+ self.eal_para = self.dut.create_eal_parameters(cores=core_list)\n+ pmd_cmd = pmd_temp % (self.path, self.eal_para, self.portMask)\n+\n+ self.dut.send_expect(pmd_cmd, \"testpmd> \", 100)\n+ self.dut.send_expect(\"set fwd csum\", \"testpmd>\", 10)\n+ self.enable_vxlan(self.dut_port)\n+ self.enable_vxlan(self.recv_port)\n+ self.pmdout.wait_link_status_up(self.dut_port)\n+\n+ # redirect flow to another queue by tunnel filter\n+ rule_config = {\n+ \"dut_port\": self.dut_port,\n+ \"outer_mac_dst\": vxlan.outer_mac_dst,\n+ \"inner_mac_dst\": vxlan.inner_mac_dst,\n+ \"inner_ip_dst\": vxlan.inner_ip_dst,\n+ \"inner_vlan\": 0,\n+ \"tun_filter\": \"imac\",\n+ \"vni\": vxlan.vni,\n+ \"queue\": 0,\n+ }\n+ self.perf_tunnel_filter_set_rule(rule_config)\n+\n+ if recv_queue == \"Multi\":\n+ rule_config = {\n+ \"dut_port\": self.dut_port,\n+ \"outer_mac_dst\": vxlan_queue.outer_mac_dst,\n+ \"inner_mac_dst\": vxlan_queue.inner_mac_dst,\n+ \"inner_ip_dst\": vxlan_queue.inner_ip_dst,\n+ \"inner_vlan\": 0,\n+ \"tun_filter\": \"imac\",\n+ \"vni\": vxlan.vni,\n+ \"queue\": 1,\n+ }\n+ self.perf_tunnel_filter_set_rule(rule_config)\n+\n+ for pro in cal[\"csum\"]:\n+ self.csum_set_type(pro, self.dut_port)\n+ self.csum_set_type(pro, self.recv_port)\n+\n+ self.dut.send_expect(\"start\", \"testpmd>\", 10)\n+\n+ wirespeed = self.wirespeed(self.nic, PACKET_LEN, 1)\n+\n+ # run traffic generator\n+ _, pps = self.suite_measure_throughput(tgen_input)\n+\n+ pps /= 1000000.0\n+ cal[\"Mpps\"] = pps\n+ cal[\"pct\"] = pps * 100 / wirespeed\n+\n+ out = self.dut.send_expect(\"stop\", \"testpmd>\", 10)\n+ self.dut.send_expect(\"quit\", \"# \", 10)\n+\n+ # verify every queue work fine\n+ check_queue = 1\n+ if recv_queue == \"Multi\":\n+ for queue in range(check_queue):\n+ self.verify(\n+ \"Queue= %d -> TX Port\" % (queue) in out,\n+ \"Queue %d no traffic\" % queue,\n+ )\n+\n+ table_row = [cal[\"Type\"], recv_queue, cal[\"Mpps\"], cal[\"pct\"]]\n+ self.result_table_add(table_row)\n+\n+ self.result_table_print()\n+\n+ def tear_down(self):\n+ \"\"\"\n+ Run after each test case.\n+ \"\"\"\n+ self.dut.kill_all()\n+\n+ def tear_down_all(self):\n+ \"\"\"\n+ Run after each test suite.\n+ \"\"\"\n+ pass\ndiff --git a/tests/TestSuite_vxlan.py b/tests/TestSuite_vxlan.py\nindex c69d7903..5dd49ecd 100644\n--- a/tests/TestSuite_vxlan.py\n+++ b/tests/TestSuite_vxlan.py\n@@ -1163,219 +1163,6 @@ class TestVxlan(TestCase):\n \n wrpcap(dest_pcap, pkts)\n \n- def test_perf_vxlan_tunnelfilter_performance_2ports(self):\n- self.result_table_create(self.tunnel_header)\n- core_list = self.dut.get_core_list(\n- \"1S/%dC/1T\" % (self.tunnel_multiqueue * 2 + 1), socket=self.ports_socket\n- )\n-\n- pmd_temp = (\n- \"./%s %s -- -i --disable-rss --rxq=2 --txq=2 --nb-cores=4 --portmask=%s\"\n- )\n-\n- for perf_config in self.tunnel_perf:\n- tun_filter = perf_config[\"tunnel_filter\"]\n- recv_queue = perf_config[\"recvqueue\"]\n- print(\n- (\n- utils.GREEN(\n- \"Measure tunnel performance of [%s %s %s]\"\n- % (perf_config[\"Packet\"], tun_filter, recv_queue)\n- )\n- )\n- )\n-\n- if tun_filter == \"None\" and recv_queue == \"Multi\":\n- pmd_temp = (\n- \"./%s %s -- -i --rss-udp --rxq=2 --txq=2 --nb-cores=4 --portmask=%s\"\n- )\n-\n- self.eal_para = self.dut.create_eal_parameters(cores=core_list)\n- pmd_cmd = pmd_temp % (self.path, self.eal_para, self.portMask)\n- self.dut.send_expect(pmd_cmd, \"testpmd> \", 100)\n-\n- # config flow\n- self.config_tunnelfilter(\n- self.dut_port, self.recv_port, perf_config, \"flow1.pcap\"\n- )\n- # config the flows\n- tgen_input = []\n- tgen_input.append(\n- (\n- self.tester.get_local_port(self.dut_port),\n- self.tester.get_local_port(self.recv_port),\n- \"flow1.pcap\",\n- )\n- )\n-\n- if BIDIRECT:\n- self.config_tunnelfilter(\n- self.recv_port, self.dut_port, perf_config, \"flow2.pcap\"\n- )\n- tgen_input.append(\n- (\n- self.tester.get_local_port(self.recv_port),\n- self.tester.get_local_port(self.dut_port),\n- \"flow2.pcap\",\n- )\n- )\n-\n- self.dut.send_expect(\"set fwd io\", \"testpmd>\", 10)\n- self.dut.send_expect(\"start\", \"testpmd>\", 10)\n- self.pmdout.wait_link_status_up(self.dut_port)\n- if BIDIRECT:\n- wirespeed = self.wirespeed(self.nic, PACKET_LEN, 2)\n- else:\n- wirespeed = self.wirespeed(self.nic, PACKET_LEN, 1)\n-\n- # run traffic generator\n- use_vm = True if recv_queue == \"Multi\" and tun_filter == \"None\" else False\n- _, pps = self.suite_measure_throughput(tgen_input, use_vm=use_vm)\n-\n- pps /= 1000000.0\n- perf_config[\"Mpps\"] = pps\n- perf_config[\"pct\"] = pps * 100 / wirespeed\n-\n- out = self.dut.send_expect(\"stop\", \"testpmd>\", 10)\n- self.dut.send_expect(\"quit\", \"# \", 10)\n-\n- # verify every queue work fine\n- check_queue = 0\n- if recv_queue == \"Multi\":\n- for queue in range(check_queue):\n- self.verify(\n- \"Queue= %d -> TX Port\" % (queue) in out,\n- \"Queue %d no traffic\" % queue,\n- )\n-\n- table_row = [\n- perf_config[\"Packet\"],\n- tun_filter,\n- recv_queue,\n- perf_config[\"Mpps\"],\n- perf_config[\"pct\"],\n- ]\n-\n- self.result_table_add(table_row)\n-\n- self.result_table_print()\n-\n- def test_perf_vxlan_checksum_performance_2ports(self):\n- self.result_table_create(self.chksum_header)\n- vxlan = VxlanTestConfig(self, payload_size=self.vxlan_payload)\n- vxlan.outer_mac_dst = self.dut.get_mac_address(self.dut_port)\n- vxlan.pcap_file = \"vxlan1.pcap\"\n- vxlan.inner_mac_dst = \"00:00:20:00:00:01\"\n- vxlan.create_pcap()\n-\n- vxlan_queue = VxlanTestConfig(self, payload_size=self.vxlan_payload)\n- vxlan_queue.outer_mac_dst = self.dut.get_mac_address(self.dut_port)\n- vxlan_queue.pcap_file = \"vxlan1_1.pcap\"\n- vxlan_queue.inner_mac_dst = \"00:00:20:00:00:02\"\n- vxlan_queue.create_pcap()\n-\n- # socket/core/thread\n- core_list = self.dut.get_core_list(\n- \"1S/%dC/1T\" % (self.tunnel_multiqueue * 2 + 1), socket=self.ports_socket\n- )\n- core_mask = utils.create_mask(core_list)\n-\n- self.dut_ports = self.dut.get_ports_performance(force_different_nic=False)\n- tx_port = self.tester.get_local_port(self.dut_ports[0])\n- rx_port = self.tester.get_local_port(self.dut_ports[1])\n-\n- for cal in self.cal_type:\n- recv_queue = cal[\"recvqueue\"]\n- print(\n- (\n- utils.GREEN(\n- \"Measure checksum performance of [%s %s %s]\"\n- % (cal[\"Type\"], recv_queue, cal[\"csum\"])\n- )\n- )\n- )\n-\n- # configure flows\n- tgen_input = []\n- if recv_queue == \"Multi\":\n- tgen_input.append((tx_port, rx_port, \"vxlan1.pcap\"))\n- tgen_input.append((tx_port, rx_port, \"vxlan1_1.pcap\"))\n- else:\n- tgen_input.append((tx_port, rx_port, \"vxlan1.pcap\"))\n-\n- # multi queue and signle queue commands\n- if recv_queue == \"Multi\":\n- pmd_temp = \"./%s %s -- -i --disable-rss --rxq=2 --txq=2 --nb-cores=4 --portmask=%s\"\n- else:\n- pmd_temp = \"./%s %s -- -i --nb-cores=2 --portmask=%s\"\n-\n- self.eal_para = self.dut.create_eal_parameters(cores=core_list)\n- pmd_cmd = pmd_temp % (self.path, self.eal_para, self.portMask)\n-\n- self.dut.send_expect(pmd_cmd, \"testpmd> \", 100)\n- self.dut.send_expect(\"set fwd csum\", \"testpmd>\", 10)\n- self.enable_vxlan(self.dut_port)\n- self.enable_vxlan(self.recv_port)\n- self.pmdout.wait_link_status_up(self.dut_port)\n-\n- # redirect flow to another queue by tunnel filter\n- rule_config = {\n- \"dut_port\": self.dut_port,\n- \"outer_mac_dst\": vxlan.outer_mac_dst,\n- \"inner_mac_dst\": vxlan.inner_mac_dst,\n- \"inner_ip_dst\": vxlan.inner_ip_dst,\n- \"inner_vlan\": 0,\n- \"tun_filter\": \"imac\",\n- \"vni\": vxlan.vni,\n- \"queue\": 0,\n- }\n- self.perf_tunnel_filter_set_rule(rule_config)\n-\n- if recv_queue == \"Multi\":\n- rule_config = {\n- \"dut_port\": self.dut_port,\n- \"outer_mac_dst\": vxlan_queue.outer_mac_dst,\n- \"inner_mac_dst\": vxlan_queue.inner_mac_dst,\n- \"inner_ip_dst\": vxlan_queue.inner_ip_dst,\n- \"inner_vlan\": 0,\n- \"tun_filter\": \"imac\",\n- \"vni\": vxlan.vni,\n- \"queue\": 1,\n- }\n- self.perf_tunnel_filter_set_rule(rule_config)\n-\n- for pro in cal[\"csum\"]:\n- self.csum_set_type(pro, self.dut_port)\n- self.csum_set_type(pro, self.recv_port)\n-\n- self.dut.send_expect(\"start\", \"testpmd>\", 10)\n-\n- wirespeed = self.wirespeed(self.nic, PACKET_LEN, 1)\n-\n- # run traffic generator\n- _, pps = self.suite_measure_throughput(tgen_input)\n-\n- pps /= 1000000.0\n- cal[\"Mpps\"] = pps\n- cal[\"pct\"] = pps * 100 / wirespeed\n-\n- out = self.dut.send_expect(\"stop\", \"testpmd>\", 10)\n- self.dut.send_expect(\"quit\", \"# \", 10)\n-\n- # verify every queue work fine\n- check_queue = 1\n- if recv_queue == \"Multi\":\n- for queue in range(check_queue):\n- self.verify(\n- \"Queue= %d -> TX Port\" % (queue) in out,\n- \"Queue %d no traffic\" % queue,\n- )\n-\n- table_row = [cal[\"Type\"], recv_queue, cal[\"Mpps\"], cal[\"pct\"]]\n- self.result_table_add(table_row)\n-\n- self.result_table_print()\n-\n def enable_vxlan(self, port):\n self.dut.send_expect(\n \"rx_vxlan_port add %d %d\" % (VXLAN_PORT, port), \"testpmd>\", 10\n", "prefixes": [ "V1", "5/7" ] }{ "id": 116622, "url": "