get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/116622/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 116622,
    "url": "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"
    ]
}