get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 116996,
    "url": "https://patches.dpdk.org/api/patches/116996/?format=api",
    "web_url": "https://patches.dpdk.org/project/dts/patch/20220928031836.770004-21-ke1.xu@intel.com/",
    "project": {
        "id": 3,
        "url": "https://patches.dpdk.org/api/projects/3/?format=api",
        "name": "DTS",
        "link_name": "dts",
        "list_id": "dts.dpdk.org",
        "list_email": "dts@dpdk.org",
        "web_url": "",
        "scm_url": "git://dpdk.org/tools/dts",
        "webscm_url": "http://git.dpdk.org/tools/dts/",
        "list_archive_url": "https://inbox.dpdk.org/dts",
        "list_archive_url_format": "https://inbox.dpdk.org/dts/{}",
        "commit_url_format": ""
    },
    "msgid": "<20220928031836.770004-21-ke1.xu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20220928031836.770004-21-ke1.xu@intel.com",
    "date": "2022-09-28T03:18:57",
    "name": "[V1,20/21] test/ice_dcf_switch_filter: update test plan to support represented port action from deprecated vf action",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "35ea0f93d3d552a5434b76abb00ab73bbd31e7df",
    "submitter": {
        "id": 2810,
        "url": "https://patches.dpdk.org/api/people/2810/?format=api",
        "name": "Ke Xu",
        "email": "ke1.xu@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dts/patch/20220928031836.770004-21-ke1.xu@intel.com/mbox/",
    "series": [
        {
            "id": 24869,
            "url": "https://patches.dpdk.org/api/series/24869/?format=api",
            "web_url": "https://patches.dpdk.org/project/dts/list/?series=24869",
            "date": "2022-09-28T03:18:17",
            "name": "update test plans and tests to support represented port action and port representor action from deprecated vf action on DCF cases",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/24869/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/116996/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/116996/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 4AE58A00C2;\n\tWed, 28 Sep 2022 05:28:22 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 439AD41133;\n\tWed, 28 Sep 2022 05:28:22 +0200 (CEST)",
            "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n by mails.dpdk.org (Postfix) with ESMTP id DDA7740E25\n for <dts@dpdk.org>; Wed, 28 Sep 2022 05:28:19 +0200 (CEST)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Sep 2022 20:28:18 -0700",
            "from unknown (HELO DPDK-XUKE-LAB.sh.intel.com) ([10.67.116.226])\n by FMSMGA003.fm.intel.com with ESMTP; 27 Sep 2022 20:28:16 -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=1664335700; x=1695871700;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=AAzhejx7zkYjm4TbILI/nPsKAi68qM6keyIBDwFxplI=;\n b=MdLylWpJoZVBDt6qs4vBrAG3hl50RlyveuBPQXPq2UoJi+263O8YzJCu\n S8YDP3eq1LlwjXKLdDw5mmn28JxWNfnCpHPbO9ptQYgbd94GXvrMBATeO\n VferEMQW3BeylDvb90eq5ChzSnf/YxrhZA26ZxvrlEaDNitu8O/92zqJ6\n 2K4ODNXz88xhQfYIRDFsoCdozhDAXUFIRIYdfUSKSwPe3w6zIVXkvUpil\n l+IPcQMEAR6Ud8Ha2P4hIcj5Mz+6wVCzyV99u/Njw/5CfOH7lCqKO9If/\n JMGAmuWDhXqigoTsboY9gYhSsk8FGyHl8KYE3ZFm26Edj+e9aNNPWop2t Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6500,9779,10483\"; a=\"327857604\"",
            "E=Sophos;i=\"5.93,350,1654585200\"; d=\"scan'208\";a=\"327857604\"",
            "E=McAfee;i=\"6500,9779,10483\"; a=\"710803393\"",
            "E=Sophos;i=\"5.93,350,1654585200\"; d=\"scan'208\";a=\"710803393\""
        ],
        "X-ExtLoop1": "1",
        "From": "Ke Xu <ke1.xu@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "lijuan.tu@intel.com, jin.ling@intel.com, zhiminx.huang@intel.com,\n weiyuanx.li@intel.com, qi.fu@intel.com, Ke Xu <ke1.xu@intel.com>",
        "Subject": "[DTS][PATCH V1 20/21] test/ice_dcf_switch_filter: update test plan to\n support represented port action from deprecated vf action",
        "Date": "Wed, 28 Sep 2022 03:18:57 +0000",
        "Message-Id": "<20220928031836.770004-21-ke1.xu@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220928031836.770004-1-ke1.xu@intel.com>",
        "References": "<20220928031836.770004-1-ke1.xu@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": "Signed-off-by: Ke Xu <ke1.xu@intel.com>\n---\n tests/TestSuite_ice_dcf_switch_filter.py | 579 +++++++++++++----------\n 1 file changed, 317 insertions(+), 262 deletions(-)",
    "diff": "diff --git a/tests/TestSuite_ice_dcf_switch_filter.py b/tests/TestSuite_ice_dcf_switch_filter.py\nindex 3c647be6..6510bf2c 100644\n--- a/tests/TestSuite_ice_dcf_switch_filter.py\n+++ b/tests/TestSuite_ice_dcf_switch_filter.py\n@@ -16,14 +16,14 @@ from framework.utils import BLUE, GREEN, RED\n \n tv_mac_pay = {\n     \"name\": \"tv_mac_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth src is 00:00:00:00:00:01 dst is 00:11:22:33:44:55 type is 0x0800 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth src is 00:00:00:00:00:01 dst is 00:11:22:33:44:55 type is 0x0800 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(src=\"00:00:00:00:00:01\",dst=\"00:11:22:33:44:55\")/IP()/Raw(\"x\" *80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -35,7 +35,7 @@ tv_mac_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -43,14 +43,14 @@ tv_mac_pay = {\n \n tv_mac_ipv4_frag = {\n     \"name\": \"tv_mac_ipv4_frag\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 2 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 2 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2,frag=5)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -64,7 +64,7 @@ tv_mac_ipv4_frag = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -72,14 +72,14 @@ tv_mac_ipv4_frag = {\n \n tv_mac_ipv4_pay = {\n     \"name\": \"tv_mac_ipv4_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 proto is 6 tos is 4 ttl is 2 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 proto is 6 tos is 4 ttl is 2 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -94,7 +94,7 @@ tv_mac_ipv4_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -102,14 +102,14 @@ tv_mac_ipv4_pay = {\n \n tv_mac_ipv4_udp_pay = {\n     \"name\": \"tv_mac_ipv4_udp_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/UDP(sport=25,dport=23)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -125,7 +125,7 @@ tv_mac_ipv4_udp_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -133,14 +133,14 @@ tv_mac_ipv4_udp_pay = {\n \n tv_mac_ipv4_tcp_pay = {\n     \"name\": \"tv_mac_ipv4_tcp_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP(sport=25,dport=23)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -156,7 +156,7 @@ tv_mac_ipv4_tcp_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -164,12 +164,12 @@ tv_mac_ipv4_tcp_pay = {\n \n tv_mac_ipv4_igmp = {\n     \"name\": \"tv_mac_ipv4_igmp\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 proto is 0x02 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 proto is 0x02 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:55\")/IP()/IGMP()/Raw(\"X\"*480)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -180,7 +180,7 @@ tv_mac_ipv4_igmp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -188,7 +188,7 @@ tv_mac_ipv4_igmp = {\n \n tv_mac_ipv6_srcip_dstip = {\n     \"name\": \"tv_mac_ipv6_srcip_dstip\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n@@ -196,7 +196,7 @@ tv_mac_ipv6_srcip_dstip = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 2},\n     },\n@@ -209,7 +209,7 @@ tv_mac_ipv6_srcip_dstip = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -217,7 +217,7 @@ tv_mac_ipv6_srcip_dstip = {\n \n tv_mac_ipv6_dstip_tc = {\n     \"name\": \"tv_mac_ipv6_dstip_tc\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/(\"X\"*480)',\n@@ -225,7 +225,7 @@ tv_mac_ipv6_dstip_tc = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 2},\n     },\n@@ -240,7 +240,7 @@ tv_mac_ipv6_dstip_tc = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -248,14 +248,14 @@ tv_mac_ipv6_dstip_tc = {\n \n tv_mac_ipv6_udp_pay = {\n     \"name\": \"tv_mac_ipv6_udp_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/UDP(sport=25,dport=23)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -269,7 +269,7 @@ tv_mac_ipv6_udp_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -277,14 +277,14 @@ tv_mac_ipv6_udp_pay = {\n \n tv_mac_ipv6_tcp = {\n     \"name\": \"tv_mac_ipv6_tcp\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/TCP(sport=25,dport=23)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -298,7 +298,7 @@ tv_mac_ipv6_tcp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -306,7 +306,7 @@ tv_mac_ipv6_tcp = {\n \n tv_mac_ipv4_nvgre_ipv4_pay = {\n     \"name\": \"tv_mac_ipv4_nvgre_ipv4_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)',\n@@ -314,7 +314,7 @@ tv_mac_ipv4_nvgre_ipv4_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 2},\n     },\n@@ -331,7 +331,7 @@ tv_mac_ipv4_nvgre_ipv4_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -339,14 +339,14 @@ tv_mac_ipv4_nvgre_ipv4_pay = {\n \n tv_mac_ipv4_nvgre_ipv4_udp_pay = {\n     \"name\": \"tv_mac_ipv4_nvgre_ipv4_udp_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/UDP(sport=50,dport=23)/Raw(\"x\"*80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -361,7 +361,7 @@ tv_mac_ipv4_nvgre_ipv4_udp_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -369,14 +369,14 @@ tv_mac_ipv4_nvgre_ipv4_udp_pay = {\n \n tv_mac_ipv4_nvgre_ipv4_tcp = {\n     \"name\": \"tv_mac_ipv4_nvgre_ipv4_tcp\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -391,7 +391,7 @@ tv_mac_ipv4_nvgre_ipv4_tcp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -399,7 +399,7 @@ tv_mac_ipv4_nvgre_ipv4_tcp = {\n \n tv_mac_ipv4_nvgre_mac_ipv4_pay = {\n     \"name\": \"tv_mac_ipv4_nvgre_mac_ipv4_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)',\n@@ -407,7 +407,7 @@ tv_mac_ipv4_nvgre_mac_ipv4_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 2},\n     },\n@@ -426,7 +426,7 @@ tv_mac_ipv4_nvgre_mac_ipv4_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -434,14 +434,14 @@ tv_mac_ipv4_nvgre_mac_ipv4_pay = {\n \n tv_mac_ipv4_nvgre_mac_ipv4_udp_pay = {\n     \"name\": \"tv_mac_ipv4_nvgre_mac_ipv4_udp_pay\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -457,7 +457,7 @@ tv_mac_ipv4_nvgre_mac_ipv4_udp_pay = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -465,14 +465,14 @@ tv_mac_ipv4_nvgre_mac_ipv4_udp_pay = {\n \n tv_mac_ipv4_nvgre_mac_ipv4_tcp = {\n     \"name\": \"tv_mac_ipv4_nvgre_mac_ipv4_tcp\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -488,7 +488,7 @@ tv_mac_ipv4_nvgre_mac_ipv4_tcp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -496,14 +496,14 @@ tv_mac_ipv4_nvgre_mac_ipv4_tcp = {\n \n tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id = {\n     \"name\": \"tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\\'\\\\x00\\\\x21\\')/IP()/Raw(\"x\" * 80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -516,7 +516,7 @@ tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -524,14 +524,14 @@ tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id = {\n \n tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id = {\n     \"name\": \"tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\\'\\\\x00\\\\x57\\')/IPv6()/Raw(\"x\" * 80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -544,7 +544,7 @@ tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -552,14 +552,14 @@ tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id = {\n \n tv_mac_pppoe_ipv4_pay_session_id_proto_id = {\n     \"name\": \"tv_mac_pppoe_ipv4_pay_session_id_proto_id\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(b\\'\\\\x00\\\\x21\\')/IP()/Raw(\"x\" * 80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -571,7 +571,7 @@ tv_mac_pppoe_ipv4_pay_session_id_proto_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -579,14 +579,14 @@ tv_mac_pppoe_ipv4_pay_session_id_proto_id = {\n \n tv_mac_pppoe_ipv6_pay_session_id_proto_id = {\n     \"name\": \"tv_mac_pppoe_ipv6_pay_session_id_proto_id\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(b\\'\\\\x00\\\\x57\\')/IPv6()/Raw(\"x\" * 80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -598,7 +598,7 @@ tv_mac_pppoe_ipv6_pay_session_id_proto_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -606,12 +606,12 @@ tv_mac_pppoe_ipv6_pay_session_id_proto_id = {\n \n tv_ip_multicast = {\n     \"name\": \"tv_ip_multicast\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst spec 224.0.0.0 dst mask 240.0.0.0 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 dst spec 224.0.0.0 dst mask 240.0.0.0 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": ['Ether()/IP(dst=\"239.0.0.0\")/TCP()/Raw(\"x\"*80)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -619,7 +619,7 @@ tv_ip_multicast = {\n         \"scapy_str\": ['Ether()/IP(dst=\"128.0.0.0\")/TCP()/Raw(\"x\"*80)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -627,12 +627,12 @@ tv_ip_multicast = {\n \n tv_l2_multicast = {\n     \"name\": \"tv_l2_multicast\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst spec 01:00:5e:00:00:00 dst mask ff:ff:ff:80:00:00 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst spec 01:00:5e:00:00:00 dst mask ff:ff:ff:80:00:00 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": ['Ether(dst=\"01:00:5e:7f:00:00\")/IP()/TCP()/Raw(\"x\"*80)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -640,7 +640,7 @@ tv_l2_multicast = {\n         \"scapy_str\": ['Ether(dst=\"01:00:5e:ff:00:00\")/IP()/TCP()/Raw(\"x\"*80)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -648,14 +648,14 @@ tv_l2_multicast = {\n \n tv_ethertype_filter_pppod = {\n     \"name\": \"tv_ethertype_filter_pppod\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth type is 0x8863 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth type is 0x8863 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\")/PPPoED()/PPP()/IP()/Raw(\"x\" *80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -663,7 +663,7 @@ tv_ethertype_filter_pppod = {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:55\")/PPPoE()/PPP()/IP()/Raw(\"x\" *80)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -671,12 +671,12 @@ tv_ethertype_filter_pppod = {\n \n tv_ethertype_filter_pppoe = {\n     \"name\": \"tv_ethertype_filter_pppoe\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth type is 0x8864 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth type is 0x8864 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:55\")/PPPoE()/PPP()/IP()/Raw(\"x\"*80)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -684,7 +684,7 @@ tv_ethertype_filter_pppoe = {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:55\")/PPPoED()/PPP()/IP()/Raw(\"x\"*80)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -692,7 +692,7 @@ tv_ethertype_filter_pppoe = {\n \n tv_ethertype_filter_ipv6 = {\n     \"name\": \"tv_ethertype_filter_ipv6\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth type is 0x86dd / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth type is 0x86dd / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\")/IPv6(dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", tc=3)/TCP(dport=23)/(\"X\"*480)',\n@@ -700,7 +700,7 @@ tv_ethertype_filter_ipv6 = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 2},\n     },\n@@ -708,7 +708,7 @@ tv_ethertype_filter_ipv6 = {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:55\")/IP()/TCP(dport=23)/(\"X\"*480)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -716,14 +716,14 @@ tv_ethertype_filter_ipv6 = {\n \n tv_udp_port_filter_dhcp_discovery = {\n     \"name\": \"tv_udp_port_filter_dhcp_discovery\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp src is 68 dst is 67 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp src is 68 dst is 67 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=68,dport=67)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\")/DHCP(options=[(\"message-type\",\"discover\"),\"end\"])/Raw(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -734,7 +734,7 @@ tv_udp_port_filter_dhcp_discovery = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -742,14 +742,14 @@ tv_udp_port_filter_dhcp_discovery = {\n \n tv_udp_port_filter_dhcp_offer = {\n     \"name\": \"tv_udp_port_filter_dhcp_offer\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp src is 67 dst is 68 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp src is 67 dst is 68 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=67,dport=68)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\",yiaddr=\"192.168.1.0\")/DHCP(options=[(\"message-type\",\"offer\"),\"end\"])/Raw(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -760,7 +760,7 @@ tv_udp_port_filter_dhcp_offer = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -768,14 +768,14 @@ tv_udp_port_filter_dhcp_offer = {\n \n tv_udp_port_filter_vxlan = {\n     \"name\": \"tv_udp_port_filter_vxlan\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp dst is 4789 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp dst is 4789 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether()/IP(dst=\"192.168.0.1\")/UDP()/VXLAN(vni=2)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\",frag=5)/TCP()/Raw(\"x\"*80)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -785,7 +785,7 @@ tv_udp_port_filter_vxlan = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -793,14 +793,14 @@ tv_udp_port_filter_vxlan = {\n \n tv_mac_vlan_filter = {\n     \"name\": \"tv_mac_vlan_filter\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/Raw(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -811,7 +811,7 @@ tv_mac_vlan_filter = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -819,14 +819,14 @@ tv_mac_vlan_filter = {\n \n tv_vlan_filter = {\n     \"name\": \"tv_vlan_filter\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / vlan tci is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / vlan tci is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/Raw(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -836,7 +836,7 @@ tv_vlan_filter = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -844,14 +844,14 @@ tv_vlan_filter = {\n \n tv_mac_ipv4_l2tpv3 = {\n     \"name\": \"tv_mac_ipv4_l2tpv3\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             \"Ether(dst='00:11:22:33:44:12')/IP(src='192.168.0.2', proto=115)/L2TP(b'\\\\x00\\\\x00\\\\x00\\\\x01')/('X'*480)\"\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -863,7 +863,7 @@ tv_mac_ipv4_l2tpv3 = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -871,14 +871,14 @@ tv_mac_ipv4_l2tpv3 = {\n \n tv_mac_ipv6_l2tpv3 = {\n     \"name\": \"tv_mac_ipv6_l2tpv3\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / l2tpv3oip session_id is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / l2tpv3oip session_id is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             \"Ether(dst='00:11:22:33:44:13')/IPv6(dst='1111:2222:3333:4444:5555:6666:7777:8888', nh=115)/L2TP(b'\\\\x00\\\\x00\\\\x00\\\\x01')/('X'*480)\"\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -890,7 +890,7 @@ tv_mac_ipv6_l2tpv3 = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -898,14 +898,14 @@ tv_mac_ipv6_l2tpv3 = {\n \n tv_mac_ipv4_esp = {\n     \"name\": \"tv_mac_ipv4_esp\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\", proto=50)/ESP(spi=1)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -917,7 +917,7 @@ tv_mac_ipv4_esp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -925,14 +925,14 @@ tv_mac_ipv4_esp = {\n \n tv_mac_ipv6_esp = {\n     \"name\": \"tv_mac_ipv6_esp\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / esp spi is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / esp spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=50)/ESP(spi=1)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -944,7 +944,7 @@ tv_mac_ipv6_esp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -952,14 +952,14 @@ tv_mac_ipv6_esp = {\n \n tv_mac_ipv4_ah = {\n     \"name\": \"tv_mac_ipv4_ah\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\", proto=51)/AH(spi=1)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -971,7 +971,7 @@ tv_mac_ipv4_ah = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -979,14 +979,14 @@ tv_mac_ipv4_ah = {\n \n tv_mac_ipv6_ah = {\n     \"name\": \"tv_mac_ipv6_ah\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / ah spi is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / ah spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=51)/AH(spi=1)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -998,7 +998,7 @@ tv_mac_ipv6_ah = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1006,14 +1006,14 @@ tv_mac_ipv6_ah = {\n \n tv_mac_ipv4_nat_t_esp = {\n     \"name\": \"tv_mac_ipv4_nat_t_esp\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1025,7 +1025,7 @@ tv_mac_ipv4_nat_t_esp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1033,14 +1033,14 @@ tv_mac_ipv4_nat_t_esp = {\n \n tv_mac_ipv6_nat_t_esp = {\n     \"name\": \"tv_mac_ipv6_nat_t_esp\",\n-    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1052,7 +1052,7 @@ tv_mac_ipv6_nat_t_esp = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1060,7 +1060,7 @@ tv_mac_ipv6_nat_t_esp = {\n \n tv_actions_vf_id_0 = {\n     \"name\": \"tv_actions_vf_id_0\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 0 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions represented_port ethdev_port_id 0 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP(sport=25,dport=23)/(\"X\"*480)'\n@@ -1078,8 +1078,8 @@ tv_actions_vf_id_0 = {\n tv_add_existing_rules_but_with_different_vfs = {\n     \"name\": \"tv_add_existing_rules_but_with_different_vfs\",\n     \"rte_flow_pattern\": [\n-        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\",\n-        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 2 / end\",\n+        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n+        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 2 / end\",\n     ],\n     \"matched\": {\n         \"scapy_str\": [\n@@ -1087,7 +1087,7 @@ tv_add_existing_rules_but_with_different_vfs = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": [1, 2], \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": [3, 4], \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": [1, 1]},\n     },\n@@ -1097,8 +1097,8 @@ tv_add_existing_rules_but_with_different_vfs = {\n tv_add_two_rules_with_one_rule_input_set_included_in_the_other = {\n     \"name\": \"tv_add_two_rules_with_one_rule_input_set_included_in_the_other\",\n     \"rte_flow_pattern\": [\n-        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 / end actions vf id 1 / end\",\n-        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 2 / end\",\n+        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 / end actions represented_port ethdev_port_id 1 / end\",\n+        \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions represented_port ethdev_port_id 2 / end\",\n     ],\n     \"matched\": {\n         \"scapy_str\": [\n@@ -1106,7 +1106,7 @@ tv_add_two_rules_with_one_rule_input_set_included_in_the_other = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": [1, 2], \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": [3, 4], \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": [1, 1]},\n     },\n@@ -1115,14 +1115,14 @@ tv_add_two_rules_with_one_rule_input_set_included_in_the_other = {\n \n tv_test_fwd_with_single_vf = {\n     \"name\": \"tv_test_fwd_with_single_vf\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_tx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1131,14 +1131,14 @@ tv_test_fwd_with_single_vf = {\n \n tv_test_fwd_with_multi_vfs = {\n     \"name\": \"tv_test_fwd_with_multi_vfs\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/(\"X\"*480)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_tx_packets_number,\n-            \"param\": {\"expect_port\": [1, 2], \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": [3, 4], \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": [1, 0]},\n     },\n@@ -1172,9 +1172,9 @@ tv_max_vfs = {\n tv_max_field_vectors = {\n     \"name\": \"tv_max_field_vectors\",\n     \"rte_flow_pattern\": [\n-        \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions vf id 1 / end\",\n-        \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.2 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 / end actions vf id 1 / end\",\n-        \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.3 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp dst is 23 / end actions vf id 1 / end\",\n+        \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n+        \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.2 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 / end actions represented_port ethdev_port_id 1 / end\",\n+        \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.3 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n     ],\n     \"matched\": {\n         \"scapy_str\": [\n@@ -1184,7 +1184,7 @@ tv_max_field_vectors = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 3},\n     },\n@@ -1194,7 +1194,7 @@ tv_max_field_vectors = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1208,7 +1208,7 @@ tv_max_rule_number = {\n         \"scapy_str\": [],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1},\n+            \"param\": {\"expect_port\": 3},\n         },\n         \"expect_results\": {\"expect_pkts\": 32563},\n     },\n@@ -1218,7 +1218,7 @@ tv_max_rule_number = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1},\n+            \"param\": {\"expect_port\": 3},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1226,12 +1226,12 @@ tv_max_rule_number = {\n \n tv_mac_ipv4_pfcp_node = {\n     \"name\": \"tv_mac_ipv4_pfcp_node\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(S=0)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1243,7 +1243,7 @@ tv_mac_ipv4_pfcp_node = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1251,12 +1251,12 @@ tv_mac_ipv4_pfcp_node = {\n \n tv_mac_ipv4_pfcp_session = {\n     \"name\": \"tv_mac_ipv4_pfcp_session\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(S=1)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1268,7 +1268,7 @@ tv_mac_ipv4_pfcp_session = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1276,14 +1276,14 @@ tv_mac_ipv4_pfcp_session = {\n \n tv_mac_ipv6_pfcp_node = {\n     \"name\": \"tv_mac_ipv6_pfcp_node\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(S=0)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1295,7 +1295,7 @@ tv_mac_ipv6_pfcp_node = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1303,14 +1303,14 @@ tv_mac_ipv6_pfcp_node = {\n \n tv_mac_ipv6_pfcp_session = {\n     \"name\": \"tv_mac_ipv6_pfcp_session\",\n-    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions vf id 1 / end\",\n+    \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     \"matched\": {\n         \"scapy_str\": [\n             'Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(S=1)'\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1322,7 +1322,7 @@ tv_mac_ipv6_pfcp_session = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1331,8 +1331,8 @@ tv_mac_ipv6_pfcp_session = {\n tv_add_two_rules_with_different_input_set_same_vf_id = {\n     \"name\": \"tv_add_two_rules_with_different_input_set_same_vf_id\",\n     \"rte_flow_pattern\": [\n-        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end\",\n-        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions vf id 1 / end\",\n+        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions represented_port ethdev_port_id 1 / end\",\n+        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions represented_port ethdev_port_id 1 / end\",\n     ],\n     \"matched\": {\n         \"scapy_str\": [\n@@ -1341,7 +1341,7 @@ tv_add_two_rules_with_different_input_set_same_vf_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 2},\n     },\n@@ -1352,7 +1352,7 @@ tv_add_two_rules_with_different_input_set_same_vf_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1361,8 +1361,8 @@ tv_add_two_rules_with_different_input_set_same_vf_id = {\n tv_add_two_rules_with_different_input_set_different_vf_id = {\n     \"name\": \"tv_add_two_rules_with_different_input_set_different_vf_id\",\n     \"rte_flow_pattern\": [\n-        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end\",\n-        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions vf id 2 / end\",\n+        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions represented_port ethdev_port_id 1 / end\",\n+        \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions represented_port ethdev_port_id 2 / end\",\n     ],\n     \"matched\": {\n         \"scapy_str\": [\n@@ -1371,7 +1371,7 @@ tv_add_two_rules_with_different_input_set_different_vf_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": [1, 2], \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": [3, 4], \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": [1, 1]},\n     },\n@@ -1382,7 +1382,7 @@ tv_add_two_rules_with_different_input_set_different_vf_id = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": [1, 2], \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": [3, 4], \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": [0, 0]},\n     },\n@@ -1397,7 +1397,7 @@ tv_mac_ipv4_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1407,7 +1407,7 @@ tv_mac_ipv4_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1422,7 +1422,7 @@ tv_mac_ipv4_mask_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1432,7 +1432,7 @@ tv_mac_ipv4_mask_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1447,7 +1447,7 @@ tv_mac_nvgre_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1457,7 +1457,7 @@ tv_mac_nvgre_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1472,7 +1472,7 @@ tv_mac_ppoes_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1482,7 +1482,7 @@ tv_mac_ppoes_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1495,7 +1495,7 @@ tv_mac_pfcp_drop = {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(dport=8805)/PFCP(S=0)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1503,7 +1503,7 @@ tv_mac_pfcp_drop = {\n         \"scapy_str\": ['Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(dport=8805)/PFCP(S=1)'],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1518,7 +1518,7 @@ tv_mac_vlan_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1528,7 +1528,7 @@ tv_mac_vlan_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1543,7 +1543,7 @@ tv_mac_l2tp_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1553,7 +1553,7 @@ tv_mac_l2tp_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1568,7 +1568,7 @@ tv_mac_esp_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1578,7 +1578,7 @@ tv_mac_esp_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 1},\n     },\n@@ -1609,7 +1609,7 @@ tv_mac_blend_pkg_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 0},\n     },\n@@ -1626,7 +1626,7 @@ tv_mac_blend_pkg_drop = {\n         ],\n         \"check_func\": {\n             \"func\": rfc.check_vf_rx_packets_number,\n-            \"param\": {\"expect_port\": 1, \"expect_queues\": \"null\"},\n+            \"param\": {\"expect_port\": 3, \"expect_queues\": \"null\"},\n         },\n         \"expect_results\": {\"expect_pkts\": 8},\n     },\n@@ -1680,10 +1680,12 @@ class ICEDCFSwitchFilterTest(TestCase):\n         \"\"\"\n         self.dut_ports = self.dut.get_ports(self.nic)\n         # Verify that enough ports are available\n-        self.verify(len(self.dut_ports) >= 1, \"Insufficient ports\")\n+        self.verify(len(self.dut_ports) >= 2, \"Insufficient ports\")\n         localPort = self.tester.get_local_port(self.dut_ports[0])\n         self.used_dut_port_0 = self.dut_ports[0]\n+        self.used_dut_port_1 = self.dut_ports[1]\n         self.pf0_intf = self.dut.ports_info[self.used_dut_port_0][\"intf\"]\n+        self.pf1_intf = self.dut.ports_info[self.used_dut_port_1][\"intf\"]\n         self.__tx_iface = self.tester.get_interface(localPort)\n         self.pkt = Packet()\n         self.testpmd_status = \"close\"\n@@ -1691,7 +1693,8 @@ class ICEDCFSwitchFilterTest(TestCase):\n         self.bind_nics_driver(self.dut_ports, driver=\"ice\")\n         # get priv-flags default stats\n         self.flag = \"vf-vlan-pruning\"\n-        self.default_stats = self.dut.get_priv_flags_state(self.pf0_intf, self.flag)\n+        self.default_pf0_stats = self.dut.get_priv_flags_state(self.pf0_intf, self.flag)\n+        self.default_pf1_stats = self.dut.get_priv_flags_state(self.pf1_intf, self.flag)\n \n         # set vf driver\n         self.vf_driver = \"vfio-pci\"\n@@ -1704,7 +1707,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n         # get PF interface name\n         self.pf0_intf = self.dut.ports_info[self.used_dut_port_0][\"intf\"]\n         out = self.dut.send_expect(\"ethtool -i %s\" % self.pf0_intf, \"#\")\n-        if self.default_stats:\n+        if self.default_pf0_stats:\n             self.dut.send_expect(\n                 \"ethtool --set-priv-flags %s %s off\" % (self.pf0_intf, self.flag), \"# \"\n             )\n@@ -1718,6 +1721,36 @@ class ICEDCFSwitchFilterTest(TestCase):\n             port.bind_driver(self.vf_driver)\n         time.sleep(5)\n \n+    def setup_2pf_vfs_env(self, pf_port_0 = 0, pf_port_1 = 1, driver=\"default\"):\n+\n+        self.used_dut_port_0 = self.dut_ports[pf_port_0]\n+        self.used_dut_port_1 = self.dut_ports[pf_port_1]\n+        # get PF interface name\n+        self.pf0_intf = self.dut.ports_info[self.used_dut_port_0][\"intf\"]\n+        self.pf1_intf = self.dut.ports_info[self.used_dut_port_1][\"intf\"]\n+        self.dut.send_expect(\"ethtool -i %s\" % self.pf0_intf, \"#\")\n+        self.dut.send_expect(\"ethtool -i %s\" % self.pf1_intf, \"#\")\n+        if self.default_pf0_stats:\n+            self.dut.send_expect(\n+                \"ethtool --set-priv-flags %s %s off\" % (self.pf0_intf, self.flag), \"# \"\n+            )\n+        if self.default_pf1_stats:\n+            self.dut.send_expect(\n+                \"ethtool --set-priv-flags %s %s off\" % (self.pf1_intf, self.flag), \"# \"\n+            )\n+        # generate 4 VFs on PF\n+        self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 4, driver=driver)\n+        self.dut.generate_sriov_vfs_by_port(self.used_dut_port_1, 4, driver=driver)\n+        self.sriov_vfs_port_0 = self.dut.ports_info[self.used_dut_port_0][\"vfs_port\"]\n+        self.sriov_vfs_port_1 = self.dut.ports_info[self.used_dut_port_1][\"vfs_port\"]\n+        # set VF0 as trust\n+        self.dut.send_expect(\"ip link set %s vf 0 trust on\" % self.pf0_intf, \"#\")\n+        self.dut.send_expect(\"ip link set %s vf 0 trust on\" % self.pf1_intf, \"#\")\n+        # bind VFs to dpdk driver\n+        for port in self.sriov_vfs_port_0 + self.sriov_vfs_port_1:\n+            port.bind_driver(self.vf_driver)\n+        time.sleep(5)\n+\n     def reload_ice(self):\n         self.dut.send_expect(\"rmmod ice\", \"# \", 15)\n         self.dut.send_expect(\"modprobe ice\", \"# \", 15)\n@@ -1733,12 +1766,17 @@ class ICEDCFSwitchFilterTest(TestCase):\n         Create testpmd command\n         \"\"\"\n         # Prepare testpmd EAL and parameters\n-        vf0_pci = self.sriov_vfs_port_0[0].pci\n-        vf1_pci = self.sriov_vfs_port_0[1].pci\n+        pf0_vf0_pci = self.sriov_vfs_port_0[0].pci\n+        pf0_vf1_pci = self.sriov_vfs_port_0[1].pci\n+        pf1_vf0_pci = self.sriov_vfs_port_1[0].pci\n+        pf1_vf1_pci = self.sriov_vfs_port_1[1].pci\n         all_eal_param = self.dut.create_eal_parameters(\n             cores=\"1S/4C/1T\",\n-            ports=[vf0_pci, vf1_pci],\n-            port_options={vf0_pci: \"cap=dcf\"},\n+            ports=[pf0_vf0_pci, pf0_vf1_pci, pf1_vf0_pci, pf1_vf1_pci],\n+            port_options={\n+                pf0_vf0_pci: \"cap=dcf,representor=[1,2]\",\n+                pf1_vf0_pci: \"cap=dcf,representor=[1,2]\"\n+            },\n         )\n         command = self.path + all_eal_param + \" -- -i\"\n         return command\n@@ -1748,9 +1786,9 @@ class ICEDCFSwitchFilterTest(TestCase):\n         launch testpmd with the command\n         \"\"\"\n         command = self.create_testpmd_command()\n-        out = self.dut.send_expect(command, \"testpmd> \", 15)\n         self.testpmd_status = \"running\"\n-        self.dut.send_expect(\"set portlist 1\", \"testpmd> \", 15)\n+        out = self.dut.send_expect(command, \"testpmd> \", 30)\n+        self.dut.send_expect(\"set portlist 3\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set verbose 1\", \"testpmd> \", 15)\n \n@@ -1998,147 +2036,147 @@ class ICEDCFSwitchFilterTest(TestCase):\n         self.send_and_check_packets(destroy_dict)\n \n     def test_mac_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_pay)\n \n     def test_mac_ipv4_frag(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_frag)\n \n     def test_mac_ipv4_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_pay)\n \n     def test_mac_ipv4_udp_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_udp_pay)\n \n     def test_mac_ipv4_tcp_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_tcp_pay)\n \n     def test_mac_ipv4_igmp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_igmp)\n \n     def test_mac_ipv6_srcip_dstip(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_srcip_dstip)\n \n     def test_mac_ipv6_dstip_tc(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_dstip_tc)\n \n     def test_mac_ipv6_udp_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_udp_pay)\n \n     def test_mac_ipv6_tcp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_tcp)\n \n     def test_mac_ipv4_nvgre_ipv4_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_pay)\n \n     def test_mac_ipv4_nvgre_ipv4_udp_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_udp_pay)\n \n     def test_mac_ipv4_nvgre_ipv4_tcp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_tcp)\n \n     def test_mac_ipv4_nvgre_mac_ipv4_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_pay)\n \n     def test_mac_ipv4_nvgre_mac_ipv4_udp_pay(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_udp_pay)\n \n     def test_mac_ipv4_nvgre_mac_ipv4_tcp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_tcp)\n \n     def test_ip_multicast(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_ip_multicast)\n \n     def test_l2_multicast(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_l2_multicast)\n \n     def test_ethertype_filter_pppod(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_ethertype_filter_pppod)\n \n     def test_ethertype_filter_pppoe(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_ethertype_filter_pppoe)\n \n     def test_ethertype_filter_ipv6(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_ethertype_filter_ipv6)\n \n     def test_udp_port_filter_dhcp_discovery(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_udp_port_filter_dhcp_discovery)\n \n     def test_udp_port_filter_dhcp_offer(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_udp_port_filter_dhcp_offer)\n \n     def test_udp_port_filter_vxlan(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_udp_port_filter_vxlan)\n \n     def test_mac_vlan_filter(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_vlan_filter)\n \n     def test_vlan_filter(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_vlan_filter)\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_mac_ipv4_l2tpv3(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_l2tpv3)\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_mac_ipv6_l2tpv3(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_l2tpv3)\n \n     @skip_unsupported_pkg(\"os default\")\n     def test_mac_ipv4_esp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_esp)\n \n     @skip_unsupported_pkg(\"os default\")\n     def test_mac_ipv6_esp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_esp)\n \n     @skip_unsupported_pkg(\"os default\")\n     def test_mac_ipv4_ah(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_ah)\n \n     @skip_unsupported_pkg(\"os default\")\n     def test_mac_ipv6_ah(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_ah)\n \n     @skip_unsupported_pkg(\"os default\")\n     def test_mac_ipv4_nat_t_esp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_nat_t_esp)\n \n     @skip_unsupported_pkg(\"os default\")\n     def test_mac_ipv6_nat_t_esp(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_nat_t_esp)\n \n     def test_negative_case(self):\n@@ -2146,15 +2184,15 @@ class ICEDCFSwitchFilterTest(TestCase):\n         negative cases\n         \"\"\"\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         self.launch_testpmd()\n         rules = {\n-            \"cannot create rule on vf 1\": \"flow create 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\",\n-            \"unsupported input set\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 tos is 4 / end actions vf id 1 / end\",\n-            \"invalid vf id\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 5 / end\",\n+            \"cannot create rule on vf 1\": \"flow create 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\",\n+            \"unsupported input set\": \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 tos is 4 / end actions represented_port ethdev_port_id 1 / end\",\n+            \"invalid vf id\": \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions represented_port ethdev_port_id 5 / end\",\n             \"void action\": \"flow create 0 ingress pattern eth / ipv4 / udp src is 25 dst is 23 / end actions end\",\n-            \"void input set value\": \"flow create 0 ingress pattern eth / ipv4 / end actions vf id 1 end\",\n+            \"void input set value\": \"flow create 0 ingress pattern eth / ipv4 / end actions represented_port ethdev_port_id 1 end\",\n         }\n         # cannot create rule on vf 1\n         self.validate_switch_filter_rule(\n@@ -2177,7 +2215,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n         self.check_switch_filter_rule_list(0, [])\n \n         # duplicated rues\n-        rule = \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions vf id 1 / end\"\n+        rule = \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions represented_port ethdev_port_id 1 / end\"\n         rule_list = self.create_switch_filter_rule(rule)  # create a rule\n         self.check_switch_filter_rule_list(0, rule_list)\n         self.create_switch_filter_rule(rule, check_stats=False)\n@@ -2215,7 +2253,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n         self.verify(\"Fail\" not in out, \"Destroy failed.\")\n \n         # add long switch rule\n-        rule = \"flow create 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 tc is 3 / end actions vf id 1 / end\"\n+        rule = \"flow create 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 tc is 3 / end actions represented_port ethdev_port_id 1 / end\"\n         self.validate_switch_filter_rule(rule, check_stats=False)\n         self.check_switch_filter_rule_list(0, [])\n         self.create_switch_filter_rule(rule, check_stats=False)\n@@ -2229,16 +2267,16 @@ class ICEDCFSwitchFilterTest(TestCase):\n         test with os default package\n         \"\"\"\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         self.launch_testpmd()\n         rules = [\n-            \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 1 / end\",\n-            \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end\",\n-            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 1 / end\",\n-            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 1 / end\",\n-            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 1 / end\",\n-            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 1 / end\",\n+            \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions represented_port ethdev_port_id 1 / end\",\n+            \"flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions represented_port ethdev_port_id 1 / end\",\n+            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions represented_port ethdev_port_id 1 / end\",\n+            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n+            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n+            \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions represented_port ethdev_port_id 1 / end\",\n         ]\n         self.validate_switch_filter_rule(rules, check_stats=False)\n         self.check_switch_filter_rule_list(0, [])\n@@ -2254,7 +2292,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     def test_add_existing_rules_but_with_different_vfs(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         vf0_pci = self.sriov_vfs_port_0[0].pci\n         vf1_pci = self.sriov_vfs_port_0[1].pci\n@@ -2262,12 +2300,12 @@ class ICEDCFSwitchFilterTest(TestCase):\n         all_eal_param = self.dut.create_eal_parameters(\n             cores=\"1S/4C/1T\",\n             ports=[vf0_pci, vf1_pci, vf2_pci],\n-            port_options={vf0_pci: \"cap=dcf\"},\n+            port_options={vf0_pci: \"cap=dcf,representor=[1,2]\"},\n         )\n         command = self.path + all_eal_param + \" -- -i\"\n-        out = self.dut.send_expect(command, \"testpmd> \", 15)\n         self.testpmd_status = \"running\"\n-        self.dut.send_expect(\"set portlist 1,2\", \"testpmd> \", 15)\n+        out = self.dut.send_expect(command, \"testpmd> \", 30)\n+        self.dut.send_expect(\"set portlist 3,4\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set verbose 1\", \"testpmd> \", 15)\n         # create rules with same pattern but to different vfs\n@@ -2298,11 +2336,11 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     def test_add_existing_rules_with_the_same_vfs(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         self.launch_testpmd()\n         # create a rule\n-        rule = \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\"\n+        rule = \"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\"\n         rule_list = self.create_switch_filter_rule(rule)  # create a rule\n         self.check_switch_filter_rule_list(0, rule_list)\n         # create the same rule\n@@ -2311,7 +2349,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     def test_add_two_rules_with_one_rule_input_set_included_in_the_other(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         vf0_pci = self.sriov_vfs_port_0[0].pci\n         vf1_pci = self.sriov_vfs_port_0[1].pci\n@@ -2319,12 +2357,12 @@ class ICEDCFSwitchFilterTest(TestCase):\n         all_eal_param = self.dut.create_eal_parameters(\n             cores=\"1S/4C/1T\",\n             ports=[vf0_pci, vf1_pci, vf2_pci],\n-            port_options={vf0_pci: \"cap=dcf\"},\n+            port_options={vf0_pci: \"cap=dcf,representor=[1,2]\"},\n         )\n         command = self.path + all_eal_param + \" -- -i\"\n-        out = self.dut.send_expect(command, \"testpmd> \", 15)\n         self.testpmd_status = \"running\"\n-        self.dut.send_expect(\"set portlist 1,2\", \"testpmd> \", 15)\n+        out = self.dut.send_expect(command, \"testpmd> \", 30)\n+        self.dut.send_expect(\"set portlist 3,4\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set verbose 1\", \"testpmd> \", 15)\n         # create rules with one rule's input set included in the other\n@@ -2367,12 +2405,12 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     def test_fwd_with_single_vf(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         command = self.create_testpmd_command()\n-        out = self.dut.send_expect(command, \"testpmd> \", 15)\n         self.testpmd_status = \"running\"\n-        self.dut.send_expect(\"set portlist 1\", \"testpmd> \", 15)\n+        out = self.dut.send_expect(command, \"testpmd> \", 30)\n+        self.dut.send_expect(\"set portlist 3\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set fwd mac\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set verbose 1\", \"testpmd> \", 15)\n         # create a rule\n@@ -2395,7 +2433,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     def test_fwd_with_multi_vfs(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         vf0_pci = self.sriov_vfs_port_0[0].pci\n         vf1_pci = self.sriov_vfs_port_0[1].pci\n@@ -2403,12 +2441,12 @@ class ICEDCFSwitchFilterTest(TestCase):\n         all_eal_param = self.dut.create_eal_parameters(\n             cores=\"1S/4C/1T\",\n             ports=[vf0_pci, vf1_pci, vf2_pci],\n-            port_options={vf0_pci: \"cap=dcf\"},\n+            port_options={vf0_pci: \"cap=dcf,representor=[1,2]\"},\n         )\n         command = self.path + all_eal_param + \" -- -i\"\n-        out = self.dut.send_expect(command, \"testpmd> \", 15)\n         self.testpmd_status = \"running\"\n-        self.dut.send_expect(\"set portlist 1,2\", \"testpmd> \", 15)\n+        out = self.dut.send_expect(command, \"testpmd> \", 30)\n+        self.dut.send_expect(\"set portlist 3,4\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set fwd mac\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set verbose 1\", \"testpmd> \", 15)\n         # create a rule\n@@ -2466,18 +2504,29 @@ class ICEDCFSwitchFilterTest(TestCase):\n         )\n         time.sleep(5)\n         vf_intf.pop(0)\n+        # re-compile testpmd for more port\n+        self.dut.send_expect(\n+            \"CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib -Dmax_ethports=128 x86_64-native-linuxapp-gcc\",\n+            \"# \",\n+            timeout = 120\n+        )\n+        self.dut.send_expect(\n+            \"ninja -C x86_64-native-linuxapp-gcc\",\n+            \"# \",\n+            timeout = 180\n+        )\n         # launch testpmd\n         vf0_pci = vf_pci[0]\n         all_eal_param = self.dut.create_eal_parameters(\n-            cores=\"1S/4C/1T\", ports=[vf0_pci], port_options={vf0_pci: \"cap=dcf\"}\n+            cores=\"1S/4C/1T\", ports=[vf0_pci], port_options={vf0_pci: f\"cap=dcf,representor=[1-{max_vf_number-1}]\"}\n         )\n         command = self.path + all_eal_param + \" -- -i\"\n-        out = self.dut.send_expect(command, \"testpmd> \", 15)\n         self.testpmd_status = \"running\"\n+        out = self.dut.send_expect(command, \"testpmd> \", 30)\n         # generate max_vf_number-1 rules to each vf and matched packets\n         for i in range(1, max_vf_number):\n             rte_flow_pattern = (\n-                \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.%d / tcp / end actions vf id %d / end\"\n+                \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.%d / tcp / end actions represented_port ethdev_port_id %d / end\"\n                 % (i, i)\n             )\n             tv_max_vfs[\"rte_flow_pattern\"].append(rte_flow_pattern)\n@@ -2536,7 +2585,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     def test_max_field_vectors(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         self.launch_testpmd()\n         # create 3 nvgre rules, which have run out of field vectors\n@@ -2545,7 +2594,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n         )  # create a rule\n         self.check_switch_filter_rule_list(0, rule_list)\n         # create a rule, check the rule can not be created successfully\n-        rule = \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.10 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a1  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf id 1 / end\"\n+        rule = \"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.10 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a1  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions represented_port ethdev_port_id 1 / end\"\n         self.create_switch_filter_rule(rule, check_stats=False)\n         self.check_switch_filter_rule_list(0, rule_list)\n         # send matched packets and check\n@@ -2564,7 +2613,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     def test_dcf_stop_start(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         self.launch_testpmd()\n         # create MAC_IPV4_UDP_PAY rule\n@@ -2585,27 +2634,27 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_mac_ipv4_pfcp_node(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_pfcp_node)\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_mac_ipv4_pfcp_session(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv4_pfcp_session)\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_mac_ipv6_pfcp_node(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_pfcp_node)\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_mac_ipv6_pfcp_session(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(tv_mac_ipv6_pfcp_session)\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_add_two_rules_with_different_input_set_same_vf_id(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self._rte_flow_validate_pattern(\n             tv_add_two_rules_with_different_input_set_same_vf_id\n         )\n@@ -2613,7 +2662,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_add_two_rules_with_different_input_set_different_vf_id(self):\n         # set up 4 vfs on 1 pf environment\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         # launch testpmd\n         vf0_pci = self.sriov_vfs_port_0[0].pci\n         vf1_pci = self.sriov_vfs_port_0[1].pci\n@@ -2621,12 +2670,12 @@ class ICEDCFSwitchFilterTest(TestCase):\n         all_eal_param = self.dut.create_eal_parameters(\n             cores=\"1S/4C/1T\",\n             ports=[vf0_pci, vf1_pci, vf2_pci],\n-            port_options={vf0_pci: \"cap=dcf\"},\n+            port_options={vf0_pci: \"cap=dcf,representor=[1,2]\"},\n         )\n         command = self.path + all_eal_param + \" -- -i\"\n-        out = self.dut.send_expect(command, \"testpmd> \", 15)\n         self.testpmd_status = \"running\"\n-        self.dut.send_expect(\"set portlist 1,2\", \"testpmd> \", 15)\n+        out = self.dut.send_expect(command, \"testpmd> \", 30)\n+        self.dut.send_expect(\"set portlist 3,4\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \", 15)\n         self.dut.send_expect(\"set verbose 1\", \"testpmd> \", 15)\n         self._rte_flow_validate_pattern(\n@@ -2635,7 +2684,7 @@ class ICEDCFSwitchFilterTest(TestCase):\n \n     @skip_unsupported_pkg([\"os default\", \"wireless\"])\n     def test_mac_drop_action(self):\n-        self.setup_1pf_vfs_env()\n+        self.setup_2pf_vfs_env()\n         self.dut.send_expect(\n             'ip link set %s vf 1 mac \"00:11:22:33:44:55\"' % self.pf0_intf, \"# \"\n         )\n@@ -2689,9 +2738,15 @@ class ICEDCFSwitchFilterTest(TestCase):\n         Run after each test suite.\n         \"\"\"\n         self.dut.kill_all()\n-        if self.default_stats:\n+        if self.default_pf0_stats:\n+            self.dut.send_expect(\n+                \"ethtool --set-priv-flags %s %s %s\"\n+                % (self.pf0_intf, self.flag, self.default_pf0_stats),\n+                \"# \",\n+            )\n+        if self.default_pf1_stats:\n             self.dut.send_expect(\n                 \"ethtool --set-priv-flags %s %s %s\"\n-                % (self.pf0_intf, self.flag, self.default_stats),\n+                % (self.pf1_intf, self.flag, self.default_pf1_stats),\n                 \"# \",\n             )\n",
    "prefixes": [
        "V1",
        "20/21"
    ]
}