+static int
+dcf_get_vlan_offload_caps_v2(struct ice_dcf_hw *hw)
+{
+ struct virtchnl_vlan_caps vlan_v2_caps;
+ struct dcf_virtchnl_cmd args;
+ int ret;
+
+ memset(&args, 0, sizeof(args));
+ args.v_op = VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS;
+ args.rsp_msgbuf = (uint8_t *)&vlan_v2_caps;
+ args.rsp_buflen = sizeof(vlan_v2_caps);
+
+ ret = ice_dcf_execute_virtchnl_cmd(hw, &args);
+ if (ret) {
+ PMD_DRV_LOG(ERR,
+ "Failed to execute command of VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS");
+ return ret;
+ }
+
+ rte_memcpy(&hw->vlan_v2_caps, &vlan_v2_caps, sizeof(vlan_v2_caps));
+ return 0;
+}
+