get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 85755,
    "url": "http://patchwork.dpdk.org/api/patches/85755/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20201228050723.27265-2-haiyue.wang@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20201228050723.27265-2-haiyue.wang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201228050723.27265-2-haiyue.wang@intel.com",
    "date": "2020-12-28T05:07:19",
    "name": "[v3,1/5] common/iavf: new VLAN opcode",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f11ea4c4d222203ec41cfa503ae79130e317fe4e",
    "submitter": {
        "id": 1044,
        "url": "http://patchwork.dpdk.org/api/people/1044/?format=api",
        "name": "Wang, Haiyue",
        "email": "haiyue.wang@intel.com"
    },
    "delegate": {
        "id": 1540,
        "url": "http://patchwork.dpdk.org/api/users/1540/?format=api",
        "username": "qzhan15",
        "first_name": "Qi",
        "last_name": "Zhang",
        "email": "qi.z.zhang@intel.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20201228050723.27265-2-haiyue.wang@intel.com/mbox/",
    "series": [
        {
            "id": 14474,
            "url": "http://patchwork.dpdk.org/api/series/14474/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=14474",
            "date": "2020-12-28T05:07:20",
            "name": "Add AVF & DCF VLAN feaure",
            "version": 3,
            "mbox": "http://patchwork.dpdk.org/series/14474/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/85755/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/85755/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 4B4A7A09FF;\n\tMon, 28 Dec 2020 06:22:56 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id C7583C9AC;\n\tMon, 28 Dec 2020 06:22:39 +0100 (CET)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by dpdk.org (Postfix) with ESMTP id CC70F2C27\n for <dev@dpdk.org>; Mon, 28 Dec 2020 06:22:34 +0100 (CET)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Dec 2020 21:22:31 -0800",
            "from npg-dpdk-haiyue-3.sh.intel.com ([10.67.118.172])\n by orsmga008.jf.intel.com with ESMTP; 27 Dec 2020 21:22:23 -0800"
        ],
        "IronPort-SDR": [
            "\n 3AuS6vJXloAm/TH52Hzx85lMgk4VHNyGdseKYqLfwU4g2neZSRAz07bibA7EeJV4V6rFu2USLv\n VCudqwovx3Ow==",
            "\n JINB9Jk6patvx1paac/HtumNeyuXGuGJi2PyBhChZa4nGPodPXqa7pSe+ytL7+vNFdfHgtuiB0\n UATlqDR3yISQ=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9847\"; a=\"175570587\"",
            "E=Sophos;i=\"5.78,454,1599548400\"; d=\"scan'208\";a=\"175570587\"",
            "E=Sophos;i=\"5.78,454,1599548400\"; d=\"scan'208\";a=\"375487254\""
        ],
        "X-ExtLoop1": "1",
        "From": "Haiyue Wang <haiyue.wang@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "qiming.yang@intel.com, jingjing.wu@intel.com, qi.z.zhang@intel.com,\n qi.fu@intel.com, Haiyue Wang <haiyue.wang@intel.com>,\n Beilei Xing <beilei.xing@intel.com>",
        "Date": "Mon, 28 Dec 2020 13:07:19 +0800",
        "Message-Id": "<20201228050723.27265-2-haiyue.wang@intel.com>",
        "X-Mailer": "git-send-email 2.29.2",
        "In-Reply-To": "<20201228050723.27265-1-haiyue.wang@intel.com>",
        "References": "<20201214071155.98764-1-haiyue.wang@intel.com>\n <20201228050723.27265-1-haiyue.wang@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v3 1/5] common/iavf: new VLAN opcode",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Add new VLAN opcode support.\n\nSigned-off-by: Haiyue Wang <haiyue.wang@intel.com>\n---\n drivers/common/iavf/virtchnl.h | 259 +++++++++++++++++++++++++++++++++\n 1 file changed, 259 insertions(+)",
    "diff": "diff --git a/drivers/common/iavf/virtchnl.h b/drivers/common/iavf/virtchnl.h\nindex fcbaa31fa..13788e46b 100644\n--- a/drivers/common/iavf/virtchnl.h\n+++ b/drivers/common/iavf/virtchnl.h\n@@ -129,6 +129,7 @@ enum virtchnl_ops {\n \tVIRTCHNL_OP_ADD_CLOUD_FILTER = 32,\n \tVIRTCHNL_OP_DEL_CLOUD_FILTER = 33,\n \t/* opcodes 34, 35, 36, 37 and 38 are reserved */\n+\tVIRTCHNL_OP_DCF_VLAN_OFFLOAD = 38,\n \tVIRTCHNL_OP_DCF_CMD_DESC = 39,\n \tVIRTCHNL_OP_DCF_CMD_BUFF = 40,\n \tVIRTCHNL_OP_DCF_DISABLE = 41,\n@@ -141,6 +142,11 @@ enum virtchnl_ops {\n \tVIRTCHNL_OP_DEL_FDIR_FILTER = 48,\n \tVIRTCHNL_OP_QUERY_FDIR_FILTER = 49,\n \tVIRTCHNL_OP_GET_MAX_RSS_QREGION = 50,\n+\tVIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS = 51,\n+\tVIRTCHNL_OP_ADD_VLAN_V2 = 52,\n+\tVIRTCHNL_OP_DEL_VLAN_V2 = 53,\n+\tVIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2 = 54,\n+\tVIRTCHNL_OP_DISABLE_VLAN_STRIPPING_V2 = 55,\n \tVIRTCHNL_OP_ENABLE_QUEUES_V2 = 107,\n \tVIRTCHNL_OP_DISABLE_QUEUES_V2 = 108,\n \tVIRTCHNL_OP_MAP_QUEUE_VECTOR = 111,\n@@ -251,6 +257,7 @@ VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_vsi_resource);\n #define VIRTCHNL_VF_OFFLOAD_CRC\t\t\t0x00000080\n \t/* 0X00000100 is reserved */\n #define VIRTCHNL_VF_LARGE_NUM_QPAIRS\t\t0x00000200\n+#define VIRTCHNL_VF_OFFLOAD_VLAN_V2\t\t0x00008000\n #define VIRTCHNL_VF_OFFLOAD_VLAN\t\t0x00010000\n #define VIRTCHNL_VF_OFFLOAD_RX_POLLING\t\t0x00020000\n #define VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2\t0x00040000\n@@ -536,6 +543,202 @@ struct virtchnl_vlan_filter_list {\n \n VIRTCHNL_CHECK_STRUCT_LEN(6, virtchnl_vlan_filter_list);\n \n+/* This enum is used for all of the VIRTCHNL_VF_OFFLOAD_VLAN_V2_CAPS related\n+ * structures and opcodes.\n+ *\n+ * VIRTCHNL_VLAN_UNSUPPORTED - This field is not supported and if a VF driver\n+ * populates it the PF should return VIRTCHNL_STATUS_ERR_NOT_SUPPORTED.\n+ *\n+ * VIRTCHNL_VLAN_ETHERTYPE_8100 - This field supports 0x8100 ethertype.\n+ * VIRTCHNL_VLAN_ETHERTYPE_88A8 - This field supports 0x88A8 ethertype.\n+ * VIRTCHNL_VLAN_ETHERTYPE_9100 - This field supports 0x9100 ethertype.\n+ *\n+ * VIRTCHNL_VLAN_ETHERTYPE_AND - Used when multiple ethertypes can be supported\n+ * by the PF concurrently. For example, if the PF can support\n+ * VIRTCHNL_VLAN_ETHERTYPE_8100 AND VIRTCHNL_VLAN_ETHERTYPE_88A8 filters it\n+ * would OR the following in the virtchnl_vlan_filtering_caps.outer field:\n+ *\n+ * \tVIRTHCNL_VLAN_ETHERTYPE_8100 |\n+ * \tVIRTCHNL_VLAN_ETHERTYPE_88A8 |\n+ * \tVIRTCHNL_VLAN_ETHERTYPE_AND;\n+ *\n+ * The VF would interpret this as VLAN filtering can be supported on both 0x8100\n+ * and 0x88A8 VLAN ethertypes.\n+ *\n+ * VIRTCHNL_ETHERTYPE_XOR - Used when only a single ethertype can be supported\n+ * by the PF concurrently. For example if the PF can support\n+ * VIRTCHNL_VLAN_ETHERTYPE_8100 XOR VIRTCHNL_VLAN_ETHERTYPE_88A8 stripping\n+ * offload it would OR the following in the\n+ * virtchnl_vlan_offload_caps.outer_stripping field:\n+ *\n+ * \tVIRTCHNL_VLAN_ETHERTYPE_8100 |\n+ * \tVIRTCHNL_VLAN_ETHERTYPE_88A8 |\n+ * \tVIRTCHNL_VLAN_ETHERTYPE_XOR;\n+ *\n+ * The VF would interpret this as VLAN stripping can be supported on either\n+ * 0x8100 or 0x88a8 VLAN ethertypes. So when requesting VLAN stripping via\n+ * VIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2 the specified ethertype will override\n+ * the previously set value.\n+ *\n+ * VIRTCHNL_VLAN_PRIO - This field supports VLAN priority bits. This is used for\n+ * VLAN filtering if the underlying PF supports it.\n+ *\n+ * VIRTCHNL_VLAN_TOGGLE_ALLOWED - This field is used to say whether a\n+ * certain VLAN capability can be toggled. For example if the underlying PF/CP\n+ * allows the VF to toggle VLAN filtering, stripping, and/or insertion it should\n+ * set this bit along with the supported ethertypes.\n+ */\n+enum virtchnl_vlan_support {\n+\tVIRTCHNL_VLAN_UNSUPPORTED =\t0,\n+\tVIRTCHNL_VLAN_ETHERTYPE_8100 =\t0x0001,\n+\tVIRTCHNL_VLAN_ETHERTYPE_88A8 =\t0x0002,\n+\tVIRTCHNL_VLAN_ETHERTYPE_9100 =\t0x0004,\n+\tVIRTCHNL_VLAN_PRIO =\t\t0x0100,\n+\tVIRTCHNL_VLAN_FILTER_MASK =\t0x1000,\n+\tVIRTCHNL_VLAN_ETHERTYPE_AND =\t0x2000,\n+\tVIRTCHNL_VLAN_ETHERTYPE_XOR =\t0x4000,\n+\tVIRTCHNL_VLAN_TOGGLE =\t\t0x8000,\n+};\n+\n+/* The PF populates these fields based on the supported VLAN filtering. If a\n+ * field is VIRTCHNL_VLAN_UNSUPPORTED then it's not supported and the PF will\n+ * reject any VIRTCHNL_OP_ADD_VLAN_V2 or VIRTCHNL_OP_DEL_VLAN_V2 messages using\n+ * the unsupported fields.\n+ *\n+ * Also, a VF is only allowed to toggle its VLAN filtering setting if the\n+ * VIRTCHNL_VFLAN_TOGGLE_ALLOWED bit is set.\n+ *\n+ * The max_filters field tells the VF how many VLAN filters it's allowed to have\n+ * at any one time. If it exceeds this amount and tries to add another filter,\n+ * then the request will be rejected by the PF.\n+ */\n+struct virtchnl_vlan_filtering_caps {\n+\tu16 outer;\n+\tu16 inner;\n+\tu16 max_filters;\n+\tu8 pad[4];\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(10, virtchnl_vlan_filtering_caps);\n+\n+/* This enum is used for the virtchnl_vlan_offload_caps structure to specify\n+ * if the PF supports a different ethertype for stripping and insertion.\n+ *\n+ * VIRTCHNL_ETHERTYPE_STRIPPING_MATCHES_INSERTION - The ethertype(s) specified\n+ * for stripping affect the ethertype(s) sepcified for insertion and visa versa\n+ * as well. If the VF tries to configure VLAN stripping via\n+ * VIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2 with VIRTCHNL_VLAN_ETHERTYPE_8100 then\n+ * that will be the ethertype for both stripping and insertion.\n+ *\n+ * VIRTCHNL_ETHERTYPE_MATCH_NOT_REQUIRED - The ethertype(s) specified for\n+ * stripping do not affect the ethertype(s) specified for insertion and visa\n+ * versa.\n+ */\n+enum virtchnl_vlan_ethertype_match {\n+\tVIRTCHNL_ETHERTYPE_STRIPPING_MATCHES_INSERTION = 0,\n+\tVIRTCHNL_ETHERTYPE_MATCH_NOT_REQUIRED = 1,\n+};\n+\n+/* The PF populates these fields based on the supported VLAN offloads. If a\n+ * field is VIRTCHNL_VLAN_UNSUPPORTED then it's not supported and the PF will\n+ * reject any VIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2 or\n+ * VIRTCHNL_OP_DISABLE_VLAN_STRIPPING_V2 messages using the unsupported fields.\n+ *\n+ * Also, a VF is only allowed to toggle its VLAN offload setting if the\n+ * VIRTCHNL_VFLAN_TOGGLE_ALLOWED bit is set.\n+ *\n+ * The VF driver needs to be aware of how the tags are stipped by hardware and\n+ * inserted by the VF driver based on the level of offload support.\n+ *\n+ * outer_stripping supported - VLAN tag stripped into L2TAG2 field by hardware\n+ * outer_insertion supported - VLAN tag inserted into L2TAG2 field by VF driver\n+ *\n+ * inner_stripping supported - VLAN tag stripped into L2TAG1 field by hardware\n+ * inner_insertion supported - VLAN tag inserted into L2TAG1 field by VF driver\n+ */\n+struct virtchnl_vlan_offload_caps {\n+\tu16 outer_stripping;\n+\tu16 inner_stripping;\n+\tu16 outer_insertion;\n+\tu16 inner_insertion;\n+\tu16 ethertype_init;\n+\tu8 ethertype_match;\n+\tu8 pad[3];\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(14, virtchnl_vlan_offload_caps);\n+\n+/* VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS\n+ * VF sends this message to determine its VLAN capabilities.\n+ *\n+ * PF will mark which capabilities it supports based on hardware support and\n+ * current configuration. For example, if a port VLAN is configured the PF will\n+ * not allow outer VLAN filtering, stripping, or insertion to be configured so\n+ * it will block these features from the VF.\n+ *\n+ * The VF will need to cross reference its capabilities with the PFs\n+ * capabilities in the response message from the PF to determine the VLAN\n+ * support.\n+ */\n+struct virtchnl_vlan_caps {\n+\tstruct virtchnl_vlan_filtering_caps filtering;\n+\tstruct virtchnl_vlan_offload_caps offloads;\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(24, virtchnl_vlan_caps);\n+\n+struct virtchnl_vlan {\n+\tu16 tci;\t/* tci[15:13] = PCP and tci[11:0] = VID */\n+\tu16 tci_mask;\t/* only valid if VIRTCHNL_VLAN_FILTER_MASK set in filtering caps */\n+\tu16 tpid;\t/* 0x8100, 0x88a8, etc. and only type(s) set in filtering caps */\n+\tu8 pad[2];\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(8, virtchnl_vlan);\n+\n+struct virtchnl_vlan_filter {\n+\tstruct virtchnl_vlan inner;\n+\tstruct virtchnl_vlan outer;\n+\tu8 pad[16];\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(32, virtchnl_vlan_filter);\n+\n+/* VIRTCHNL_OP_ADD_VLAN_V2\n+ * VIRTCHNL_OP_DEL_VLAN_V2\n+ *\n+ * VF sends these messages to add/del one or more VLAN tag filters for Rx traffic.\n+ *\n+ * The PF/CP attempts to add the filters and returns status.\n+ *\n+ * The VF should only ever attempt to add/del virtchnl_vlan_filter(s) using the\n+ * supported fields negotiated via VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS.\n+ */\n+struct virtchnl_vlan_filter_list_v2 {\n+\tu16 vport_id;\n+\tu16 num_elements;\n+\tu8 pad[4];\n+\tstruct virtchnl_vlan_filter filters[1];\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(40, virtchnl_vlan_filter_list_v2);\n+\n+/* VIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2\n+ * VIRTCHNL_OP_DISABLE_VLAN_STRIPPING_V2\n+ *\n+ * VF sends this message to enable or disable VLAN stripping. It also needs to\n+ * specify an ethertype. The VF knows which virtchnl_vlan_filter fields are\n+ * allowed via the VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS message.\n+ */\n+struct virtchnl_vlan_strip {\n+\tu16 vsi_id;\n+\tu16 outer_ethertype_setting;\t/* 0x8100, 0x88a8, etc. and only type(s) set in the offload caps */\n+\tu16 inner_ethertype_setting;\t/* 0x8100, 0x88a8, etc. and only type(s) set in the offload caps */\n+\tu8 pad[2];\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(8, virtchnl_vlan_strip);\n+\n /* VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE\n  * VF sends VSI id and flags.\n  * PF returns status code in retval.\n@@ -754,6 +957,32 @@ struct virtchnl_pkg_info {\n \n VIRTCHNL_CHECK_STRUCT_LEN(48, virtchnl_pkg_info);\n \n+struct virtchnl_dcf_vlan_offload {\n+\tu16 vf_id;\n+\tu16 tpid;\n+\tu16 vlan_flags;\n+#define VIRTCHNL_DCF_VLAN_TYPE_S\t\t0\n+#define VIRTCHNL_DCF_VLAN_TYPE_M\t\t\\\n+\t\t\t(0x1 << VIRTCHNL_DCF_VLAN_TYPE_S)\n+#define VIRTCHNL_DCF_VLAN_TYPE_INNER\t\t0x0\n+#define VIRTCHNL_DCF_VLAN_TYPE_OUTER\t\t0x1\n+#define VIRTCHNL_DCF_VLAN_INSERT_MODE_S\t\t1\n+#define VIRTCHNL_DCF_VLAN_INSERT_MODE_M\t\\\n+\t\t\t(0x7 << VIRTCHNL_DCF_VLAN_INSERT_MODE_S)\n+#define VIRTCHNL_DCF_VLAN_INSERT_DISABLE\t0x1\n+#define VIRTCHNL_DCF_VLAN_INSERT_PORT_BASED\t0x2\n+#define VIRTCHNL_DCF_VLAN_INSERT_VIA_TX_DESC\t0x3\n+#define VIRTCHNL_DCF_VLAN_STRIP_MODE_S\t\t4\n+#define VIRTCHNL_DCF_VLAN_STRIP_MODE_M\t\t\\\n+\t\t\t(0x7 << VIRTCHNL_DCF_VLAN_STRIP_MODE_S)\n+#define VIRTCHNL_DCF_VLAN_STRIP_DISABLE\t\t0x1\n+#define VIRTCHNL_DCF_VLAN_STRIP_ONLY\t\t0x2\n+#define VIRTCHNL_DCF_VLAN_STRIP_INTO_RX_DESC\t0x3\n+\tu16 vlan_id;\n+};\n+\n+VIRTCHNL_CHECK_STRUCT_LEN(8, virtchnl_dcf_vlan_offload);\n+\n struct virtchnl_supported_rxdids {\n \tu64 supported_rxdids;\n };\n@@ -1291,6 +1520,10 @@ enum virtchnl_vector_limits {\n \tVIRTCHNL_OP_MAP_UNMAP_QUEUE_VECTOR_MAX\t=\n \t\t((u16)(~0) - sizeof(struct virtchnl_queue_vector_maps)) /\n \t\tsizeof(struct virtchnl_queue_vector),\n+\n+\tVIRTCHNL_OP_ADD_DEL_VLAN_V2_MAX\t\t=\n+\t\t((u16)(~0) - sizeof(struct virtchnl_vlan_filter_list_v2)) /\n+\t\tsizeof(struct virtchnl_vlan_filter),\n };\n \n /**\n@@ -1465,6 +1698,9 @@ virtchnl_vc_validate_vf_msg(struct virtchnl_version_info *ver, u32 v_opcode,\n \tcase VIRTCHNL_OP_DEL_CLOUD_FILTER:\n \t\tvalid_len = sizeof(struct virtchnl_filter);\n \t\tbreak;\n+\tcase VIRTCHNL_OP_DCF_VLAN_OFFLOAD:\n+\t\tvalid_len = sizeof(struct virtchnl_dcf_vlan_offload);\n+\t\tbreak;\n \tcase VIRTCHNL_OP_DCF_CMD_DESC:\n \tcase VIRTCHNL_OP_DCF_CMD_BUFF:\n \t\t/* These two opcodes are specific to handle the AdminQ command,\n@@ -1491,6 +1727,29 @@ virtchnl_vc_validate_vf_msg(struct virtchnl_version_info *ver, u32 v_opcode,\n \tcase VIRTCHNL_OP_QUERY_FDIR_FILTER:\n \t\tvalid_len = sizeof(struct virtchnl_fdir_query);\n \t\tbreak;\n+\tcase VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS:\n+\t\tbreak;\n+\tcase VIRTCHNL_OP_ADD_VLAN_V2:\n+\tcase VIRTCHNL_OP_DEL_VLAN_V2:\n+\t\tvalid_len = sizeof(struct virtchnl_vlan_filter_list_v2);\n+\t\tif (msglen >= valid_len) {\n+\t\t\tstruct virtchnl_vlan_filter_list_v2 *vfl =\n+\t\t\t    (struct virtchnl_vlan_filter_list_v2 *)msg;\n+\n+\t\t\tif (vfl->num_elements == 0 || vfl->num_elements >\n+\t\t\t    VIRTCHNL_OP_ADD_DEL_VLAN_V2_MAX) {\n+\t\t\t\terr_msg_format = true;\n+\t\t\t\tbreak;\n+\t\t\t}\n+\n+\t\t\tvalid_len += (vfl->num_elements - 1) *\n+\t\t\t\tsizeof(struct virtchnl_vlan_filter);\n+\t\t}\n+\t\tbreak;\n+\tcase VIRTCHNL_OP_ENABLE_VLAN_STRIPPING_V2:\n+\tcase VIRTCHNL_OP_DISABLE_VLAN_STRIPPING_V2:\n+\t\tvalid_len = sizeof(struct virtchnl_vlan_strip);\n+\t\tbreak;\n \tcase VIRTCHNL_OP_ENABLE_QUEUES_V2:\n \tcase VIRTCHNL_OP_DISABLE_QUEUES_V2:\n \t\tvalid_len = sizeof(struct virtchnl_del_ena_dis_queues);\n",
    "prefixes": [
        "v3",
        "1/5"
    ]
}