get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 117490,
    "url": "http://patches.dpdk.org/api/patches/117490/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20221007003137.12787-4-zhiminx.huang@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": "<20221007003137.12787-4-zhiminx.huang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20221007003137.12787-4-zhiminx.huang@intel.com",
    "date": "2022-10-07T00:31:37",
    "name": "[V6,3/3] tests/*:modify cases to check dcf as a full feature pmd",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "af2360fddf81c8f9b4a56f035ca02f61ff600cf5",
    "submitter": {
        "id": 1685,
        "url": "http://patches.dpdk.org/api/people/1685/?format=api",
        "name": "Huang, ZhiminX",
        "email": "zhiminx.huang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20221007003137.12787-4-zhiminx.huang@intel.com/mbox/",
    "series": [
        {
            "id": 25014,
            "url": "http://patches.dpdk.org/api/series/25014/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=25014",
            "date": "2022-10-07T00:31:34",
            "name": "modify cases to check dcf as a full feature pmd",
            "version": 6,
            "mbox": "http://patches.dpdk.org/series/25014/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/117490/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/117490/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 980D8A00C2;\n\tThu,  6 Oct 2022 18:21:00 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 937B640DDC;\n\tThu,  6 Oct 2022 18:21:00 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by mails.dpdk.org (Postfix) with ESMTP id ED95940042\n for <dts@dpdk.org>; Thu,  6 Oct 2022 18:20:57 +0200 (CEST)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 06 Oct 2022 09:20:57 -0700",
            "from unknown (HELO cvl_100g_103.icx.intel.com) ([10.239.252.93])\n by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 06 Oct 2022 09:20:55 -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=1665073258; x=1696609258;\n h=from:to:cc:subject:date:message-id:in-reply-to: references;\n bh=l6pN6pb0l35lwj49v30Ro2Gqg22fcRTqbBbnUS1y9jo=;\n b=hHZ/mbM2xWGtSm7lh9w/nN9cQ3VdFfi8vncmlaanC2aUEUNMYVb6fozK\n X4OTkxPp0Yw2XWk8CrZlrBznKe+2lhEgS65EbfOWcIepPKCeMg7HV3edU\n hH1Dmhf1WVBIbfkC/lGoCIy3tvX3IyaJvn0uyHgpglADF+XbiMumHIPf9\n f72OvLUM0nw9WO233NfzHWCJVY874AVfx7LnIQ9XjNfznMQ0SRdX0ebIR\n FekFLztw4vns+8V3aVhTxNnUNQciPoFvKswMIXqGcV1fBol7gz35cGCUl\n 9CH7nl9gz66qmWKoor0snatgXjlfVrdsWJMoZuiFsjLrRrTlGX1Gp9lpp A==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6500,9779,10492\"; a=\"303469917\"",
            "E=Sophos;i=\"5.95,164,1661842800\"; d=\"scan'208\";a=\"303469917\"",
            "E=McAfee;i=\"6500,9779,10492\"; a=\"575888468\"",
            "E=Sophos;i=\"5.95,164,1661842800\"; d=\"scan'208\";a=\"575888468\""
        ],
        "From": "Zhimin Huang <zhiminx.huang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Zhimin Huang <zhiminx.huang@intel.com>",
        "Subject": "[dts][PATCH V6 3/3] tests/*:modify cases to check dcf as a full\n feature pmd",
        "Date": "Fri,  7 Oct 2022 08:31:37 +0800",
        "Message-Id": "<20221007003137.12787-4-zhiminx.huang@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20221007003137.12787-1-zhiminx.huang@intel.com>",
        "References": "<20221007003137.12787-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 <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": "the dcf mode support more pmd feature in dpdk22.07.\nmodify cases to support dcf and check normal datapath in dcf mode.\n\nSigned-off-by: Zhimin Huang <zhiminx.huang@intel.com>\nAcked-by: Xueqin Lin <xueqin.lin@intel.com>\nTested-by: Jiale Song < songx.jiale@intel.com>\n---\nv6:\n-encapsulate the startup testpmd into a function.\n\nv5:\n-detailed the subject and comments.\n\n tests/TestSuite_kernelpf_iavf.py | 58 ++++++++++++++++++++++----------\n tests/TestSuite_stats_checks.py  | 23 +++++++++++--\n tests/TestSuite_vf_macfilter.py  | 30 +++++++++++++++--\n tests/TestSuite_vf_offload.py    | 42 +++++++++++++++++------\n tests/TestSuite_vf_rss.py        | 39 ++++++++++++++++-----\n tests/TestSuite_vf_smoke.py      | 18 +++++++++-\n tests/TestSuite_vf_vlan.py       | 45 +++++++++++++++++++------\n 7 files changed, 203 insertions(+), 52 deletions(-)",
    "diff": "diff --git a/tests/TestSuite_kernelpf_iavf.py b/tests/TestSuite_kernelpf_iavf.py\nindex a6d4d016..348dc76e 100644\n--- a/tests/TestSuite_kernelpf_iavf.py\n+++ b/tests/TestSuite_kernelpf_iavf.py\n@@ -16,7 +16,7 @@ import time\n import framework.utils as utils\n from framework.packet import Packet\n from framework.pmd_output import PmdOutput\n-from framework.settings import HEADER_SIZE\n+from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting\n from framework.test_case import TestCase\n from framework.utils import RED\n from framework.virt_common import VM\n@@ -74,6 +74,7 @@ class TestKernelpfIavf(TestCase):\n         # get priv-flags default stats\n         self.flag = \"vf-vlan-pruning\"\n         self.default_stats = self.dut.get_priv_flags_state(self.host_intf, self.flag)\n+        self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)\n \n     def set_up(self):\n \n@@ -129,6 +130,10 @@ class TestKernelpfIavf(TestCase):\n             self.dut.send_expect(\n                 \"ip link set %s vf 0 mac %s\" % (self.host_intf, self.vf_mac), \"# \"\n             )\n+        if self.dcf_mode:\n+            self.dut.send_expect(\n+                \"ip link set %s vf 0 trust on\" % (self.host_intf), \"# \"\n+            )\n         try:\n \n             for port in self.sriov_vfs_port:\n@@ -145,6 +150,7 @@ class TestKernelpfIavf(TestCase):\n                 raise Exception(\"Set up VM ENV failed!\")\n \n             self.vm_testpmd = PmdOutput(self.vm_dut)\n+            self.vf_guest_pci = self.vm.pci_maps[0][\"guestpci\"]\n         except Exception as e:\n             self.destroy_vm_env()\n             raise Exception(e)\n@@ -195,11 +201,25 @@ class TestKernelpfIavf(TestCase):\n         )\n         return result\n \n+    def launch_testpmd(self, **kwargs):\n+        dcf_flag = kwargs.get(\"dcf_flag\")\n+        param = kwargs.get(\"param\") if kwargs.get(\"param\") else \"\"\n+        if dcf_flag == \"enable\":\n+            out = self.vm_testpmd.start_testpmd(\n+                \"all\",\n+                param=param,\n+                ports=[self.vf_guest_pci],\n+                port_options={self.vf_guest_pci: \"cap=dcf\"},\n+            )\n+        else:\n+            out = self.vm_testpmd.start_testpmd(\"all\", param=param)\n+        return out\n+\n     def test_vf_basic_rxtx(self):\n         \"\"\"\n         Set rxonly forward,Send 100 random packets from tester, check packets can be received\n         \"\"\"\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"set fwd rxonly\")\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm_testpmd.execute_cmd(\"start\")\n@@ -234,7 +254,7 @@ class TestKernelpfIavf(TestCase):\n         Not set VF MAC from kernel PF for this case, if set, will print\n         \"not permitted error\" when add new MAC for VF.\n         \"\"\"\n-        out = self.vm_testpmd.start_testpmd(\"all\")\n+        out = self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.testpmd_mac = self.get_testpmd_vf_mac(out)\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set promisc all off\")\n@@ -282,7 +302,7 @@ class TestKernelpfIavf(TestCase):\n         Enable kernel trust mode\n         \"\"\"\n         self.dut.send_expect(\"ip link set dev %s vf 0 trust on\" % self.host_intf, \"# \")\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm_testpmd.execute_cmd(\"start\")\n@@ -321,7 +341,7 @@ class TestKernelpfIavf(TestCase):\n         \"\"\"\n         multicast_mac = \"01:80:C2:00:00:08\"\n         self.dut.send_expect(\"ip link set dev %s vf 0 trust on\" % self.host_intf, \"# \")\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set promisc all off\")\n         self.vm_testpmd.execute_cmd(\"set allmulti all off\")\n@@ -345,7 +365,7 @@ class TestKernelpfIavf(TestCase):\n     def test_vf_broadcast(self):\n         \"\"\" \"\"\"\n         broadcast_mac = \"ff:ff:ff:ff:ff:ff\"\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set promisc all off\")\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n@@ -375,7 +395,7 @@ class TestKernelpfIavf(TestCase):\n         return out\n \n     def test_vf_vlan_insertion(self):\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         random_vlan = random.randint(1, MAX_VLAN)\n         self.vm_testpmd.execute_cmd(\"vlan set strip off 0\")\n         self.vm_testpmd.execute_cmd(\"port stop all\")\n@@ -396,7 +416,7 @@ class TestKernelpfIavf(TestCase):\n \n     def test_vf_vlan_strip(self):\n         random_vlan = random.randint(1, MAX_VLAN)\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"port stop all\")\n         self.vm_testpmd.execute_cmd(\"vlan set filter on 0\")\n         self.vm_testpmd.execute_cmd(\"rx_vlan add %s 0\" % random_vlan)\n@@ -432,7 +452,7 @@ class TestKernelpfIavf(TestCase):\n \n     def test_vf_vlan_filter(self):\n         random_vlan = random.randint(2, MAX_VLAN)\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"port stop all\")\n         self.vm_testpmd.execute_cmd(\"set promisc all off\")\n         self.vm_testpmd.execute_cmd(\"vlan set filter on 0\")\n@@ -473,7 +493,7 @@ class TestKernelpfIavf(TestCase):\n \n     def test_vf_rss(self):\n         rss_type = [\"ip\", \"tcp\", \"udp\"]\n-        self.vm_testpmd.start_testpmd(\"all\", \"--txq=4 --rxq=4\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode, param=\"--txq=4 --rxq=4\")\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n         default_rss_reta = self.vm_testpmd.execute_cmd(\n@@ -496,7 +516,7 @@ class TestKernelpfIavf(TestCase):\n \n     def test_vf_rss_hash_key(self):\n         update_hash_key = \"1b9d58a4b961d9cd1c56ad1621c3ad51632c16a5d16c21c3513d132c135d132c13ad1531c23a51d6ac49879c499d798a7d949c8a\"\n-        self.vm_testpmd.start_testpmd(\"all\", \"--txq=4 --rxq=4\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode, param=\"--txq=4 --rxq=4\")\n         self.vm_testpmd.execute_cmd(\"show port 0 rss-hash key\")\n         self.vm_testpmd.execute_cmd(\"set fwd rxonly\")\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n@@ -681,7 +701,7 @@ class TestKernelpfIavf(TestCase):\n         self.tester.send_expect(\"^C\", \"#\")\n \n     def test_vf_port_start_stop(self):\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         for i in range(10):\n             self.vm_testpmd.execute_cmd(\"port stop all\")\n             self.vm_testpmd.execute_cmd(\"port start all\")\n@@ -700,7 +720,7 @@ class TestKernelpfIavf(TestCase):\n         self.verify(vf0_tx_cnt == 100, \"no packet was fwd by vm0_VF0\")\n \n     def test_vf_statistic_reset(self):\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm_testpmd.execute_cmd(\"start\")\n@@ -722,7 +742,7 @@ class TestKernelpfIavf(TestCase):\n         )\n \n     def test_vf_information(self):\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         out = self.vm_testpmd.execute_cmd(\"show port info 0\")\n         self.verify(\"Link status: up\" in out, \"link stats has error\")\n         self.verify(\"Link speed: %s\" % self.speed in out, \"link speed has error\")\n@@ -791,7 +811,7 @@ class TestKernelpfIavf(TestCase):\n         )\n \n     def test_vf_unicast(self):\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm_testpmd.execute_cmd(\"set promisc all off\")\n@@ -809,7 +829,7 @@ class TestKernelpfIavf(TestCase):\n         self.verify(packets == 10, \"Not receive expected packet\")\n \n     def test_vf_vlan_promisc(self):\n-        self.vm_testpmd.start_testpmd(\"all\")\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm_testpmd.execute_cmd(\"port stop all\")\n         self.vm_testpmd.execute_cmd(\"set promisc all on\")\n         self.vm_testpmd.execute_cmd(\"set fwd mac\")\n@@ -827,6 +847,7 @@ class TestKernelpfIavf(TestCase):\n             (self.kdriver == \"i40e\" and self.driver_version < \"2.13.10\")\n             or (self.kdriver == \"i40e\" and not self.default_stats)\n             or (self.kdriver == \"ice\" and not self.default_stats)\n+            or self.dcf_mode\n         ):\n             self.verify(packets == 10, \"Not receive expected packet\")\n         else:\n@@ -899,7 +920,10 @@ class TestKernelpfIavf(TestCase):\n             time.sleep(1)\n         if self.running_case == \"test_vf_mac_filter\":\n             self.destroy_vm_env()\n-        self.dut.send_expect(\"ip link set dev %s vf 0 trust off\" % self.host_intf, \"# \")\n+        if not self.dcf_mode:\n+            self.dut.send_expect(\n+                \"ip link set dev %s vf 0 trust off\" % self.host_intf, \"# \"\n+            )\n \n     def tear_down_all(self):\n         \"\"\"\ndiff --git a/tests/TestSuite_stats_checks.py b/tests/TestSuite_stats_checks.py\nindex 7ebb74d5..f81d284e 100644\n--- a/tests/TestSuite_stats_checks.py\n+++ b/tests/TestSuite_stats_checks.py\n@@ -17,6 +17,7 @@ from typing import Iterator, List, Tuple\n import framework.packet as packet\n import framework.utils as utils\n from framework.pmd_output import PmdOutput\n+from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting\n from framework.test_case import TestCase\n \n ETHER_HEADER_LEN = 18\n@@ -241,6 +242,7 @@ class TestStatsChecks(TestCase):\n         self.verify(len(self.dut_ports) >= 2, \"Insufficient ports\")\n         self.rx_port = self.dut_ports[0]\n         self.tx_port = self.dut_ports[1]\n+        self.rx_intf = self.dut.ports_info[self.rx_port][\"intf\"]\n \n         cores = self.dut.get_core_list(\"1S/2C/1T\")\n         self.coremask = utils.create_mask(cores)\n@@ -248,6 +250,7 @@ class TestStatsChecks(TestCase):\n         self.port_mask = utils.create_mask([self.rx_port, self.tx_port])\n \n         self.pmdout = PmdOutput(self.dut)\n+        self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)\n \n     def set_up(self):\n         \"\"\"\n@@ -271,6 +274,20 @@ class TestStatsChecks(TestCase):\n         \"\"\"\n         self.dut.kill_all()\n \n+    def launch_testpmd(self, **kwargs):\n+        dcf_flag = kwargs.get(\"dcf_flag\")\n+        param = kwargs.get(\"param\") if kwargs.get(\"param\") else \"\"\n+        if dcf_flag == \"enable\":\n+            self.pmdout.start_testpmd(\n+                \"default\",\n+                param=param,\n+                eal_param=\"-a %s,cap=dcf\" % self.vf_port_pci,\n+            )\n+        else:\n+            self.pmdout.start_testpmd(\n+                \"default\", param=param, eal_param=\"-a %s\" % self.vf_port_pci\n+            )\n+\n     def test_stats_checks(self):\n         self.pmdout.start_testpmd(\"Default\")\n         self.exec(\"port start all\")\n@@ -288,10 +305,10 @@ class TestStatsChecks(TestCase):\n \n     def test_xstats_check_vf(self):\n         self.dut.generate_sriov_vfs_by_port(self.dut_ports[0], 1, self.kdriver)\n+        if self.dcf_mode:\n+            self.dut.send_expect(\"ip link set %s vf 0 trust on\" % (self.rx_intf), \"# \")\n         self.vf_port = self.dut.ports_info[self.dut_ports[0]][\"vfs_port\"][0]\n         self.vf_port.bind_driver(driver=\"vfio-pci\")\n         self.vf_port_pci = self.dut.ports_info[self.dut_ports[0]][\"sriov_vfs_pci\"][0]\n-        self.pmdout.start_testpmd(\n-            \"default\", \"--rxq=4 --txq=4\", eal_param=\"-a %s\" % self.vf_port_pci\n-        )\n+        self.launch_testpmd(dcf_flag=self.dcf_mode, param=\"--txq=4 --rxq=4\")\n         self.xstats_check(0, 0, if_vf=True)\ndiff --git a/tests/TestSuite_vf_macfilter.py b/tests/TestSuite_vf_macfilter.py\nindex c2007999..dc4e1098 100644\n--- a/tests/TestSuite_vf_macfilter.py\n+++ b/tests/TestSuite_vf_macfilter.py\n@@ -6,6 +6,7 @@ import re\n import time\n \n from framework.pmd_output import PmdOutput\n+from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting\n from framework.test_case import TestCase\n from framework.virt_common import VM\n \n@@ -34,6 +35,7 @@ class TestVfMacFilter(TestCase):\n         else:\n             self.vf_assign_method = \"vfio-pci\"\n             self.dut.send_expect(\"modprobe vfio-pci\", \"#\")\n+        self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)\n \n     def set_up(self):\n \n@@ -50,10 +52,15 @@ class TestVfMacFilter(TestCase):\n             self.dut.send_expect(\n                 \"ip link set %s vf 0 mac %s\" % (pf_intf0, self.pf0_vf0_mac), \"#\"\n             )\n+        if self.dcf_mode == \"enable\":\n+            self.dut.send_expect(\"ip link set %s vf 0 trust on\" % (pf_intf0), \"# \")\n \n         self.used_dut_port_1 = self.dut_ports[1]\n         self.dut.generate_sriov_vfs_by_port(self.used_dut_port_1, 1, driver=driver)\n         self.sriov_vfs_port_1 = self.dut.ports_info[self.used_dut_port_1][\"vfs_port\"]\n+        pf_intf1 = self.dut.ports_info[1][\"port\"].get_interface_name()\n+        if self.dcf_mode == \"enable\":\n+            self.dut.send_expect(\"ip link set %s vf 0 trust on\" % (pf_intf1), \"# \")\n \n         try:\n \n@@ -89,6 +96,9 @@ class TestVfMacFilter(TestCase):\n                 raise Exception(\"Set up VM0 ENV failed!\")\n \n             self.setup_2pf_2vf_1vm_env_flag = 1\n+            self.vf0_guest_pci = self.vm0.pci_maps[0][\"guestpci\"]\n+            self.vf1_guest_pci = self.vm0.pci_maps[1][\"guestpci\"]\n+\n         except Exception as e:\n             self.destroy_2pf_2vf_1vm_env()\n             raise Exception(e)\n@@ -128,6 +138,22 @@ class TestVfMacFilter(TestCase):\n \n         self.setup_2pf_2vf_1vm_env_flag = 0\n \n+    def launch_testpmd(self, **kwargs):\n+        dcf_flag = kwargs.get(\"dcf_flag\")\n+        param = kwargs.get(\"param\") if kwargs.get(\"param\") else \"\"\n+        if dcf_flag == \"enable\":\n+            self.vm0_testpmd.start_testpmd(\n+                VM_CORES_MASK,\n+                param=param,\n+                ports=[self.vf0_guest_pci, self.vf1_guest_pci],\n+                port_options={\n+                    self.vf0_guest_pci: \"cap=dcf\",\n+                    self.vf1_guest_pci: \"cap=dcf\",\n+                },\n+            )\n+        else:\n+            self.vm0_testpmd.start_testpmd(VM_CORES_MASK, param=param)\n+\n     def test_kernel_2pf_2vf_1vm_iplink_macfilter(self):\n         \"\"\"\n         test case for kernel pf and dpdk vf 2pf_2vf_1vm MAC filter\n@@ -145,7 +171,7 @@ class TestVfMacFilter(TestCase):\n             self.host_testpmd.execute_cmd(\"set vf mac addr 0 0 %s\" % self.pf0_vf0_mac)\n         self.vm0_dut_ports = self.vm_dut_0.get_ports(\"any\")\n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         # Get VF's MAC\n         pmd_vf0_mac = self.vm0_testpmd.get_port_mac(0)\n         self.vm0_testpmd.execute_cmd(\"set promisc all off\")\n@@ -242,7 +268,7 @@ class TestVfMacFilter(TestCase):\n     def send_packet_and_verify(self):\n         self.vm0_dut_ports = self.vm_dut_0.get_ports(\"any\")\n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n \n         # Get VF0 port MAC address\n         pmd_vf0_mac = self.vm0_testpmd.get_port_mac(0)\ndiff --git a/tests/TestSuite_vf_offload.py b/tests/TestSuite_vf_offload.py\nindex eee77c69..c70b24f4 100644\n--- a/tests/TestSuite_vf_offload.py\n+++ b/tests/TestSuite_vf_offload.py\n@@ -9,7 +9,7 @@ import time\n import framework.utils as utils\n from framework.crb import Crb\n from framework.pmd_output import PmdOutput\n-from framework.settings import HEADER_SIZE\n+from framework.settings import DPDK_DCFMODE_SETTING, HEADER_SIZE, load_global_setting\n from framework.test_case import TestCase\n from framework.utils import GREEN, RED\n from framework.virt_common import VM\n@@ -39,6 +39,7 @@ class TestVfOffload(TestCase):\n         else:\n             self.vf_assign_method = \"vfio-pci\"\n             self.dut.send_expect(\"modprobe vfio-pci\", \"#\")\n+        self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)\n \n         self.setup_2pf_2vf_1vm_env_flag = 0\n         self.setup_2pf_2vf_1vm_env(driver=\"\")\n@@ -131,6 +132,8 @@ class TestVfOffload(TestCase):\n             self.vm_dut_0 = self.vm0.start()\n             if self.vm_dut_0 is None:\n                 raise Exception(\"Set up VM0 ENV failed!\")\n+            self.vf0_guest_pci = self.vm0.pci_maps[0][\"guestpci\"]\n+            self.vf1_guest_pci = self.vm0.pci_maps[1][\"guestpci\"]\n \n             self.setup_2pf_2vf_1vm_env_flag = 1\n         except Exception as e:\n@@ -169,6 +172,22 @@ class TestVfOffload(TestCase):\n \n         self.setup_2pf_2vf_1vm_env_flag = 0\n \n+    def launch_testpmd(self, **kwargs):\n+        dcf_flag = kwargs.get(\"dcf_flag\")\n+        param = kwargs.get(\"param\") if kwargs.get(\"param\") else \"\"\n+        if dcf_flag == \"enable\":\n+            self.vm0_testpmd.start_testpmd(\n+                VM_CORES_MASK,\n+                param=param,\n+                ports=[self.vf0_guest_pci, self.vf1_guest_pci],\n+                port_options={\n+                    self.vf0_guest_pci: \"cap=dcf\",\n+                    self.vf1_guest_pci: \"cap=dcf\",\n+                },\n+            )\n+        else:\n+            self.vm0_testpmd.start_testpmd(VM_CORES_MASK, param=param)\n+\n     def checksum_enablehw(self, port, dut):\n         dut.send_expect(\"port stop all\", \"testpmd>\")\n         dut.send_expect(\"csum set ip hw %d\" % port, \"testpmd>\")\n@@ -290,9 +309,9 @@ class TestVfOffload(TestCase):\n         can rx it and report the checksum error,\n         verify forwarded packets have correct checksum.\n         \"\"\"\n-        self.vm0_testpmd.start_testpmd(\n-            VM_CORES_MASK,\n-            \"--portmask=%s \" % (self.portMask) + \"--enable-rx-cksum \" + \"\",\n+        self.launch_testpmd(\n+            dcf_flag=self.dcf_mode,\n+            param=\"--portmask=%s \" % (self.portMask) + \"--enable-rx-cksum \" + \"\",\n         )\n         self.vm0_testpmd.execute_cmd(\"set fwd csum\")\n         self.vm0_testpmd.execute_cmd(\"set promisc 1 on\")\n@@ -351,9 +370,10 @@ class TestVfOffload(TestCase):\n         Enable SW checksum offload.\n         Send same packet with incorrect checksum and verify checksum is valid.\n         \"\"\"\n-        self.vm0_testpmd.start_testpmd(\n-            VM_CORES_MASK,\n-            \"--portmask=%s \" % (self.portMask) + \"--enable-rx-cksum \" + \"\",\n+\n+        self.launch_testpmd(\n+            dcf_flag=self.dcf_mode,\n+            param=\"--portmask=%s \" % (self.portMask) + \"--enable-rx-cksum \" + \"\",\n         )\n         self.vm0_testpmd.execute_cmd(\"set fwd csum\")\n         self.vm0_testpmd.execute_cmd(\"set promisc 1 on\")\n@@ -491,9 +511,11 @@ class TestVfOffload(TestCase):\n         )\n \n         self.portMask = utils.create_mask([self.vm0_dut_ports[0]])\n-        self.vm0_testpmd.start_testpmd(\n-            VM_CORES_MASK,\n-            \"--portmask=0x3 \" + \"--enable-rx-cksum \" + \"--max-pkt-len=%s\" % TSO_MTU,\n+        self.launch_testpmd(\n+            dcf_flag=self.dcf_mode,\n+            param=\"--portmask=0x3 \"\n+            + \"--enable-rx-cksum \"\n+            + \"--max-pkt-len=%s\" % TSO_MTU,\n         )\n \n         mac = self.vm0_testpmd.get_port_mac(0)\ndiff --git a/tests/TestSuite_vf_rss.py b/tests/TestSuite_vf_rss.py\nindex 3c97e1fe..058d53db 100644\n--- a/tests/TestSuite_vf_rss.py\n+++ b/tests/TestSuite_vf_rss.py\n@@ -15,6 +15,7 @@ reta_entries = []\n reta_lines = []\n \n from framework.pmd_output import PmdOutput\n+from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting\n \n # Use scapy to send packets with different source and dest ip.\n # and collect the hash result of five tuple and the queue id.\n@@ -289,6 +290,7 @@ class TestVfRss(TestCase):\n         self.vm0 = None\n         self.host_testpmd = None\n         self.setup_1pf_1vf_1vm_env_flag = 0\n+        self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)\n         self.setup_1pf_1vf_1vm_env(driver=\"\")\n \n     def set_up(self):\n@@ -302,6 +304,9 @@ class TestVfRss(TestCase):\n         self.used_dut_port_0 = self.dut_ports[0]\n         self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 1, driver=driver)\n         self.sriov_vfs_port_0 = self.dut.ports_info[self.used_dut_port_0][\"vfs_port\"]\n+        pf_intf0 = self.dut.ports_info[0][\"port\"].get_interface_name()\n+        if self.dcf_mode == \"enable\":\n+            self.dut.send_expect(\"ip link set %s vf 0 trust on\" % (pf_intf0), \"# \")\n \n         try:\n             for port in self.sriov_vfs_port_0:\n@@ -322,6 +327,7 @@ class TestVfRss(TestCase):\n             self.vm_dut_0 = self.vm0.start()\n             if self.vm_dut_0 is None:\n                 raise Exception(\"Set up VM0 ENV failed!\")\n+            self.vf0_guest_pci = self.vm0.pci_maps[0][\"guestpci\"]\n \n             self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n \n@@ -357,6 +363,24 @@ class TestVfRss(TestCase):\n \n         self.setup_1pf_2vf_1vm_env_flag = 0\n \n+    def launch_testpmd(self, **kwargs):\n+        dcf_flag = kwargs.get(\"dcf_flag\")\n+        param = kwargs.get(\"param\") if kwargs.get(\"param\") else \"\"\n+        if dcf_flag == \"enable\":\n+            self.vm0_testpmd.start_testpmd(\n+                \"all\",\n+                param=param,\n+                ports=[self.vf0_guest_pci],\n+                port_options={self.vf0_guest_pci: \"cap=dcf\"},\n+                socket=self.vm0_ports_socket,\n+            )\n+        else:\n+            self.vm0_testpmd.start_testpmd(\n+                \"all\",\n+                param=param,\n+                socket=self.vm0_ports_socket,\n+            )\n+\n     def test_vf_pmdrss_reta(self):\n \n         vm0dutPorts = self.vm_dut_0.get_ports(\"any\")\n@@ -381,12 +405,10 @@ class TestVfRss(TestCase):\n         eal_param = \"\"\n         for queue in testQueues:\n \n-            self.vm0_testpmd.start_testpmd(\n-                \"all\",\n-                \"--rxq=%d --txq=%d %s\" % (queue, queue, eal_param),\n-                socket=self.vm0_ports_socket,\n+            self.launch_testpmd(\n+                dcf_flag=self.dcf_mode,\n+                param=\"--rxq=%d --txq=%d %s\" % (queue, queue, eal_param),\n             )\n-\n             for iptype, rss_type in list(iptypes.items()):\n                 self.vm_dut_0.send_expect(\"set verbose 8\", \"testpmd> \")\n                 self.vm_dut_0.send_expect(\"set fwd rxonly\", \"testpmd> \")\n@@ -453,10 +475,9 @@ class TestVfRss(TestCase):\n         # test with different rss queues\n         for queue in testQueues:\n \n-            self.vm0_testpmd.start_testpmd(\n-                \"all\",\n-                \"--rxq=%d --txq=%d %s\" % (queue, queue, eal_param),\n-                socket=self.vm0_ports_socket,\n+            self.launch_testpmd(\n+                dcf_flag=self.dcf_mode,\n+                param=\"--rxq=%d --txq=%d %s\" % (queue, queue, eal_param),\n             )\n \n             for iptype, rsstype in list(iptypes.items()):\ndiff --git a/tests/TestSuite_vf_smoke.py b/tests/TestSuite_vf_smoke.py\nindex b19160c6..9faba9dd 100644\n--- a/tests/TestSuite_vf_smoke.py\n+++ b/tests/TestSuite_vf_smoke.py\n@@ -4,6 +4,7 @@\n \n from framework.packet import Packet\n from framework.pmd_output import PmdOutput\n+from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting\n from framework.test_case import TestCase\n \n from .smoke_base import (\n@@ -60,11 +61,16 @@ class TestVfSmoke(TestCase):\n         self.vf0_prop = {\"opt_host\": self.vf_ports[0].pci}\n         self.dut.send_expect(\"ifconfig %s up\" % self.pf_interface, \"# \")\n         self.tester.send_expect(\"ifconfig %s up\" % self.smoke_tester_nic, \"# \")\n+        self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)\n \n         # set vf mac address\n         self.dut.send_expect(\n             \"ip link set %s vf 0 mac %s\" % (self.pf_interface, self.smoke_dut_mac), \"# \"\n         )\n+        if self.dcf_mode == \"enable\":\n+            self.dut.send_expect(\n+                \"ip link set %s vf 0 trust on\" % (self.pf_interface), \"# \"\n+            )\n \n         # set default app parameter\n         if self.vf0_prop is not None:\n@@ -100,7 +106,17 @@ class TestVfSmoke(TestCase):\n             self.vf_launch_dpdk_app()\n \n     def vf_launch_dpdk_app(self):\n-        self.pmd_out.start_testpmd(cores=self.cores, ports=self.ports, param=self.param)\n+        if self.dcf_mode == \"enable\":\n+            self.pmd_out.start_testpmd(\n+                cores=self.cores,\n+                ports=self.ports,\n+                port_options={port: \"cap=dcf\" for port in self.ports},\n+                param=self.param,\n+            )\n+        else:\n+            self.pmd_out.start_testpmd(\n+                cores=self.cores, ports=self.ports, param=self.param\n+            )\n \n         # set default param\n         self.dut.send_expect(\"set promisc all off\", \"testpmd> \")\ndiff --git a/tests/TestSuite_vf_vlan.py b/tests/TestSuite_vf_vlan.py\nindex 31826db5..d5a29c04 100644\n--- a/tests/TestSuite_vf_vlan.py\n+++ b/tests/TestSuite_vf_vlan.py\n@@ -9,7 +9,7 @@ import time\n import framework.utils as utils\n from framework.packet import Packet\n from framework.pmd_output import PmdOutput\n-from framework.settings import get_nic_name\n+from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting\n from framework.test_case import TestCase\n from framework.virt_common import VM\n \n@@ -48,6 +48,7 @@ class TestVfVlan(TestCase):\n         # get priv-flags default stats\n         self.flag = \"vf-vlan-pruning\"\n         self.default_stats = self.dut.get_priv_flags_state(self.host_intf0, self.flag)\n+        self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)\n \n     def set_up(self):\n         self.setup_vm_env()\n@@ -87,6 +88,10 @@ class TestVfVlan(TestCase):\n         self.dut.send_expect(\n             \"ip link set %s vf 0 mac %s\" % (self.host_intf0, self.vf0_mac), \"# \"\n         )\n+        if self.dcf_mode:\n+            self.dut.send_expect(\n+                \"ip link set %s vf 0 trust on\" % (self.host_intf0), \"# \"\n+            )\n \n         self.used_dut_port_1 = self.dut_ports[1]\n         self.host_intf1 = self.dut.ports_info[self.used_dut_port_1][\"intf\"]\n@@ -103,6 +108,10 @@ class TestVfVlan(TestCase):\n         self.dut.send_expect(\n             \"ip link set %s vf 0 mac %s\" % (self.host_intf1, self.vf1_mac), \"# \"\n         )\n+        if self.dcf_mode:\n+            self.dut.send_expect(\n+                \"ip link set %s vf 0 trust on\" % (self.host_intf1), \"# \"\n+            )\n \n         try:\n \n@@ -123,6 +132,8 @@ class TestVfVlan(TestCase):\n             self.vm_dut_0 = self.vm0.start()\n             if self.vm_dut_0 is None:\n                 raise Exception(\"Set up VM0 ENV failed!\")\n+            self.vf0_guest_pci = self.vm0.pci_maps[0][\"guestpci\"]\n+            self.vf1_guest_pci = self.vm0.pci_maps[1][\"guestpci\"]\n \n         except Exception as e:\n             self.destroy_vm_env()\n@@ -155,6 +166,22 @@ class TestVfVlan(TestCase):\n \n         self.env_done = False\n \n+    def launch_testpmd(self, **kwargs):\n+        dcf_flag = kwargs.get(\"dcf_flag\")\n+        param = kwargs.get(\"param\") if kwargs.get(\"param\") else \"\"\n+        if dcf_flag:\n+            self.vm0_testpmd.start_testpmd(\n+                VM_CORES_MASK,\n+                ports=[self.vf0_guest_pci, self.vf1_guest_pci],\n+                param=param,\n+                port_options={\n+                    self.vf0_guest_pci: \"cap=dcf\",\n+                    self.vf1_guest_pci: \"cap=dcf\",\n+                },\n+            )\n+        else:\n+            self.vm0_testpmd.start_testpmd(VM_CORES_MASK, param=param)\n+\n     def test_pvid_vf_tx(self):\n         \"\"\"\n         Add port based vlan on vf device and check vlan tx work\n@@ -170,7 +197,7 @@ class TestVfVlan(TestCase):\n         self.vm0_dut_ports = self.vm_dut_0.get_ports(\"any\")\n \n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm0_testpmd.execute_cmd(\"set fwd mac\")\n         self.vm0_testpmd.execute_cmd(\"start\")\n \n@@ -214,7 +241,7 @@ class TestVfVlan(TestCase):\n         self.vm0_dut_ports = self.vm_dut_0.get_ports(\"any\")\n \n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm0_testpmd.execute_cmd(\"set fwd rxonly\")\n         self.vm0_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm0_testpmd.execute_cmd(\"start\")\n@@ -240,7 +267,7 @@ class TestVfVlan(TestCase):\n \n         # restart testpmd\n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm0_testpmd.execute_cmd(\"set fwd rxonly\")\n         self.vm0_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm0_testpmd.execute_cmd(\"start\")\n@@ -250,6 +277,7 @@ class TestVfVlan(TestCase):\n             (self.kdriver == \"i40e\" and self.driver_version < \"2.13.10\")\n             or (self.kdriver == \"i40e\" and not self.default_stats)\n             or (self.kdriver == \"ice\" and not self.default_stats)\n+            or self.dcf_mode\n         ):\n             self.verify(\"received\" in out, \"Failed to received vlan packet!!!\")\n         else:\n@@ -291,7 +319,7 @@ class TestVfVlan(TestCase):\n         self.vm0_dut_ports = self.vm_dut_0.get_ports(\"any\")\n \n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm0_testpmd.execute_cmd(\"set verbose 1\")\n \n         for tx_vlan in tx_vlans:\n@@ -316,7 +344,7 @@ class TestVfVlan(TestCase):\n         self.vm0_dut_ports = self.vm_dut_0.get_ports(\"any\")\n \n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm0_testpmd.execute_cmd(\"set fwd rxonly\")\n         self.vm0_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm0_testpmd.execute_cmd(\"vlan set strip on 0\")\n@@ -395,10 +423,7 @@ class TestVfVlan(TestCase):\n         self.vm0_dut_ports = self.vm_dut_0.get_ports(\"any\")\n \n         self.vm0_testpmd = PmdOutput(self.vm_dut_0)\n-        if self.kdriver == \"i40e\":\n-            self.vm0_testpmd.start_testpmd(VM_CORES_MASK, \"\")\n-        else:\n-            self.vm0_testpmd.start_testpmd(VM_CORES_MASK)\n+        self.launch_testpmd(dcf_flag=self.dcf_mode)\n         self.vm0_testpmd.execute_cmd(\"set fwd rxonly\")\n         self.vm0_testpmd.execute_cmd(\"set verbose 1\")\n         self.vm0_testpmd.execute_cmd(\"start\")\n",
    "prefixes": [
        "V6",
        "3/3"
    ]
}