Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/104844/?format=api
http://patchwork.dpdk.org/api/patches/104844/?format=api", "web_url": "http://patchwork.dpdk.org/project/dts/patch/20211203101311.148370-3-yanx.xia@intel.com/", "project": { "id": 3, "url": "http://patchwork.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": "<20211203101311.148370-3-yanx.xia@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20211203101311.148370-3-yanx.xia@intel.com", "date": "2021-12-03T10:13:11", "name": "[V1,3/3] tests/fdir: delete fdir", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "760f43bdd97cdef23276e1e7519705ba64dd6c24", "submitter": { "id": 2034, "url": "http://patchwork.dpdk.org/api/people/2034/?format=api", "name": "Yan Xia", "email": "yanx.xia@intel.com" }, "delegate": null, "mbox": "http://patchwork.dpdk.org/project/dts/patch/20211203101311.148370-3-yanx.xia@intel.com/mbox/", "series": [ { "id": 20843, "url": "http://patchwork.dpdk.org/api/series/20843/?format=api", "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=20843", "date": "2021-12-03T10:13:09", "name": "[V1,1/3] test_plans/fdir_test_plan: delete fdir", "version": 1, "mbox": "http://patchwork.dpdk.org/series/20843/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/104844/comments/", "check": "warning", "checks": "http://patchwork.dpdk.org/api/patches/104844/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 198A1A0548;\n\tFri, 3 Dec 2021 03:13:16 +0100 (CET)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 123B5426FB;\n\tFri, 3 Dec 2021 03:13:16 +0100 (CET)", "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by mails.dpdk.org (Postfix) with ESMTP id 289A3426FA\n for <dts@dpdk.org>; Fri, 3 Dec 2021 03:13:13 +0100 (CET)", "from orsmga004.jf.intel.com ([10.7.209.38])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Dec 2021 18:13:12 -0800", "from unknown (HELO dpdk.lan) ([10.240.183.77])\n by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Dec 2021 18:13:10 -0800" ], "X-IronPort-AV": [ "E=McAfee;i=\"6200,9189,10186\"; a=\"235629874\"", "E=Sophos;i=\"5.87,283,1631602800\"; d=\"scan'208\";a=\"235629874\"", "E=Sophos;i=\"5.87,283,1631602800\"; d=\"scan'208\";a=\"610220014\"" ], "From": "Yan Xia <yanx.xia@intel.com>", "To": "dts@dpdk.org", "Cc": "Yan Xia <yanx.xia@intel.com>", "Subject": "[dts][PATCH V1 3/3] tests/fdir: delete fdir", "Date": "Fri, 3 Dec 2021 10:13:11 +0000", "Message-Id": "<20211203101311.148370-3-yanx.xia@intel.com>", "X-Mailer": "git-send-email 2.33.1", "In-Reply-To": "<20211203101311.148370-1-yanx.xia@intel.com>", "References": "<20211203101311.148370-1-yanx.xia@intel.com>", "MIME-Version": "1.0", "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": "delete fdir\ndpdk commit-id: 1be514fbc ethdev: remove legacy FDIR filter type support\n\nSigned-off-by: Yan Xia <yanx.xia@intel.com>\n---\n tests/TestSuite_fdir.py | 1335 ---------------------------------------\n 1 file changed, 1335 deletions(-)\n delete mode 100644 tests/TestSuite_fdir.py", "diff": "diff --git a/tests/TestSuite_fdir.py b/tests/TestSuite_fdir.py\ndeleted file mode 100644\nindex b418b68d..00000000\n--- a/tests/TestSuite_fdir.py\n+++ /dev/null\n@@ -1,1335 +0,0 @@\n-# BSD LICENSE\n-#\n-# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n-# All rights reserved.\n-#\n-# Redistribution and use in source and binary forms, with or without\n-# modification, are permitted provided that the following conditions\n-# are met:\n-#\n-# * Redistributions of source code must retain the above copyright\n-# notice, this list of conditions and the following disclaimer.\n-# * Redistributions in binary form must reproduce the above copyright\n-# notice, this list of conditions and the following disclaimer in\n-# the documentation and/or other materials provided with the\n-# distribution.\n-# * Neither the name of Intel Corporation nor the names of its\n-# contributors may be used to endorse or promote products derived\n-# from this software without specific prior written permission.\n-#\n-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n-# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n-\n-\"\"\"\n-DPDK Test suite.\n-\n-Test 82599 and fortville Flow Director Support in DPDK\n-\"\"\"\n-\n-import imp\n-import re\n-import string\n-import sys\n-import time\n-from time import sleep\n-\n-from scapy.utils import PcapWriter, socket, struct\n-\n-import framework.utils as utils\n-from framework.pktgen import PacketGeneratorHelper\n-from framework.pmd_output import PmdOutput\n-from framework.settings import HEADER_SIZE\n-from framework.test_case import TestCase\n-\n-\n-class TestFdir(TestCase):\n-\n- #\n- #\n- # Utility methods and other non-test code.\n- #\n- ###########################################################################\n- scapyCmds = []\n-\n- def start_scapy(self):\n- self.tester.scapy_foreground()\n- self.tester.send_expect('scapy', '>>> ', 10)\n- sleep(2)\n-\n- def end_scapy(self):\n- self.tester.send_expect(\"exit()\", \"#\")\n-\n- def scapy_execute(self, timeout=60):\n- for cmd in self.scapyCmds:\n- self.tester.send_expect(cmd, \">>> \", timeout)\n-\n- self.scapyCmds = []\n-\n- def send_and_verify(self, condition, packet, queueid = -2):\n- \"\"\"\n- Send packages and verify behavior.\n- \"\"\"\n- self.scapyCmds.append(packet)\n- self.dut.send_expect(\"start\", \"testpmd>\")\n-\n- self.pmd_output = PmdOutput(self.dut)\n- res = self.pmd_output.wait_link_status_up('all', timeout=15)\n- self.verify(res is True, 'there have port link is down')\n-\n- self.scapy_execute()\n- time.sleep(.5)\n- out = self.dut.get_session_output()\n- self.dut.send_expect(\"stop\", \"testpmd>\")\n-\n- if(self.nic in [\"kawela\", \"niantic\", \"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]):\n- if (\"fwd\" == self.fdir_type):\n- if condition:\n- self.queue = 2\n- else:\n- self.queue = 0\n- elif(\"drop\" == self.fdir_type):\n- if condition:\n- self.queue = 0\n- else:\n- self.queue = -1\n- else:\n- self.queue = queueid\n-\n- result_scanner = r\"port ([0-9]+)/queue ([0-9]+): received ([0-9]+) packets\\s*src=[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2} - dst=[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2}:[A-F\\d]{2}\"\n- scanner = re.compile(result_scanner, re.DOTALL)\n- m = scanner.search(out)\n-\n- print(\"**************Print sub-case result****************\")\n- if m:\n- m.groups()\n- if (self.queue == int(m.group(2))):\n- print(utils.GREEN(\"Pass: queue id is \" + m.group(2)))\n- self.verify(1, \"Pass\")\n- else:\n- print(utils.RED(\"Fail: queue id is \" + m.group(2)))\n- self.verify(0, \"Fail\")\n- print(out)\n- else:\n- print(\"not match\")\n- if (-1 == self.queue):\n- print(utils.GREEN(\"Pass: fdir should not match \"))\n- self.verify(1, \"Pass\")\n- else:\n- print(utils.RED(\"Fail\"))\n- self.verify(0, \"Fail\")\n- print(out)\n- print(\"**************Print sub-case result****************\")\n-\n- #\n- #\n- #\n- # Test cases.\n- #\n- def set_up_all(self):\n- \"\"\"\n- Run at the start of each test suite.\n-\n- PMD prerequisites.\n- \"\"\"\n- #self.verify('bsdapp' not in self.path, \"FDIR not support freebsd\")\n- # this feature support Fortville, Niantic\n- #self.verify(self.nic in [\"kawela_2\", \"niantic\", \"bartonhills\", \"82545EM\",\n- # \"82540EM\", \"springfountain\", \"fortville_eagle\",\n- # \"fortville_spirit\", \"fortville_spirit_single\"],\n- # \"NIC Unsupported: \" + str(self.nic))\n-\n- # Based on h/w type, choose how many ports to use\n- self.dut_ports = self.dut.get_ports(self.nic)\n- # Verify that enough ports are available\n- self.verify(len(self.dut_ports) >= 2, \"Insufficient ports for testing\")\n-\n- # Verify that enough threads are available\n- self.all_cores_mask = utils.create_mask(self.dut.get_core_list(\"all\"))\n- cores = self.dut.get_core_list(\"1S/5C/1T\")\n- self.verify(cores is not None, \"Insufficient cores for speed testing\")\n- self.coreMask = utils.create_mask(cores)\n- self.portMask = utils.create_mask([self.dut_ports[0], self.dut_ports[1]])\n- self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])\n- self.dut_rx_port = self.tester.get_local_port(self.dut_ports[0])\n- self.dut_rx_interface = self.tester.get_interface(self.dut_rx_port)\n- self.dut_tx_port = self.tester.get_local_port(self.dut_ports[1])\n- self.dut_tx_interface = self.tester.get_interface(self.dut_rx_port)\n- self.path=self.dut.apps_name['test-pmd']\n-\n- self.blocklist = \"\"\n-\n- self.headers_size = HEADER_SIZE['eth'] + HEADER_SIZE[\n- 'ip'] + HEADER_SIZE['udp']\n- self.src_ip = \"192.168.1.1\"\n- self.dst_ip = \"192.168.2.1\"\n- self.default_queue = 2\n-\n- # performance test parameter\n- # self.frame_sizes = [1500]\n- self.frame_sizes = [64, 65, 128, 256, 512, 1024, 1280, 1500]\n- self.rxfreet_values = [0, 8, 16, 32, 64, 128]\n- \"\"\"\n- self.test_cycles = [{'cores': '1S/1C/1T', 'Mpps': {}, 'pct': {}},\n- {'cores': '1S/1C/2T', 'Mpps': {}, 'pct': {}},\n- {'cores': '1S/2C/1T', 'Mpps': {}, 'pct': {}},\n- {'cores': '1S/2C/2T', 'Mpps': {}, 'pct': {}},\n- {'cores': '1S/4C/2T', 'Mpps': {}, 'pct': {}}\n- ]\n- \"\"\"\n- self.test_cycles = [{'cores': '1S/4C/2T', 'Mpps': {}, 'pct': {}}]\n-\n- # Niantic only support 2bytes payload, Fortville support 16 bytes\n- self.flexbytes = [{'length': 2, 'flexbytes': '0x11,0x11', 'payload': '\\\\x11\\\\x11'},\n- {'length': 16, 'flexbytes': '0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88', 'payload': '\\\\x11\\\\x11\\\\x22\\\\x22\\\\x33\\\\x33\\\\x44\\\\x44\\\\x55\\\\x55\\\\x66\\\\x66\\\\x77\\\\x77\\\\x88\\\\x88'}\n- ]\n-\n- # self.test_types = ['fdir_2flexbytes']\n- self.test_types = ['fdir_disable', 'fdir_enable', 'fdir_noflexbytes', 'fdir_2flexbytes', 'fdir_16flexbytes']\n- \"\"\"\n- self.flows= [{\"flows\":1, \"rules\":1},\n- {\"flows\":64, \"rules\":16},\n- {\"flows\":64, \"rules\":512}\n- #{\"flows\":8192, \"rules\":8192}\n- ]\n- \"\"\"\n- self.flows = [{\"flows\": 8192, \"rules\": 8192}]\n- # performance report head line\n- self.table_header = ['Frame Size']\n- for test_cycle in self.test_cycles:\n- self.table_header.append(\"%s Mpps\" % test_cycle['cores'])\n- self.table_header.append(\"% linerate\")\n- # create an instance to set stream field setting\n- self.pktgen_helper = PacketGeneratorHelper()\n-\n- def set_up(self):\n- \"\"\"\n- Run before each test case.\n- \"\"\"\n- self.start_scapy()\n-\n- def fdir_set_rule(self):\n- \"\"\"\n- Fdir Performance Benchmarking set rules\n- \"\"\"\n- self.dut.send_expect(\"port stop %s\" % self.dut_ports[0], \"testpmd>\")\n- if(self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]):\n- self.dut.send_expect(\"flow_director_flex_payload %s l2 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_flex_payload %s l3 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_flex_payload %s l4 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_flex_mask %s flow all (0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff)\" % self.dut_ports[0], \"testpmd>\")\n- elif (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_flex_payload %s raw (12,13)\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_flex_mask %s flow raw (0xff,0xff)\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"port start %s\" % self.dut_ports[0], \"testpmd>\")\n-\n- def fdir_get_flexbytes(self, sctp=False):\n-\n- \"\"\"\n- Fdir get flexbytes and payload according NIC\n- \"\"\"\n-\n- if(self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\", \"fortpark_BASE-T\",\"fortville_25g\", \"carlsville\", \"foxville\"]):\n- if not sctp:\n- self.flexbytes = \"0x11,0x11,0x22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x77,0x77\"\n- else:\n- self.flexbytes = '0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0'\n- self.payload = b'\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x77\\x77'\n- self.flexlength = 16\n- elif (self.nic in [\"niantic\", \"sagepond\", \"sageville\"]):\n- self.flexbytes = \"0x00,0x00\"\n- self.payload = b'\\x11\\x11\\x22\\x22\\x33\\x33\\x44\\x44\\x55\\x55\\x66\\x66\\x77\\x77\\x77\\x77'\n- self.flexlength = 2\n- self.payload = str(self.payload)\n- self.payload = self.payload.split(\"'\")[1]\n-\n- def test_fdir_noflexword_fwd_ipv4(self):\n- \"\"\"\n- FDir signature matching mode.\n- \"\"\"\n-\n- self.dut.kill_all()\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- # fwd command testing\n- self.fdir_type = \"fwd\"\n-\n- # ipv4 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"),dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- # update command only work in niantic\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv4 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv4 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv4 sctp\n- self.fdir_get_flexbytes(sctp=True)\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.fdir_get_flexbytes()\n-\n- # ipv4 frag\n- # ip-frag only support in fortville\n- if (self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", frag=1, flags=\"MF\")/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"),dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", frag=1, flags=\"MF\")/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_fdir_noflexword_fwd_ipv6(self):\n- \"\"\"\n- FDir signature matching mode.\n- \"\"\"\n-\n- self.dut.kill_all()\n- if self.nic in [\"niantic\", \"sagepond\", \"sageville\"]:\n- # Niantic ipv6 only support signature mode\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=signature\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- elif self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\", \"fortpark_BASE-T\",\"fortville_25g\", \"carlsville\"]:\n- # Fortville ipv6 support perfect mode\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- # fwd comand testing\n- self.fdir_type = \"fwd\"\n-\n- # ipv6 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv6 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv6 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- #ipv6 sctp\n- self.fdir_get_flexbytes(sctp=True)\n- self.dut.send_expect(\"flow_director_filter 0 mode IP add flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \"%(2,1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter 0 mode IP del flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \"%(2,1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter 0 mode IP add flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \"%(1,1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter 0 mode IP update flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \"%(2,1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter 0 mode IP del flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \"%(2,1), \"testpmd>\")\n- self.fdir_get_flexbytes()\n-\n- # ipv6 frag\n- # ip-frag only support in fortville\n- if (self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=44)/IPv6ExtHdrFragment()/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=44)/IPv6ExtHdrFragment()/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_fdir_noflexword_drop_ipv4(self):\n- # drop command testing\n- self.dut.kill_all()\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- # fwd comand testing\n- self.fdir_type = \"drop\"\n-\n- # ipv4 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv4 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv4 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n-\n- # ipv4 sctp\n- self.fdir_get_flexbytes(sctp=True)\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.fdir_get_flexbytes()\n-\n- # ipv4 frag\n- # ip-frag only support in fortville\n- if (self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", frag=1, flags=\"MF\")/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"),dst=\"00:1B:21:8E:B2:30\")/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\", frag=1, flags=\"MF\")/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_fdir_noflexword_drop_ipv6(self):\n- # drop not support signature mode, niantic only can work in signature mode with ipv6\n- # Niantic is not support in drop ipv6\n- if self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\", \"fortpark_BASE-T\",\"fortville_25g\", \"carlsville\"]:\n- # drop command testing\n- self.dut.kill_all()\n-\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- # fwd comand testing\n- self.fdir_type = \"drop\"\n-\n- # ipv6 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- # ipv6 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/UDP(sport=1024,dport=1024)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- # ipv6 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\")/TCP(sport=32,dport=32)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- # ipv6 sctp\n- self.fdir_get_flexbytes(sctp=True)\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \"%(self.dut_ports[0],2,1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \"%(self.dut_ports[0],2,1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \"%(self.dut_ports[0],1,1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \"%(self.dut_ports[0],2,1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \"%(self.dut_ports[0],2,1), \"testpmd>\")\n- self.fdir_get_flexbytes()\n-\n- # ipv6 frag\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(False, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=44)/IPv6ExtHdrFragment()/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes () drop pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\")/IPv6(src=\"FE80:0:0:0:200:1FF:FE00:200\", dst=\"3555:5555:6666:6666:7777:7777:8888:8888\", nh=44)/IPv6ExtHdrFragment()/Raw(load=\"X\"*46)], iface=\"%s\")' % (self.dut_rx_interface, self.dut_rx_interface))\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_fdir_flexword_fwd_ipv4(self):\n- \"\"\"\n- FDir signature matching mode.\n- \"\"\"\n- # fwd comand testing\n- self.fdir_type = \"fwd\"\n-\n- self.dut.kill_all()\n- # fwd testing with flexword\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- self.fdir_set_rule()\n- self.fdir_get_flexbytes()\n-\n- # ipv4 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'),dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n-\n- # ipv4 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n-\n- # ipv4 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n-\n- # ipv4 frag\n- # ip-frag only support fortville\n- if (self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\", \"fortpark_BASE-T\",\"fortville_25g\", \"carlsville\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2', frag=1, flags='MF')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'),dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2', frag=1, flags='MF')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- # ipv4 sctp\n- self.fdir_get_flexbytes(sctp=True)\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes, 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes, 2, 1), \"testpmd>\")\n- self.fdir_get_flexbytes()\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_fdir_flexword_fwd_ipv6(self):\n- \"\"\"\n- FDir signature matching mode.\n- \"\"\"\n- # fwd comand testing\n- self.fdir_type = \"fwd\"\n-\n- self.dut.kill_all()\n- # fwd testing with flexword\n- if self.nic in [\"niantic\", \"sagepond\", \"sageville\"]:\n- # Niantic ipv6 only support signature mode\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=signature\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- elif self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]:\n- # fortville ipv6 support perfect mode\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- self.fdir_set_rule()\n- self.fdir_get_flexbytes()\n-\n- # ipv6 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n-\n- # ipv6 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n-\n- # ipv6 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 1, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- #ipv6 sctp\n- self.fdir_get_flexbytes(sctp=True)\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes,2,1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888', nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes,2,1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888', nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- if (self.nic in [\"niantic\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes,1,1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP update flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes,2,1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888', nh=132)/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-sctp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 verify_tag 1 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes,2,1), \"testpmd>\")\n- self.fdir_get_flexbytes()\n-\n- # ipv6 frag\n- # ip-frag only support fortville\n- if (self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888', nh=44)/IPv6ExtHdrFragment()/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888', nh=44)/IPv6ExtHdrFragment()/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_fdir_flexword_drop_ipv4(self):\n-\n- # drop testing with flexword\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- self.fdir_set_rule()\n- self.fdir_get_flexbytes()\n- # fwd comand testing\n- self.fdir_type = \"drop\"\n-\n- # ipv4 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- # ipv4 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-udp src 192.168.0.1 1024 dst 192.168.0.2 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- # ipv4 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-tcp src 192.168.0.1 32 dst 192.168.0.2 32 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- # ipv4 sctp\n- self.fdir_get_flexbytes(sctp=True)\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-sctp src 192.168.0.1 32 dst 192.168.0.2 32 verify_tag 1 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \"%(self.dut_ports[0],self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2')/SCTP(sport=32, dport=32, tag=1)/SCTPChunkData(data='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.fdir_get_flexbytes()\n-\n- # ipv4 frag\n- # ip-frag only support fortville\n- if (self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\",\"fortpark_BASE-T\", \"fortville_25g\", \"carlsville\"]):\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2', frag=1, flags='MF')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv4-frag src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'),dst='00:1B:21:8E:B2:30')/IP(src='192.168.0.1', dst='192.168.0.2', frag=1, flags='MF')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_fdir_flexword_drop_ipv6(self):\n- # drop not support signature mode, niantic only can work in signature mode with ipv6\n- # Niantic is not support in drop ipv6\n- if (self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortpark_TLV\", \"fortpark_BASE-T\",\"fortville_25g\", \"carlsville\"]):\n- # drop testing with flexword\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- self.fdir_set_rule()\n- self.fdir_get_flexbytes()\n- # fwd comand testing\n- self.fdir_type = \"drop\"\n-\n- # ipv6 ip\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- # ipv6 udp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-udp src FE80:0:0:0:200:1FF:FE00:200 1024 dst 3555:5555:6666:6666:7777:7777:8888:8888 1024 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/UDP(sport=1024,dport=1024)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- # ipv6 tcp\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-tcp src FE80:0:0:0:200:1FF:FE00:200 32 dst 3555:5555:6666:6666:7777:7777:8888:8888 32 tos 2 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888')/TCP(sport=32,dport=32)/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- # ipv6 frag\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(False, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888', nh=44)/IPv6ExtHdrFragment()/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-other src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 3, 1), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %s mode IP del flow ipv6-frag src FE80:0:0:0:200:1FF:FE00:200 dst 3555:5555:6666:6666:7777:7777:8888:8888 tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) drop pf queue %d fd_id %d \" % (self.dut_ports[0], self.flexbytes, 2, 1), \"testpmd>\")\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30')/IPv6(src='FE80:0:0:0:200:1FF:FE00:200', dst='3555:5555:6666:6666:7777:7777:8888:8888', nh=44)/IPv6ExtHdrFragment()/Raw(load='%s')], iface='%s')\" % (self.dut_rx_interface, self.payload, self.dut_rx_interface))\n-\n- self.dut.send_expect(\"quit\", \"# \", 30)\n-\n- def test_ipv4_tos_proto_ttl(self):\n- \"\"\"\n- Expand Flow Director for fortville to support ipv4 TOS, ipv4 PROTO, ipv4 TTL\n- \"\"\"\n- if not self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortville_25g\", \"carlsville\", \"foxville\"]:\n- self.verify(False, \"This case only support fortville nic\")\n- self.dut.kill_all()\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- self.fdir_set_rule()\n- self.fdir_get_flexbytes()\n- # fwd comand testing\n- self.fdir_type = \" \"\n- self.dut.send_expect(\"set_fdir_input_set %d ipv4-other none select\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"set_fdir_input_set %d ipv4-other src-ipv4 add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"set_fdir_input_set %d ipv4-other dst-ipv4 add\" % self.dut_ports[0], \"testpmd>\")\n- \n- # test add and remove tso rule\n- self.dut.send_expect(\"set_fdir_input_set %d ipv4-other ipv4-tos add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\" \n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 8 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\" \n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- \n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=255, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 1)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=8, proto=255, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 2)\n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 8 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=255, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=8, proto=255, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n-\n- # test add and remove proto rule\n- self.dut.send_expect(\"set_fdir_input_set %d ipv4-other ipv4-proto add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 253 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 254 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=253, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 1)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=254, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 2)\n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 253 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 254 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=253, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=254, ttl=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n-\n- # test add and remove ttl rule\n- self.dut.send_expect(\"set_fdir_input_set %d ipv4-other ipv4-ttl add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 255 ttl 32 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 255 ttl 64 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=255, ttl=32) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 1)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=255, ttl=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 2)\n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 255 ttl 32 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-other src 192.168.1.1 dst 192.168.1.2 \\\n- tos 16 proto 255 ttl 64 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=255, ttl=32) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IP(src='192.168.1.1', dst='192.168.1.2', tos=16, proto=255, ttl=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n-\n- def test_fdir_ipv6_tc(self):\n- \"\"\"\n- Expand Flow Director for fortville to support ipv6 TC, next-header, hop-limits\n- \"\"\"\n- if not self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortville_25g\", \"carlsville\", \"foxville\"]:\n- self.verify(False, \"This case only support fortville nic\")\n- self.dut.kill_all()\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- self.fdir_set_rule()\n- self.fdir_get_flexbytes()\n- # fwd comand testing\n- self.fdir_type = \" \"\n- self.dut.send_expect(\"set_fdir_input_set %d ipv6-other none select\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"set_fdir_input_set %d ipv6-other src-ipv6 add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"set_fdir_input_set %d ipv6-other dst-ipv6 add\" % self.dut_ports[0], \"testpmd>\")\n-\n- # test add and remove ipv6 tc rule\n- self.dut.send_expect(\"set_fdir_input_set %d ipv6-other ipv6-tc add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 8 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=255, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 1)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=8, nh=255, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 2)\n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 8 proto 255 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=255, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=8, nh=255, hlim=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n-\n- # test add and remove ipv6-next-header rule\n- self.dut.send_expect(\"set_fdir_input_set %d ipv6-other ipv6-next-header add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 253 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 254 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=253, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 1)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=254, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 2)\n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 253 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 254 ttl 255 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=253, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=254, hlim=255) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n-\n- # test add and remove ipv6-hop-limits rule\n- self.dut.send_expect(\"set_fdir_input_set %d ipv6-other ipv6-hop-limits add\" % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 255 ttl 32 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 255 ttl 64 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=255, hlim=32) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 1)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=255, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 2)\n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 255 ttl 32 vlan 0 flexbytes (%s) fwd pf queue 1 fd_id 1\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv6-other src 2000::1 dst 2000::2 \\\n- tos 16 proto 255 ttl 64 vlan 0 flexbytes (%s) fwd pf queue 2 fd_id 2\"\n- % (self.dut_ports[0], self.flexbytes), \"testpmd>\")\n-\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=255, hlim=32) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, \"sendp([Ether(src=get_if_hwaddr('%s'), dst='00:1B:21:8E:B2:30') \\\n- /IPv6(src='2000::1', dst='2000::2', tc=16, nh=255, hlim=64) \\\n- /Raw(load='%s')], iface='%s')\" \\\n- % (self.dut_rx_interface, self.payload, self.dut_rx_interface), queueid = 0)\n-\n- def test_fdir_ivlan(self):\n- \"\"\"\n- Expand Flow Director for fortville to support ipv4 TOS, ipv4 PROTO, ipv4 TTL\n- \"\"\"\n- if not self.nic in [\"fortville_eagle\", \"fortville_spirit\", \"fortville_spirit_single\", \"fortville_25g\", \"carlsville\", \"foxville\"]:\n- self.verify(False, \"This case only support fortville nic\")\n- self.dut.kill_all()\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=4 --txq=4 --nb-cores=4 --nb-ports=1 --pkt-filter-mode=perfect\" % (self.path, self.coreMask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- self.fdir_type = \" \"\n- self.dut.send_expect(\"set_fdir_input_set %d ipv4-udp ivlan add\" % self.dut_ports[0], \"testpmd>\")\n- \n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002 \\\n- tos 2 ttl 40 vlan 1 flexbytes () fwd pf queue 1 fd_id 1\"\n- % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002\\\n- tos 2 ttl 40 vlan 15 flexbytes () fwd pf queue 2 fd_id 2\"\n- % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002\\\n- tos 2 ttl 40 vlan 255 flexbytes () fwd pf queue 3 fd_id 3\"\n- % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP add flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002\\\n- tos 2 ttl 40 vlan 4095 flexbytes () fwd pf queue 3 fd_id 4\"\n- % self.dut_ports[0], \"testpmd>\")\n-\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=1) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 1)\n-\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=15) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 2)\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=255) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 3)\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=4095) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 3)\n-\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002\\\n- tos 2 ttl 40 vlan 1 flexbytes () fwd pf queue 1 fd_id 1\"\n- % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002\\\n- tos 2 ttl 40 vlan 15 flexbytes () fwd pf queue 2 fd_id 2\"\n- % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002\\\n- tos 2 ttl 40 vlan 255 flexbytes () fwd pf queue 3 fd_id 3\"\n- % self.dut_ports[0], \"testpmd>\")\n- self.dut.send_expect(\"flow_director_filter %d mode IP del flow ipv4-udp src 192.168.1.1 1001 dst 192.168.1.2 1002\\\n- tos 2 ttl 40 vlan 4095 flexbytes () fwd pf queue 3 fd_id 4\"\n- % self.dut_ports[0], \"testpmd>\")\n-\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=1) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 0)\n-\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=15) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=255) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 0)\n- self.send_and_verify(True, 'sendp([Ether(src=get_if_hwaddr(\"%s\"), dst=\"00:1B:21:8E:B2:30\") \\\n- /Dot1Q(id=0x8100,vlan=4095) \\\n- /IP(src=\"192.168.1.1\", dst=\"192.168.1.2\", tos=2, proto=17, ttl=40) \\\n- /UDP(sport=1001,dport=1002) \\\n- /Raw(load=\"X\"*20)], iface=\"%s\")' \\\n- % (self.dut_rx_interface, self.dut_rx_interface), queueid = 0)\n-\n-\n-\n- def failed_test_fdir_flush(self):\n- \"\"\"\n- FDir flush in Fortville.\n- \"\"\"\n-\n- self.dut.kill_all()\n-\n- self.dut.send_expect(\"%s -c %s -n 4 -- -i --portmask=%s --disable-rss --rxq=8 --txq=8 --nb-cores=16 --nb-ports=2 --pkt-filter-mode=perfect\" % (self.path, self.all_cores_mask, utils.create_mask([self.dut_ports[0]])), \"testpmd>\", 120)\n-\n- self.dut.send_expect(\"set verbose 1\", \"testpmd>\")\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd>\")\n-\n- # set up a fdir rule and check guarant_count\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src 192.168.0.1 dst 192.168.0.2 tos 2 proto 20 ttl 40 vlan 0 flexbytes () fwd pf queue %d fd_id %d \" % (self.dut_ports[0], 2, 1), \"testpmd>\")\n- out = self.dut.send_expect(\"show port fdir all\", \"testpmd>\")\n- result_scanner = r\"guarant_count: 1\"\n- scanner = re.compile(result_scanner, re.DOTALL)\n- m = scanner.search(out)\n- if m:\n- self.verify(1, \"Pass\")\n- else:\n- self.verify(0, \"Fail\")\n-\n- # flush all fdir rule and check guarant_count\n- out = self.dut.send_expect(\"flush_flow_director %s\" % self.dut_ports[0], \"testpmd>\")\n- result_scanner = r\"guarant_count: 1\"\n- scanner = re.compile(result_scanner, re.DOTALL)\n- m = scanner.search(out)\n- if m:\n- self.verify(0, \"Fail\")\n- else:\n- self.verify(1, \"Pass\")\n-\n- def increment_ip_address(self, addr, val):\n- \"\"\"\n- Returns the IP address from a given one, like\n- 192.168.1.1 ->193.168.1.1\n- If disable ip hw chksum, csum routine will increase ip\n- \"\"\"\n- ip2int = lambda ipstr: struct.unpack('!I', socket.inet_aton(ipstr))[0]\n- x = ip2int(addr)\n- int2ip = lambda n: socket.inet_ntoa(struct.pack('!I', n))\n- return int2ip(x + 1)\n-\n- def fdir_perf_set_rules(self, num_rules):\n-\n- src_ip_temp = self.src_ip\n- dst_ip_temp = self.dst_ip\n- for i in range(num_rules):\n- src_ip_temp = self.increment_ip_address(src_ip_temp, 1)\n- dst_ip_temp = self.increment_ip_address(dst_ip_temp, 1)\n- self.dut.send_expect(\"flow_director_filter %s mode IP add flow ipv4-other src %s dst %s tos 2 proto 20 ttl 40 vlan 0 flexbytes (%s) fwd pf queue %d fd_id %d \" % (self.dut_ports[0], src_ip_temp, dst_ip_temp, self.flexbytes, i % self.queue, i), \"testpmd>\")\n-\n- def fdir_perf_set_flows(self, num_flows, frame_size):\n- \"\"\"\n- Fdir Performance Benchmarking set Ixia flows\n- \"\"\"\n- flows = []\n- src_ip_temp = self.src_ip\n- dst_ip_temp = self.dst_ip\n- print(\"*src_ip_temp = \" + src_ip_temp + \"dst_ip_temp = \" + dst_ip_temp)\n- flows.append(\"Ether(src='52:00:00:00:00:00', dst='00:1B:21:8E:B2:30')/IP(src='%s',dst='%s')/UDP(sport=%d,dport=%d)/Raw(load='%s' + 'X'*(%d - 42 - %d))\" % (src_ip_temp, dst_ip_temp, 1021, 1021, self.payload, frame_size, self.flexlength))\n- self.scapyCmds.append('wrpcap(\"/root/test1.pcap\", [%s])' % ','.join(flows))\n- flows = []\n- flows.append(\"Ether(src='52:00:00:00:00:01', dst='00:1B:21:8E:B2:31')/IP(src='%s',dst='%s')/UDP(sport=%d,dport=%d)/Raw(load='%s' + 'X'*(%d - 42 - %d))\" % (src_ip_temp, dst_ip_temp, 1021, 1021, self.payload, frame_size, self.flexlength))\n- self.scapyCmds.append('wrpcap(\"/root/test2.pcap\", [%s])' % ','.join(flows))\n-\n- def perf_fdir_performance_2ports(self, test_type, num_rules, num_flows):\n- \"\"\"\n- fdir Performance Benchmarking with 2 ports.\n- \"\"\"\n- # prepare traffic generator input\n- tgen_input = []\n-\n- tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),\n- self.tester.get_local_port(self.dut_ports[1]),\n- \"/root/test1.pcap\"))\n- tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),\n- self.tester.get_local_port(self.dut_ports[0]),\n- \"/root/test2.pcap\"))\n-\n- print(\"self.ports_socket=%s\" % (self.ports_socket))\n- # run testpmd for each core config\n- for test_cycle in self.test_cycles:\n- print(\"******************test cycles*********************\\n\")\n- core_config = test_cycle['cores']\n-\n- core_list = self.dut.get_core_list(core_config, socket=self.ports_socket)\n-\n- if len(core_list) > 2:\n- self.queues = len(core_list) / 2\n- else:\n- self.queues = 1\n-\n- core_mask = utils.create_mask(core_list)\n- port_mask = utils.create_mask([self.dut_ports[0], self.dut_ports[1]])\n-\n- if test_type == \"fdir_disable\":\n- command_line = \"%s -c 0xff00ff -n %d -- -i --rxq=2 --txq=2 --rxd=512 --txd=512 --burst=32 --rxfreet=64 --txfreet=64 --mbcache=256 \\\n- --portmask=%s --nb-cores=4 --nb-ports=2 --rss-ip\\\n- \" % (self.path, self.dut.get_memory_channels(), port_mask)\n- else:\n- command_line = \"%s -c 0xff00ff -n %d -- -i --rxq=2 --txq=2 --rxd=512 --txd=512 --burst=32 --rxfreet=64 --txfreet=64 --mbcache=256 \\\n- --portmask=%s --nb-cores=4 --nb-ports=2 --rss-ip\\\n- --pkt-filter-mode=perfect\" % (self.path, self.dut.get_memory_channels(), port_mask)\n-\n- info = \"Executing PMD using %s\\n\" % test_cycle['cores']\n- self.logger.info(info)\n- self.rst_report(info, annex=True)\n- self.rst_report(command_line + \"\\n\\n\", frame=True, annex=True)\n-\n- out = self.dut.send_expect(command_line, \"testpmd> \", 100)\n- print(out)\n-\n- self.fdir_get_flexbytes()\n-\n- if test_type in [\"fdir_noflex\", \"fdir_2flex\", \"fdir_16flex\"]:\n- self.fdir_set_rule()\n- self.fdir_perf_set_rules(num_rules)\n- out = self.dut.send_expect(\"start\", \"testpmd> \")\n- print(out)\n- for frame_size in self.frame_sizes:\n- print(\"******************frame size = %d*********************\\n\" % (frame_size))\n- wirespeed = self.wirespeed(self.nic, frame_size, 2)\n- # create pcap file\n- self.logger.info(\"Running with frame size %d \" % frame_size)\n- self.fdir_perf_set_flows(num_flows, frame_size)\n-\n- self.scapy_execute()\n-\n- \"\"\"\n- tgen_input.append([self.tester.get_local_port(self.dut_ports[0]),\n- self.tester.get_local_port(self.dut_ports[1]),\n- \"test.pcap\", (512.00 / wirespeed * 100.00), 1])\n- tgen_input.append([self.tester.get_local_port(self.dut_ports[1]),\n- self.tester.get_local_port(self.dut_ports[0]),\n- \"test.pcap\", (512.00 / wirespeed * 100.00), 1])\n- \"\"\"\n-\n- \"\"\"\n- # create pcap file\n- self.logger.info(\"Running with frame size %d \" % frame_size)\n- self.fdir_perf_set_flows(num_flows, frame_size)\n-\n- self.tester.scapy_execute()\n- \"\"\"\n-\n- # run traffic generator\n- streams = self.pktgen_helper.prepare_stream_from_tginput(tgen_input, 100,\n- None, self.tester.pktgen)\n- _, pps = self.tester.pktgen.measure_throughput(stream_ids=streams)\n- \"\"\"\n- _, pps, _ = self.throughputRate(tgen_input)\n- \"\"\"\n-\n- out = self.dut.send_expect(\"show port stats all\", \"testpmd> \", timeout=60)\n- print(out)\n-\n- pps /= 1000000.0\n- test_cycle['Mpps'][frame_size] = pps\n- test_cycle['pct'][frame_size] = pps * 100 / wirespeed\n-\n- self.dut.send_expect(\"stop\", \"testpmd> \")\n- self.dut.send_expect(\"quit\", \"# \", 30)\n- sleep(5)\n-\n- for n in range(len(self.test_cycles)):\n- for frame_size in self.frame_sizes:\n- self.verify(self.test_cycles[n]['Mpps'][\n- frame_size] > 0, \"No traffic detected\")\n-\n- # Print results\n- self.result_table_create(self.table_header)\n- for frame_size in self.frame_sizes:\n- table_row = [frame_size]\n- for test_cycle in self.test_cycles:\n- table_row.append(test_cycle['Mpps'][frame_size])\n- table_row.append(test_cycle['pct'][frame_size])\n-\n- self.result_table_add(table_row)\n-\n- self.result_table_print()\n-\n- def test_perf_fdir_performance_2ports(self):\n- \"\"\"\n- fdir Performance Benchmarking with 2 ports.\n- \"\"\"\n- for test_type in self.test_types:\n- print(\"***************\\n\")\n- print(test_type)\n- print(\"***************\\n\")\n- if test_type in [\"fdir_enable\", \"fdir_disable\"]:\n- num_rules = 0\n- num_flows = 64\n- print(\"************%d rules/%d flows********************\" % (num_rules, num_flows))\n- self.perf_fdir_performance_2ports(test_type, num_rules, num_flows)\n- elif test_type in [\"fdir_noflexbytes\", \"fdir_2flexbytes\", \"fdir_16flexbytes\"]:\n- for flows in self.flows:\n- num_rules = flows[\"rules\"]\n- num_flows = flows[\"flows\"]\n- print(\"************%d rules/%d flows********************\" % (num_rules, num_flows))\n- self.perf_fdir_performance_2ports(test_type, num_rules, num_flows)\n-\n- def tear_down(self):\n- \"\"\"\n- Run after each test case.\n- \"\"\"\n- self.end_scapy()\n-\n- def tear_down_all(self):\n- \"\"\"\n- Run after each test suite.\n- \"\"\"\n- pass\n", "prefixes": [ "V1", "3/3" ] }{ "id": 104844, "url": "