Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/116621/?format=api
http://patches.dpdk.org/api/patches/116621/?format=api", "web_url": "http://patches.dpdk.org/project/dts/patch/20220922142950.398902-4-hongbox.li@intel.com/", "project": { "id": 3, "url": "http://patches.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<20220922142950.398902-4-hongbox.li@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20220922142950.398902-4-hongbox.li@intel.com", "date": "2022-09-22T14:29:47", "name": "[V1,4/7] tests/tso:Separated performance cases", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "e642654a4230d28a13151cf94e53084e1977e41b", "submitter": { "id": 2804, "url": "http://patches.dpdk.org/api/people/2804/?format=api", "name": "Li, HongboX", "email": "hongbox.li@intel.com" }, "delegate": null, "mbox": "http://patches.dpdk.org/project/dts/patch/20220922142950.398902-4-hongbox.li@intel.com/mbox/", "series": [ { "id": 24769, "url": "http://patches.dpdk.org/api/series/24769/?format=api", "web_url": "http://patches.dpdk.org/project/dts/list/?series=24769", "date": "2022-09-22T14:29:44", "name": "[V1,1/7] tests/efd:Separated performance cases", "version": 1, "mbox": "http://patches.dpdk.org/series/24769/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/116621/comments/", "check": "pending", "checks": "http://patches.dpdk.org/api/patches/116621/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 EC492A0540;\n\tThu, 22 Sep 2022 08:18:26 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E664D4067C;\n\tThu, 22 Sep 2022 08:18:26 +0200 (CEST)", "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n by mails.dpdk.org (Postfix) with ESMTP id 2320C40156\n for <dts@dpdk.org>; Thu, 22 Sep 2022 08:18:24 +0200 (CEST)", "from fmsmga005.fm.intel.com ([10.253.24.32])\n by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 21 Sep 2022 23:18:24 -0700", "from unknown (HELO localhost.localdomain) ([10.239.252.92])\n by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 21 Sep 2022 23:17:47 -0700" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1663827505; x=1695363505;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=FFu1zG70gDTuqoCXXC/h09KCMyxMgr+Xaf2enIHejGE=;\n b=BMQpm74AJqS9VDKyp4j/ZuCxOQ3s5dK6qf4PqCVAuLw7lgyGMlOfQ+mf\n ilQLkFRCzeCg356QwhvlMD73Q6BDhv6JoJiHZ3aozSjMNhITWHAohXjbx\n DzAotO7PK2o2QXvCtq8Cpe9jD4QaAuAIfqqn+vJBoFIgCKyxEu+ptznuT\n bHzeg3H+1e/PJmqj7LipEK42FpJAdwiD7ps0MY4xdVxdEP4N1HcsOnb1x\n XUwscH8Tf0mWZ6BAeto7pVSZQ6FPBnAFwsFWOlNCwqGu4hhaz1oaDtV4G\n Y/2z34CfaKKzSiBqJ5mxpu7osWChP8qJ5dpFxKZkkVXb4l+RP6BYhOakY A==;", "X-IronPort-AV": [ "E=McAfee;i=\"6500,9779,10477\"; a=\"301617773\"", "E=Sophos;i=\"5.93,335,1654585200\"; d=\"scan'208\";a=\"301617773\"", "E=Sophos;i=\"5.93,335,1654585200\"; d=\"scan'208\";a=\"948466152\"" ], "From": "Hongbo Li <hongbox.li@intel.com>", "To": "dts@dpdk.org", "Cc": "Hongbo Li <hongbox.li@intel.com>", "Subject": "[dts][PATCH V1 4/7] tests/tso:Separated performance cases", "Date": "Thu, 22 Sep 2022 14:29:47 +0000", "Message-Id": "<20220922142950.398902-4-hongbox.li@intel.com>", "X-Mailer": "git-send-email 2.25.1", "In-Reply-To": "<20220922142950.398902-1-hongbox.li@intel.com>", "References": "<20220922142950.398902-1-hongbox.li@intel.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org" }, "content": "Separated performance cases\n\nSigned-off-by: Hongbo Li <hongbox.li@intel.com>\n---\n test_plans/perf_tso_test_plan.rst | 82 +++++++++++\n test_plans/tso_test_plan.rst | 35 -----\n tests/TestSuite_perf_tso.py | 221 ++++++++++++++++++++++++++++++\n tests/TestSuite_tso.py | 128 -----------------\n 4 files changed, 303 insertions(+), 163 deletions(-)\n create mode 100644 test_plans/perf_tso_test_plan.rst\n create mode 100644 tests/TestSuite_perf_tso.py", "diff": "diff --git a/test_plans/perf_tso_test_plan.rst b/test_plans/perf_tso_test_plan.rst\nnew file mode 100644\nindex 00000000..9dcdd4c3\n--- /dev/null\n+++ b/test_plans/perf_tso_test_plan.rst\n@@ -0,0 +1,82 @@\n+.. SPDX-License-Identifier: BSD-3-Clause\n+ Copyright(c) 2015-2017 Intel Corporation\n+\n+=========================================\n+Transmit Segmentation Offload (TSO) Tests\n+=========================================\n+\n+Description\n+===========\n+\n+This document provides the plan for testing the TSO (Transmit Segmentation\n+Offload, also called Large Send offload - LSO) feature of\n+Intel Ethernet Controller, including Intel 82599 10GbE Ethernet Controller and\n+Intel® Ethernet Converged Network Adapter XL710-QDA2. TSO enables the TCP/IP stack to\n+pass the network device a larger ULP datagram than the Maximum Transmit\n+Unit Size (MTU). NIC divides the large ULP datagram to multiple segments\n+according to the MTU size.\n+\n+\n+Prerequisites\n+=============\n+\n+The DUT must take one of the Ethernet controller ports connected to a port on another\n+device that is controlled by the Scapy packet generator.\n+\n+The Ethernet interface identifier of the port that Scapy will use must be known.\n+On tester, all offload feature should be disabled on tx port, and start rx port capture::\n+\n+ ethtool -K <tx port> rx off tx off tso off gso off gro off lro off\n+ ip l set <tx port> up\n+ tcpdump -n -e -i <rx port> -s 0 -w /tmp/cap\n+\n+\n+On DUT, run pmd with parameter \"--enable-rx-cksum\". Then enable TSO on tx port\n+and checksum on rx port. The test commands is below::\n+\n+ #enable hw checksum on rx port\n+ tx_checksum set ip hw 0\n+ tx_checksum set udp hw 0\n+ tx_checksum set tcp hw 0\n+ tx_checksum set sctp hw 0\n+ set fwd csum\n+\n+ # enable TSO on tx port\n+ *tso set 800 1\n+\n+\n+\n+Test case: TSO performance\n+==========================\n+\n+Set the packet stream as below before testing\n+\n++-------+---------+---------+---------+----------+----------+\n+| Frame | 1S/1C/1T| 1S/1C/1T| 1S/2C/1T| 1S/2C/2T | 1S/2C/2T |\n+| Size | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 64 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 65 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 128 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 256 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 512 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 1024 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 1280 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+| 1518 | | | | | |\n++-------+---------+---------+---------+----------+----------+\n+\n+Then run the test application as below::\n+\n+ ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xffffffff -n 2 -- -i --rxd=512 --txd=512\n+ --burst=32 --rxfreet=64 --mbcache=128 --portmask=0x3 --txpt=36 --txht=0 --txwt=0\n+ --txfreet=32 --txrst=32 --enable-rx-cksum\n+\n+The -n command is used to select the number of memory channels. It should match the\n+number of memory channels on that setup.\ndiff --git a/test_plans/tso_test_plan.rst b/test_plans/tso_test_plan.rst\nindex d0f96b2b..7b7077b7 100644\n--- a/test_plans/tso_test_plan.rst\n+++ b/test_plans/tso_test_plan.rst\n@@ -131,38 +131,3 @@ Test nvgre() in scapy::\n \n sendp([Ether(dst=\"%s\",src=\"52:00:00:00:00:00\")/IP(src=\"192.168.1.1\",dst=\"192.168.1.2\",proto=47)/NVGRE()/Ether(dst=%s,src=\"52:00:00:00:00:00\")/IP(src=\"192.168.1.1\",dst=\"192.168.1.2\")/TCP(sport=\"1021\",dport=\"1021\")/(\"X\"*%s)], iface=\"%s\")\n \n-Test case: TSO performance\n-==========================\n-\n-Set the packet stream to be sent out from packet generator before testing as\n-below.\n-\n-+-------+---------+---------+---------+----------+----------+\n-| Frame | 1S/1C/1T| 1S/1C/1T| 1S/2C/1T| 1S/2C/2T | 1S/2C/2T |\n-| Size | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 64 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 65 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 128 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 256 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 512 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 1024 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 1280 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-| 1518 | | | | | |\n-+-------+---------+---------+---------+----------+----------+\n-\n-Then run the test application as below::\n-\n- ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xffffffff -n 2 -- -i --rxd=512 --txd=512\n- --burst=32 --rxfreet=64 --mbcache=128 --portmask=0x3 --txpt=36 --txht=0 --txwt=0\n- --txfreet=32 --txrst=32 --enable-rx-cksum\n-\n-The -n command is used to select the number of memory channels. It should match the\n-number of memory channels on that setup.\ndiff --git a/tests/TestSuite_perf_tso.py b/tests/TestSuite_perf_tso.py\nnew file mode 100644\nindex 00000000..3821ecd1\n--- /dev/null\n+++ b/tests/TestSuite_perf_tso.py\n@@ -0,0 +1,221 @@\n+import os\n+import time\n+\n+import framework.utils as utils\n+from framework.pktgen import PacketGeneratorHelper\n+from framework.settings import HEADER_SIZE\n+from framework.test_case import TestCase\n+\n+DEFAULT_MUT = 1500\n+TSO_MTU = 9000\n+\n+\n+class TestTSO(TestCase):\n+ dut_ports = []\n+\n+ def set_up_all(self):\n+ \"\"\"\n+ Run at the start of each test suite.\n+ \"\"\"\n+ # Based on h/w type, choose how many ports to use\n+ self.dut_ports = self.dut.get_ports(self.nic)\n+\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+ 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+\n+ self.loading_sizes = [128, 800, 801, 1700, 2500]\n+ self.rxfreet_values = [0, 8, 16, 32, 64, 128]\n+\n+ self.test_cycles = [{\"cores\": \"\", \"Mpps\": {}, \"pct\": {}}]\n+\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+\n+ self.eal_param = self.dut.create_eal_parameters(\n+ cores=\"1S/2C/1T\", socket=self.ports_socket, ports=self.dut_ports\n+ )\n+\n+ self.headers_size = HEADER_SIZE[\"eth\"] + HEADER_SIZE[\"ip\"] + HEADER_SIZE[\"tcp\"]\n+ self.tester.send_expect(\n+ \"ifconfig %s mtu %s\"\n+ % (\n+ self.tester.get_interface(\n+ self.tester.get_local_port(self.dut_ports[0])\n+ ),\n+ TSO_MTU,\n+ ),\n+ \"# \",\n+ )\n+ # get dts output path\n+ if self.logger.log_path.startswith(os.sep):\n+ self.output_path = self.logger.log_path\n+ else:\n+ cur_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))\n+ self.output_path = os.sep.join([cur_path, self.logger.log_path])\n+ # create an instance to set stream field setting\n+ self.pktgen_helper = PacketGeneratorHelper()\n+ self.path = self.dut.apps_name[\"test-pmd\"]\n+\n+ def set_up(self):\n+ \"\"\"\n+ Run before each test case.\n+ \"\"\"\n+ pass\n+\n+ def test_perf_TSO_2ports(self):\n+ \"\"\"\n+ TSO Performance Benchmarking with 2 ports.\n+ \"\"\"\n+\n+ # prepare traffic generator input\n+ tgen_input = []\n+\n+ # run testpmd for each core config\n+ for test_cycle in self.test_cycles:\n+ core_config = test_cycle[\"cores\"]\n+ cores = self.dut.get_core_list(core_config, socket=self.ports_socket)\n+ self.coreMask = utils.create_mask(cores)\n+ if len(cores) > 2:\n+ queues = len(cores) // 2\n+ else:\n+ queues = 1\n+\n+ command_line = (\n+ \"%s %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --max-pkt-len=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 \"\n+ % (self.path, self.eal_param, self.portMask, TSO_MTU)\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+ self.dut.send_expect(command_line, \"testpmd> \", 120)\n+ self.dut.send_expect(\"port stop all\", \"testpmd> \", 120)\n+ self.dut.send_expect(\n+ \"csum set ip hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set udp hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set tcp hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set sctp hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set outer-ip hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum parse-tunnel on %d\" % self.dut_ports[0], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set ip hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set udp hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set tcp hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set sctp hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum set outer-ip hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\n+ \"csum parse-tunnel on %d\" % self.dut_ports[1], \"testpmd> \", 120\n+ )\n+ self.dut.send_expect(\"tso set 800 %d\" % self.dut_ports[1], \"testpmd> \", 120)\n+ self.dut.send_expect(\"set fwd csum\", \"testpmd> \", 120)\n+ self.dut.send_expect(\"port start all\", \"testpmd> \", 120)\n+ self.dut.send_expect(\"set promisc all off\", \"testpmd> \", 120)\n+ self.dut.send_expect(\"start\", \"testpmd> \")\n+ for loading_size in self.loading_sizes:\n+ frame_size = loading_size + self.headers_size\n+ wirespeed = self.wirespeed(self.nic, frame_size, 2)\n+\n+ # create pcap file\n+ self.logger.info(\"Running with frame size %d \" % frame_size)\n+ payload_size = frame_size - self.headers_size\n+ for _port in range(2):\n+ mac = self.dut.get_mac_address(self.dut_ports[_port])\n+\n+ pcap = os.sep.join([self.output_path, \"dts{0}.pcap\".format(_port)])\n+ self.tester.scapy_append(\n+ 'wrpcap(\"%s\", [Ether(dst=\"%s\",src=\"52:00:00:00:00:01\")/IP(src=\"192.168.1.1\",dst=\"192.168.1.2\")/TCP(sport=1021,dport=1021)/(\"X\"*%d)])'\n+ % (pcap, mac, payload_size)\n+ )\n+ tgen_input.append(\n+ (\n+ self.tester.get_local_port(self.dut_ports[_port]),\n+ self.tester.get_local_port(self.dut_ports[1 - _port]),\n+ \"%s\" % pcap,\n+ )\n+ )\n+ self.tester.scapy_execute()\n+\n+ # clear streams before add new streams\n+ self.tester.pktgen.clear_streams()\n+ # run packet generator\n+ streams = self.pktgen_helper.prepare_stream_from_tginput(\n+ tgen_input, 100, None, self.tester.pktgen\n+ )\n+ _, pps = self.tester.pktgen.measure_throughput(stream_ids=streams)\n+\n+ pps /= 1000000.0\n+ test_cycle[\"Mpps\"][loading_size] = pps\n+ test_cycle[\"pct\"][loading_size] = pps * 100 // wirespeed\n+\n+ self.dut.send_expect(\"stop\", \"testpmd> \")\n+ self.dut.send_expect(\"quit\", \"# \", 30)\n+ time.sleep(5)\n+\n+ for n in range(len(self.test_cycles)):\n+ for loading_size in self.loading_sizes:\n+ self.verify(\n+ self.test_cycles[n][\"Mpps\"][loading_size] > 0, \"No traffic detected\"\n+ )\n+\n+ # Print results\n+ self.result_table_create(self.table_header)\n+ for loading_size in self.loading_sizes:\n+ table_row = [loading_size]\n+ for test_cycle in self.test_cycles:\n+ table_row.append(test_cycle[\"Mpps\"][loading_size])\n+ table_row.append(test_cycle[\"pct\"][loading_size])\n+\n+ self.result_table_add(table_row)\n+\n+ self.result_table_print()\n+\n+ def tear_down(self):\n+ \"\"\"\n+ Run after each test case.\n+ \"\"\"\n+ self.dut.send_expect(\"quit\", \"# \")\n+ self.dut.kill_all()\n+ time.sleep(2)\n+\n+ def tear_down_all(self):\n+ \"\"\"\n+ Run after each test suite.\n+ \"\"\"\n+ self.tester.send_expect(\n+ \"ifconfig %s mtu %s\"\n+ % (\n+ self.tester.get_interface(\n+ self.tester.get_local_port(self.dut_ports[0])\n+ ),\n+ DEFAULT_MUT,\n+ ),\n+ \"# \",\n+ )\ndiff --git a/tests/TestSuite_tso.py b/tests/TestSuite_tso.py\nindex 49db011d..c4f25afc 100644\n--- a/tests/TestSuite_tso.py\n+++ b/tests/TestSuite_tso.py\n@@ -487,134 +487,6 @@ class TestTSO(TestCase):\n )\n self.get_chksum_value_and_verify(dump_pcap, save_file, Nic_list)\n \n- def test_perf_TSO_2ports(self):\n- \"\"\"\n- TSO Performance Benchmarking with 2 ports.\n- \"\"\"\n-\n- # prepare traffic generator input\n- tgen_input = []\n-\n- # run testpmd for each core config\n- for test_cycle in self.test_cycles:\n- core_config = test_cycle[\"cores\"]\n- cores = self.dut.get_core_list(core_config, socket=self.ports_socket)\n- self.coreMask = utils.create_mask(cores)\n- if len(cores) > 2:\n- queues = len(cores) // 2\n- else:\n- queues = 1\n-\n- command_line = (\n- \"%s %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --max-pkt-len=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 \"\n- % (self.path, self.eal_param, self.portMask, TSO_MTU)\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- self.dut.send_expect(command_line, \"testpmd> \", 120)\n- self.dut.send_expect(\"port stop all\", \"testpmd> \", 120)\n- self.dut.send_expect(\n- \"csum set ip hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set udp hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set tcp hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set sctp hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set outer-ip hw %d\" % self.dut_ports[0], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum parse-tunnel on %d\" % self.dut_ports[0], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set ip hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set udp hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set tcp hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set sctp hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum set outer-ip hw %d\" % self.dut_ports[1], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\n- \"csum parse-tunnel on %d\" % self.dut_ports[1], \"testpmd> \", 120\n- )\n- self.dut.send_expect(\"tso set 800 %d\" % self.dut_ports[1], \"testpmd> \", 120)\n- self.dut.send_expect(\"set fwd csum\", \"testpmd> \", 120)\n- self.dut.send_expect(\"port start all\", \"testpmd> \", 120)\n- self.dut.send_expect(\"set promisc all off\", \"testpmd> \", 120)\n- self.dut.send_expect(\"start\", \"testpmd> \")\n- for loading_size in self.loading_sizes:\n- frame_size = loading_size + self.headers_size\n- wirespeed = self.wirespeed(self.nic, frame_size, 2)\n-\n- # create pcap file\n- self.logger.info(\"Running with frame size %d \" % frame_size)\n- payload_size = frame_size - self.headers_size\n- for _port in range(2):\n- mac = self.dut.get_mac_address(self.dut_ports[_port])\n-\n- pcap = os.sep.join([self.output_path, \"dts{0}.pcap\".format(_port)])\n- self.tester.scapy_append(\n- 'wrpcap(\"%s\", [Ether(dst=\"%s\",src=\"52:00:00:00:00:01\")/IP(src=\"192.168.1.1\",dst=\"192.168.1.2\")/TCP(sport=1021,dport=1021)/(\"X\"*%d)])'\n- % (pcap, mac, payload_size)\n- )\n- tgen_input.append(\n- (\n- self.tester.get_local_port(self.dut_ports[_port]),\n- self.tester.get_local_port(self.dut_ports[1 - _port]),\n- \"%s\" % pcap,\n- )\n- )\n- self.tester.scapy_execute()\n-\n- # clear streams before add new streams\n- self.tester.pktgen.clear_streams()\n- # run packet generator\n- streams = self.pktgen_helper.prepare_stream_from_tginput(\n- tgen_input, 100, None, self.tester.pktgen\n- )\n- _, pps = self.tester.pktgen.measure_throughput(stream_ids=streams)\n-\n- pps /= 1000000.0\n- test_cycle[\"Mpps\"][loading_size] = pps\n- test_cycle[\"pct\"][loading_size] = pps * 100 // wirespeed\n-\n- self.dut.send_expect(\"stop\", \"testpmd> \")\n- self.dut.send_expect(\"quit\", \"# \", 30)\n- time.sleep(5)\n-\n- for n in range(len(self.test_cycles)):\n- for loading_size in self.loading_sizes:\n- self.verify(\n- self.test_cycles[n][\"Mpps\"][loading_size] > 0, \"No traffic detected\"\n- )\n-\n- # Print results\n- self.result_table_create(self.table_header)\n- for loading_size in self.loading_sizes:\n- table_row = [loading_size]\n- for test_cycle in self.test_cycles:\n- table_row.append(test_cycle[\"Mpps\"][loading_size])\n- table_row.append(test_cycle[\"pct\"][loading_size])\n-\n- self.result_table_add(table_row)\n-\n- self.result_table_print()\n-\n def tear_down(self):\n \"\"\"\n Run after each test case.\n", "prefixes": [ "V1", "4/7" ] }{ "id": 116621, "url": "