From patchwork Fri Sep 23 09:54:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Huang, ZhiminX" X-Patchwork-Id: 116700 Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id 78BC5A054D; Fri, 23 Sep 2022 03:42:36 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 10F6D41145; Fri, 23 Sep 2022 03:42:36 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id DB2FB40156 for ; Fri, 23 Sep 2022 03:42:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663897355; x=1695433355; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=+wp86wVcSu6HilJfIlqJ4JJbnOgPwDkyd3MU0X092t8=; b=BJ2fgvXPuZviFn4dc1pfp/b7FoQnDEQUSrg2ozcE4AcKRBhqupe3sMks oC7k67nkZxJyoQyoSwVZqmujAb78ScH55zXokC6lE6zrxjTFQgfy5Nckp ySg1lu2PqJArDFTLnrrrXr4frGZgHanf/KkwQPJPAAwj2DVqXPnsfwz+D y7TSEDoc7+XPUT3zzIcvd7VHjmZGkSuA93aE0aOP8DjRjDLKGfM59E7yb LniPwM2L8Zgm2kGB3kH0MJEMbr/hvBT5lJ3YzdRnJGbDK7eWzwXMkDijW DaszHN89ib3Xo5F/dNIYua4moIuf3dLlt6l6+/CptuLEA39j/Txy8B1qG A==; X-IronPort-AV: E=McAfee;i="6500,9779,10478"; a="280851506" X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="280851506" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2022 18:42:27 -0700 X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="597689034" Received: from unknown (HELO cvl_100g_103.icx.intel.com) ([10.239.252.93]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2022 18:42:25 -0700 From: Zhimin Huang To: dts@dpdk.org Cc: Zhimin Huang Subject: [dts][PATCH V5 2/3] tests/*:modify cases to check dcf as a full feature pmd Date: Fri, 23 Sep 2022 17:54:57 +0800 Message-Id: <20220923095458.28070-2-zhiminx.huang@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220923095458.28070-1-zhiminx.huang@intel.com> References: <20220923095458.28070-1-zhiminx.huang@intel.com> X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org the dcf mode support more pmd feature in dpdk22.07. modify cases to support dcf and check normal datapath in dcf mode. Signed-off-by: Zhimin Huang Acked-by: Xueqin Lin Tested-by: Jiale Song < songx.jiale@intel.com> --- v5: -detailed the subject and comments. tests/TestSuite_kernelpf_iavf.py | 146 +++++++++++++++++++++++++++---- tests/TestSuite_stats_checks.py | 18 +++- tests/TestSuite_vf_macfilter.py | 34 ++++++- tests/TestSuite_vf_offload.py | 63 ++++++++++--- tests/TestSuite_vf_rss.py | 44 +++++++--- tests/TestSuite_vf_smoke.py | 18 +++- tests/TestSuite_vf_vlan.py | 73 ++++++++++++++-- 7 files changed, 344 insertions(+), 52 deletions(-) diff --git a/tests/TestSuite_kernelpf_iavf.py b/tests/TestSuite_kernelpf_iavf.py index a6d4d016..190f9fa5 100644 --- a/tests/TestSuite_kernelpf_iavf.py +++ b/tests/TestSuite_kernelpf_iavf.py @@ -16,7 +16,7 @@ import time import framework.utils as utils from framework.packet import Packet from framework.pmd_output import PmdOutput -from framework.settings import HEADER_SIZE +from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting from framework.test_case import TestCase from framework.utils import RED from framework.virt_common import VM @@ -74,6 +74,7 @@ class TestKernelpfIavf(TestCase): # get priv-flags default stats self.flag = "vf-vlan-pruning" self.default_stats = self.dut.get_priv_flags_state(self.host_intf, self.flag) + self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING) def set_up(self): @@ -85,6 +86,10 @@ class TestKernelpfIavf(TestCase): self.destroy_vm_env() elif self.env_done is False: self.setup_vm_env() + if self.dcf_mode: + self.dut.send_expect( + "ip link set %s vf 0 trust on" % (self.host_intf), "# " + ) def setup_vm_env(self, driver="default", set_vf_mac=True): """ @@ -145,6 +150,7 @@ class TestKernelpfIavf(TestCase): raise Exception("Set up VM ENV failed!") self.vm_testpmd = PmdOutput(self.vm_dut) + self.vf_guest_pci = self.vm.pci_maps[0]["guestpci"] except Exception as e: self.destroy_vm_env() raise Exception(e) @@ -199,7 +205,14 @@ class TestKernelpfIavf(TestCase): """ Set rxonly forward,Send 100 random packets from tester, check packets can be received """ - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("set fwd rxonly") self.vm_testpmd.execute_cmd("set verbose 1") self.vm_testpmd.execute_cmd("start") @@ -234,7 +247,14 @@ class TestKernelpfIavf(TestCase): Not set VF MAC from kernel PF for this case, if set, will print "not permitted error" when add new MAC for VF. """ - out = self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + out = self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + out = self.vm_testpmd.start_testpmd("all") self.testpmd_mac = self.get_testpmd_vf_mac(out) self.vm_testpmd.execute_cmd("set fwd mac") self.vm_testpmd.execute_cmd("set promisc all off") @@ -282,7 +302,14 @@ class TestKernelpfIavf(TestCase): Enable kernel trust mode """ self.dut.send_expect("ip link set dev %s vf 0 trust on" % self.host_intf, "# ") - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("set fwd mac") self.vm_testpmd.execute_cmd("set verbose 1") self.vm_testpmd.execute_cmd("start") @@ -321,7 +348,14 @@ class TestKernelpfIavf(TestCase): """ multicast_mac = "01:80:C2:00:00:08" self.dut.send_expect("ip link set dev %s vf 0 trust on" % self.host_intf, "# ") - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("set fwd mac") self.vm_testpmd.execute_cmd("set promisc all off") self.vm_testpmd.execute_cmd("set allmulti all off") @@ -345,7 +379,14 @@ class TestKernelpfIavf(TestCase): def test_vf_broadcast(self): """ """ broadcast_mac = "ff:ff:ff:ff:ff:ff" - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("set fwd mac") self.vm_testpmd.execute_cmd("set promisc all off") self.vm_testpmd.execute_cmd("set verbose 1") @@ -375,7 +416,14 @@ class TestKernelpfIavf(TestCase): return out def test_vf_vlan_insertion(self): - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") random_vlan = random.randint(1, MAX_VLAN) self.vm_testpmd.execute_cmd("vlan set strip off 0") self.vm_testpmd.execute_cmd("port stop all") @@ -396,7 +444,14 @@ class TestKernelpfIavf(TestCase): def test_vf_vlan_strip(self): random_vlan = random.randint(1, MAX_VLAN) - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("port stop all") self.vm_testpmd.execute_cmd("vlan set filter on 0") self.vm_testpmd.execute_cmd("rx_vlan add %s 0" % random_vlan) @@ -432,7 +487,14 @@ class TestKernelpfIavf(TestCase): def test_vf_vlan_filter(self): random_vlan = random.randint(2, MAX_VLAN) - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("port stop all") self.vm_testpmd.execute_cmd("set promisc all off") self.vm_testpmd.execute_cmd("vlan set filter on 0") @@ -473,7 +535,15 @@ class TestKernelpfIavf(TestCase): def test_vf_rss(self): rss_type = ["ip", "tcp", "udp"] - self.vm_testpmd.start_testpmd("all", "--txq=4 --rxq=4") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + "--txq=4 --rxq=4", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all", "--txq=4 --rxq=4") self.vm_testpmd.execute_cmd("set fwd mac") self.vm_testpmd.execute_cmd("set verbose 1") default_rss_reta = self.vm_testpmd.execute_cmd( @@ -496,7 +566,15 @@ class TestKernelpfIavf(TestCase): def test_vf_rss_hash_key(self): update_hash_key = "1b9d58a4b961d9cd1c56ad1621c3ad51632c16a5d16c21c3513d132c135d132c13ad1531c23a51d6ac49879c499d798a7d949c8a" - self.vm_testpmd.start_testpmd("all", "--txq=4 --rxq=4") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + "--txq=4 --rxq=4", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all", "--txq=4 --rxq=4") self.vm_testpmd.execute_cmd("show port 0 rss-hash key") self.vm_testpmd.execute_cmd("set fwd rxonly") self.vm_testpmd.execute_cmd("set verbose 1") @@ -681,7 +759,14 @@ class TestKernelpfIavf(TestCase): self.tester.send_expect("^C", "#") def test_vf_port_start_stop(self): - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") for i in range(10): self.vm_testpmd.execute_cmd("port stop all") self.vm_testpmd.execute_cmd("port start all") @@ -700,7 +785,14 @@ class TestKernelpfIavf(TestCase): self.verify(vf0_tx_cnt == 100, "no packet was fwd by vm0_VF0") def test_vf_statistic_reset(self): - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("set fwd mac") self.vm_testpmd.execute_cmd("set verbose 1") self.vm_testpmd.execute_cmd("start") @@ -722,7 +814,14 @@ class TestKernelpfIavf(TestCase): ) def test_vf_information(self): - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") out = self.vm_testpmd.execute_cmd("show port info 0") self.verify("Link status: up" in out, "link stats has error") self.verify("Link speed: %s" % self.speed in out, "link speed has error") @@ -791,7 +890,14 @@ class TestKernelpfIavf(TestCase): ) def test_vf_unicast(self): - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("set verbose 1") self.vm_testpmd.execute_cmd("set fwd mac") self.vm_testpmd.execute_cmd("set promisc all off") @@ -809,7 +915,14 @@ class TestKernelpfIavf(TestCase): self.verify(packets == 10, "Not receive expected packet") def test_vf_vlan_promisc(self): - self.vm_testpmd.start_testpmd("all") + if self.dcf_mode == "enable": + self.vm_testpmd.start_testpmd( + "all", + ports=[self.vf_guest_pci], + port_options={self.vf_guest_pci: "cap=dcf"}, + ) + else: + self.vm_testpmd.start_testpmd("all") self.vm_testpmd.execute_cmd("port stop all") self.vm_testpmd.execute_cmd("set promisc all on") self.vm_testpmd.execute_cmd("set fwd mac") @@ -827,6 +940,7 @@ class TestKernelpfIavf(TestCase): (self.kdriver == "i40e" and self.driver_version < "2.13.10") or (self.kdriver == "i40e" and not self.default_stats) or (self.kdriver == "ice" and not self.default_stats) + or self.dcf_mode ): self.verify(packets == 10, "Not receive expected packet") else: diff --git a/tests/TestSuite_stats_checks.py b/tests/TestSuite_stats_checks.py index 7ebb74d5..7c193442 100644 --- a/tests/TestSuite_stats_checks.py +++ b/tests/TestSuite_stats_checks.py @@ -17,6 +17,7 @@ from typing import Iterator, List, Tuple import framework.packet as packet import framework.utils as utils from framework.pmd_output import PmdOutput +from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting from framework.test_case import TestCase ETHER_HEADER_LEN = 18 @@ -241,6 +242,7 @@ class TestStatsChecks(TestCase): self.verify(len(self.dut_ports) >= 2, "Insufficient ports") self.rx_port = self.dut_ports[0] self.tx_port = self.dut_ports[1] + self.rx_intf = self.dut.ports_info[self.rx_port]["intf"] cores = self.dut.get_core_list("1S/2C/1T") self.coremask = utils.create_mask(cores) @@ -248,6 +250,7 @@ class TestStatsChecks(TestCase): self.port_mask = utils.create_mask([self.rx_port, self.tx_port]) self.pmdout = PmdOutput(self.dut) + self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING) def set_up(self): """ @@ -288,10 +291,19 @@ class TestStatsChecks(TestCase): def test_xstats_check_vf(self): self.dut.generate_sriov_vfs_by_port(self.dut_ports[0], 1, self.kdriver) + if self.dcf_mode: + self.dut.send_expect("ip link set %s vf 0 trust on" % (self.rx_intf), "# ") self.vf_port = self.dut.ports_info[self.dut_ports[0]]["vfs_port"][0] self.vf_port.bind_driver(driver="vfio-pci") self.vf_port_pci = self.dut.ports_info[self.dut_ports[0]]["sriov_vfs_pci"][0] - self.pmdout.start_testpmd( - "default", "--rxq=4 --txq=4", eal_param="-a %s" % self.vf_port_pci - ) + if self.dcf_mode == "enable": + self.pmdout.start_testpmd( + "default", + "--rxq=4 --txq=4", + eal_param="-a %s,cap=dcf" % self.vf_port_pci, + ) + else: + self.pmdout.start_testpmd( + "default", "--rxq=4 --txq=4", eal_param="-a %s" % self.vf_port_pci + ) self.xstats_check(0, 0, if_vf=True) diff --git a/tests/TestSuite_vf_macfilter.py b/tests/TestSuite_vf_macfilter.py index c2007999..e6b3131e 100644 --- a/tests/TestSuite_vf_macfilter.py +++ b/tests/TestSuite_vf_macfilter.py @@ -6,6 +6,7 @@ import re import time from framework.pmd_output import PmdOutput +from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting from framework.test_case import TestCase from framework.virt_common import VM @@ -34,6 +35,7 @@ class TestVfMacFilter(TestCase): else: self.vf_assign_method = "vfio-pci" self.dut.send_expect("modprobe vfio-pci", "#") + self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING) def set_up(self): @@ -50,10 +52,15 @@ class TestVfMacFilter(TestCase): self.dut.send_expect( "ip link set %s vf 0 mac %s" % (pf_intf0, self.pf0_vf0_mac), "#" ) + if self.dcf_mode == "enable": + self.dut.send_expect("ip link set %s vf 0 trust on" % (pf_intf0), "# ") self.used_dut_port_1 = self.dut_ports[1] self.dut.generate_sriov_vfs_by_port(self.used_dut_port_1, 1, driver=driver) self.sriov_vfs_port_1 = self.dut.ports_info[self.used_dut_port_1]["vfs_port"] + pf_intf1 = self.dut.ports_info[1]["port"].get_interface_name() + if self.dcf_mode == "enable": + self.dut.send_expect("ip link set %s vf 0 trust on" % (pf_intf1), "# ") try: @@ -89,6 +96,9 @@ class TestVfMacFilter(TestCase): raise Exception("Set up VM0 ENV failed!") self.setup_2pf_2vf_1vm_env_flag = 1 + self.vf0_guest_pci = self.vm0.pci_maps[0]["guestpci"] + self.vf1_guest_pci = self.vm0.pci_maps[1]["guestpci"] + except Exception as e: self.destroy_2pf_2vf_1vm_env() raise Exception(e) @@ -145,7 +155,17 @@ class TestVfMacFilter(TestCase): self.host_testpmd.execute_cmd("set vf mac addr 0 0 %s" % self.pf0_vf0_mac) self.vm0_dut_ports = self.vm_dut_0.get_ports("any") self.vm0_testpmd = PmdOutput(self.vm_dut_0) - self.vm0_testpmd.start_testpmd(VM_CORES_MASK) + if self.dcf_mode == "enable": + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd(VM_CORES_MASK) # Get VF's MAC pmd_vf0_mac = self.vm0_testpmd.get_port_mac(0) self.vm0_testpmd.execute_cmd("set promisc all off") @@ -242,7 +262,17 @@ class TestVfMacFilter(TestCase): def send_packet_and_verify(self): self.vm0_dut_ports = self.vm_dut_0.get_ports("any") self.vm0_testpmd = PmdOutput(self.vm_dut_0) - self.vm0_testpmd.start_testpmd(VM_CORES_MASK) + if self.dcf_mode == "enable": + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd(VM_CORES_MASK) # Get VF0 port MAC address pmd_vf0_mac = self.vm0_testpmd.get_port_mac(0) diff --git a/tests/TestSuite_vf_offload.py b/tests/TestSuite_vf_offload.py index eee77c69..87310817 100644 --- a/tests/TestSuite_vf_offload.py +++ b/tests/TestSuite_vf_offload.py @@ -9,7 +9,7 @@ import time import framework.utils as utils from framework.crb import Crb from framework.pmd_output import PmdOutput -from framework.settings import HEADER_SIZE +from framework.settings import DPDK_DCFMODE_SETTING, HEADER_SIZE, load_global_setting from framework.test_case import TestCase from framework.utils import GREEN, RED from framework.virt_common import VM @@ -39,6 +39,7 @@ class TestVfOffload(TestCase): else: self.vf_assign_method = "vfio-pci" self.dut.send_expect("modprobe vfio-pci", "#") + self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING) self.setup_2pf_2vf_1vm_env_flag = 0 self.setup_2pf_2vf_1vm_env(driver="") @@ -131,6 +132,8 @@ class TestVfOffload(TestCase): self.vm_dut_0 = self.vm0.start() if self.vm_dut_0 is None: raise Exception("Set up VM0 ENV failed!") + self.vf0_guest_pci = self.vm0.pci_maps[0]["guestpci"] + self.vf1_guest_pci = self.vm0.pci_maps[1]["guestpci"] self.setup_2pf_2vf_1vm_env_flag = 1 except Exception as e: @@ -290,10 +293,21 @@ class TestVfOffload(TestCase): can rx it and report the checksum error, verify forwarded packets have correct checksum. """ - self.vm0_testpmd.start_testpmd( - VM_CORES_MASK, - "--portmask=%s " % (self.portMask) + "--enable-rx-cksum " + "", - ) + if self.dcf_mode == "enable": + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + "--portmask=%s " % (self.portMask) + "--enable-rx-cksum " + "", + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + "--portmask=%s " % (self.portMask) + "--enable-rx-cksum " + "", + ) self.vm0_testpmd.execute_cmd("set fwd csum") self.vm0_testpmd.execute_cmd("set promisc 1 on") self.vm0_testpmd.execute_cmd("set promisc 0 on") @@ -351,10 +365,22 @@ class TestVfOffload(TestCase): Enable SW checksum offload. Send same packet with incorrect checksum and verify checksum is valid. """ - self.vm0_testpmd.start_testpmd( - VM_CORES_MASK, - "--portmask=%s " % (self.portMask) + "--enable-rx-cksum " + "", - ) + + if self.dcf_mode == "enable": + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + "--portmask=%s " % (self.portMask) + "--enable-rx-cksum " + "", + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + "--portmask=%s " % (self.portMask) + "--enable-rx-cksum " + "", + ) self.vm0_testpmd.execute_cmd("set fwd csum") self.vm0_testpmd.execute_cmd("set promisc 1 on") self.vm0_testpmd.execute_cmd("set promisc 0 on") @@ -491,10 +517,21 @@ class TestVfOffload(TestCase): ) self.portMask = utils.create_mask([self.vm0_dut_ports[0]]) - self.vm0_testpmd.start_testpmd( - VM_CORES_MASK, - "--portmask=0x3 " + "--enable-rx-cksum " + "--max-pkt-len=%s" % TSO_MTU, - ) + if self.dcf_mode == "enable": + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + "--portmask=0x3 " + "--enable-rx-cksum " + "--max-pkt-len=%s" % TSO_MTU, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + "--portmask=0x3 " + "--enable-rx-cksum " + "--max-pkt-len=%s" % TSO_MTU, + ) mac = self.vm0_testpmd.get_port_mac(0) self.vm0_testpmd.execute_cmd("set verbose 1", "testpmd> ", 120) diff --git a/tests/TestSuite_vf_rss.py b/tests/TestSuite_vf_rss.py index 3c97e1fe..b6359987 100644 --- a/tests/TestSuite_vf_rss.py +++ b/tests/TestSuite_vf_rss.py @@ -15,6 +15,7 @@ reta_entries = [] reta_lines = [] from framework.pmd_output import PmdOutput +from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting # Use scapy to send packets with different source and dest ip. # and collect the hash result of five tuple and the queue id. @@ -289,6 +290,7 @@ class TestVfRss(TestCase): self.vm0 = None self.host_testpmd = None self.setup_1pf_1vf_1vm_env_flag = 0 + self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING) self.setup_1pf_1vf_1vm_env(driver="") def set_up(self): @@ -302,6 +304,9 @@ class TestVfRss(TestCase): self.used_dut_port_0 = self.dut_ports[0] self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 1, driver=driver) self.sriov_vfs_port_0 = self.dut.ports_info[self.used_dut_port_0]["vfs_port"] + pf_intf0 = self.dut.ports_info[0]["port"].get_interface_name() + if self.dcf_mode == "enable": + self.dut.send_expect("ip link set %s vf 0 trust on" % (pf_intf0), "# ") try: for port in self.sriov_vfs_port_0: @@ -322,6 +327,7 @@ class TestVfRss(TestCase): self.vm_dut_0 = self.vm0.start() if self.vm_dut_0 is None: raise Exception("Set up VM0 ENV failed!") + self.vf0_guest_pci = self.vm0.pci_maps[0]["guestpci"] self.vm0_testpmd = PmdOutput(self.vm_dut_0) @@ -381,11 +387,20 @@ class TestVfRss(TestCase): eal_param = "" for queue in testQueues: - self.vm0_testpmd.start_testpmd( - "all", - "--rxq=%d --txq=%d %s" % (queue, queue, eal_param), - socket=self.vm0_ports_socket, - ) + if self.dcf_mode == "enable": + self.vm0_testpmd.start_testpmd( + "all", + "--rxq=%d --txq=%d %s" % (queue, queue, eal_param), + ports=[self.vf0_guest_pci], + port_options={self.vf0_guest_pci: "cap=dcf"}, + socket=self.vm0_ports_socket, + ) + else: + self.vm0_testpmd.start_testpmd( + "all", + "--rxq=%d --txq=%d %s" % (queue, queue, eal_param), + socket=self.vm0_ports_socket, + ) for iptype, rss_type in list(iptypes.items()): self.vm_dut_0.send_expect("set verbose 8", "testpmd> ") @@ -453,11 +468,20 @@ class TestVfRss(TestCase): # test with different rss queues for queue in testQueues: - self.vm0_testpmd.start_testpmd( - "all", - "--rxq=%d --txq=%d %s" % (queue, queue, eal_param), - socket=self.vm0_ports_socket, - ) + if self.dcf_mode == "enable": + self.vm0_testpmd.start_testpmd( + "all", + "--rxq=%d --txq=%d %s" % (queue, queue, eal_param), + ports=[self.vf0_guest_pci], + port_options={self.vf0_guest_pci: "cap=dcf"}, + socket=self.vm0_ports_socket, + ) + else: + self.vm0_testpmd.start_testpmd( + "all", + "--rxq=%d --txq=%d %s" % (queue, queue, eal_param), + socket=self.vm0_ports_socket, + ) for iptype, rsstype in list(iptypes.items()): self.vm_dut_0.send_expect("set verbose 8", "testpmd> ") diff --git a/tests/TestSuite_vf_smoke.py b/tests/TestSuite_vf_smoke.py index b19160c6..9faba9dd 100644 --- a/tests/TestSuite_vf_smoke.py +++ b/tests/TestSuite_vf_smoke.py @@ -4,6 +4,7 @@ from framework.packet import Packet from framework.pmd_output import PmdOutput +from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting from framework.test_case import TestCase from .smoke_base import ( @@ -60,11 +61,16 @@ class TestVfSmoke(TestCase): self.vf0_prop = {"opt_host": self.vf_ports[0].pci} self.dut.send_expect("ifconfig %s up" % self.pf_interface, "# ") self.tester.send_expect("ifconfig %s up" % self.smoke_tester_nic, "# ") + self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING) # set vf mac address self.dut.send_expect( "ip link set %s vf 0 mac %s" % (self.pf_interface, self.smoke_dut_mac), "# " ) + if self.dcf_mode == "enable": + self.dut.send_expect( + "ip link set %s vf 0 trust on" % (self.pf_interface), "# " + ) # set default app parameter if self.vf0_prop is not None: @@ -100,7 +106,17 @@ class TestVfSmoke(TestCase): self.vf_launch_dpdk_app() def vf_launch_dpdk_app(self): - self.pmd_out.start_testpmd(cores=self.cores, ports=self.ports, param=self.param) + if self.dcf_mode == "enable": + self.pmd_out.start_testpmd( + cores=self.cores, + ports=self.ports, + port_options={port: "cap=dcf" for port in self.ports}, + param=self.param, + ) + else: + self.pmd_out.start_testpmd( + cores=self.cores, ports=self.ports, param=self.param + ) # set default param self.dut.send_expect("set promisc all off", "testpmd> ") diff --git a/tests/TestSuite_vf_vlan.py b/tests/TestSuite_vf_vlan.py index 31826db5..5cecbee3 100644 --- a/tests/TestSuite_vf_vlan.py +++ b/tests/TestSuite_vf_vlan.py @@ -9,7 +9,7 @@ import time import framework.utils as utils from framework.packet import Packet from framework.pmd_output import PmdOutput -from framework.settings import get_nic_name +from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting from framework.test_case import TestCase from framework.virt_common import VM @@ -48,6 +48,7 @@ class TestVfVlan(TestCase): # get priv-flags default stats self.flag = "vf-vlan-pruning" self.default_stats = self.dut.get_priv_flags_state(self.host_intf0, self.flag) + self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING) def set_up(self): self.setup_vm_env() @@ -87,6 +88,10 @@ class TestVfVlan(TestCase): self.dut.send_expect( "ip link set %s vf 0 mac %s" % (self.host_intf0, self.vf0_mac), "# " ) + if self.dcf_mode: + self.dut.send_expect( + "ip link set %s vf 0 trust on" % (self.host_intf0), "# " + ) self.used_dut_port_1 = self.dut_ports[1] self.host_intf1 = self.dut.ports_info[self.used_dut_port_1]["intf"] @@ -103,6 +108,10 @@ class TestVfVlan(TestCase): self.dut.send_expect( "ip link set %s vf 0 mac %s" % (self.host_intf1, self.vf1_mac), "# " ) + if self.dcf_mode: + self.dut.send_expect( + "ip link set %s vf 0 trust on" % (self.host_intf1), "# " + ) try: @@ -123,6 +132,8 @@ class TestVfVlan(TestCase): self.vm_dut_0 = self.vm0.start() if self.vm_dut_0 is None: raise Exception("Set up VM0 ENV failed!") + self.vf0_guest_pci = self.vm0.pci_maps[0]["guestpci"] + self.vf1_guest_pci = self.vm0.pci_maps[1]["guestpci"] except Exception as e: self.destroy_vm_env() @@ -170,7 +181,17 @@ class TestVfVlan(TestCase): self.vm0_dut_ports = self.vm_dut_0.get_ports("any") self.vm0_testpmd = PmdOutput(self.vm_dut_0) - self.vm0_testpmd.start_testpmd(VM_CORES_MASK) + if self.dcf_mode: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd(VM_CORES_MASK) self.vm0_testpmd.execute_cmd("set fwd mac") self.vm0_testpmd.execute_cmd("start") @@ -214,7 +235,17 @@ class TestVfVlan(TestCase): self.vm0_dut_ports = self.vm_dut_0.get_ports("any") self.vm0_testpmd = PmdOutput(self.vm_dut_0) - self.vm0_testpmd.start_testpmd(VM_CORES_MASK) + if self.dcf_mode: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd(VM_CORES_MASK) self.vm0_testpmd.execute_cmd("set fwd rxonly") self.vm0_testpmd.execute_cmd("set verbose 1") self.vm0_testpmd.execute_cmd("start") @@ -250,6 +281,7 @@ class TestVfVlan(TestCase): (self.kdriver == "i40e" and self.driver_version < "2.13.10") or (self.kdriver == "i40e" and not self.default_stats) or (self.kdriver == "ice" and not self.default_stats) + or self.dcf_mode ): self.verify("received" in out, "Failed to received vlan packet!!!") else: @@ -291,7 +323,17 @@ class TestVfVlan(TestCase): self.vm0_dut_ports = self.vm_dut_0.get_ports("any") self.vm0_testpmd = PmdOutput(self.vm_dut_0) - self.vm0_testpmd.start_testpmd(VM_CORES_MASK) + if self.dcf_mode: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd(VM_CORES_MASK) self.vm0_testpmd.execute_cmd("set verbose 1") for tx_vlan in tx_vlans: @@ -316,7 +358,17 @@ class TestVfVlan(TestCase): self.vm0_dut_ports = self.vm_dut_0.get_ports("any") self.vm0_testpmd = PmdOutput(self.vm_dut_0) - self.vm0_testpmd.start_testpmd(VM_CORES_MASK) + if self.dcf_mode: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) + else: + self.vm0_testpmd.start_testpmd(VM_CORES_MASK) self.vm0_testpmd.execute_cmd("set fwd rxonly") self.vm0_testpmd.execute_cmd("set verbose 1") self.vm0_testpmd.execute_cmd("vlan set strip on 0") @@ -395,8 +447,15 @@ class TestVfVlan(TestCase): self.vm0_dut_ports = self.vm_dut_0.get_ports("any") self.vm0_testpmd = PmdOutput(self.vm_dut_0) - if self.kdriver == "i40e": - self.vm0_testpmd.start_testpmd(VM_CORES_MASK, "") + if self.dcf_mode: + self.vm0_testpmd.start_testpmd( + VM_CORES_MASK, + ports=[self.vf0_guest_pci, self.vf1_guest_pci], + port_options={ + self.vf0_guest_pci: "cap=dcf", + self.vf1_guest_pci: "cap=dcf", + }, + ) else: self.vm0_testpmd.start_testpmd(VM_CORES_MASK) self.vm0_testpmd.execute_cmd("set fwd rxonly")