| /** @file |
| EFI VLAN Config protocol is to provide manageability interface for VLAN configuration. |
| |
| Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| @par Revision Reference: |
| This Protocol is introduced in UEFI Specification 2.2 |
| |
| **/ |
| |
| #ifndef __EFI_VLANCONFIG_PROTOCOL_H__ |
| #define __EFI_VLANCONFIG_PROTOCOL_H__ |
| |
| |
| #define EFI_VLAN_CONFIG_PROTOCOL_GUID \ |
| { \ |
| 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74 } \ |
| } |
| |
| typedef struct _EFI_VLAN_CONFIG_PROTOCOL EFI_VLAN_CONFIG_PROTOCOL; |
| |
| |
| /// |
| /// EFI_VLAN_FIND_DATA |
| /// |
| typedef struct { |
| UINT16 VlanId; ///< Vlan Identifier. |
| UINT8 Priority; ///< Priority of this VLAN. |
| } EFI_VLAN_FIND_DATA; |
| |
| |
| /** |
| Create a VLAN device or modify the configuration parameter of an |
| already-configured VLAN. |
| |
| The Set() function is used to create a new VLAN device or change the VLAN |
| configuration parameters. If the VlanId hasn't been configured in the |
| physical Ethernet device, a new VLAN device will be created. If a VLAN with |
| this VlanId is already configured, then related configuration will be updated |
| as the input parameters. |
| |
| If VlanId is zero, the VLAN device will send and receive untagged frames. |
| Otherwise, the VLAN device will send and receive VLAN-tagged frames containing the VlanId. |
| If VlanId is out of scope of (0-4094), EFI_INVALID_PARAMETER is returned. |
| If Priority is out of the scope of (0-7), then EFI_INVALID_PARAMETER is returned. |
| If there is not enough system memory to perform the registration, then |
| EFI_OUT_OF_RESOURCES is returned. |
| |
| @param[in] This Points to the EFI_VLAN_CONFIG_PROTOCOL. |
| @param[in] VlanId A unique identifier (1-4094) of the VLAN which is being created |
| or modified, or zero (0). |
| @param[in] Priority 3 bit priority in VLAN header. Priority 0 is default value. If |
| VlanId is zero (0), Priority is ignored. |
| |
| @retval EFI_SUCCESS The VLAN is successfully configured. |
| @retval EFI_INVALID_PARAMETER One or more of following conditions is TRUE: |
| - This is NULL. |
| - VlanId is an invalid VLAN Identifier. |
| - Priority is invalid. |
| @retval EFI_OUT_OF_RESOURCES There is not enough system memory to perform the registration. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_VLAN_CONFIG_SET)( |
| IN EFI_VLAN_CONFIG_PROTOCOL *This, |
| IN UINT16 VlanId, |
| IN UINT8 Priority |
| ); |
| |
| /** |
| Find configuration information for specified VLAN or all configured VLANs. |
| |
| The Find() function is used to find the configuration information for matching |
| VLAN and allocate a buffer into which those entries are copied. |
| |
| @param[in] This Points to the EFI_VLAN_CONFIG_PROTOCOL. |
| @param[in] VlanId Pointer to VLAN identifier. Set to NULL to find all |
| configured VLANs. |
| @param[out] NumberOfVlan The number of VLANs which is found by the specified criteria. |
| @param[out] Entries The buffer which receive the VLAN configuration. |
| |
| @retval EFI_SUCCESS The VLAN is successfully found. |
| @retval EFI_INVALID_PARAMETER One or more of following conditions is TRUE: |
| - This is NULL. |
| - Specified VlanId is invalid. |
| @retval EFI_NOT_FOUND No matching VLAN is found. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_VLAN_CONFIG_FIND)( |
| IN EFI_VLAN_CONFIG_PROTOCOL *This, |
| IN UINT16 *VlanId OPTIONAL, |
| OUT UINT16 *NumberOfVlan, |
| OUT EFI_VLAN_FIND_DATA **Entries |
| ); |
| |
| /** |
| Remove the configured VLAN device. |
| |
| The Remove() function is used to remove the specified VLAN device. |
| If the VlanId is out of the scope of (0-4094), EFI_INVALID_PARAMETER is returned. |
| If specified VLAN hasn't been previously configured, EFI_NOT_FOUND is returned. |
| |
| @param[in] This Points to the EFI_VLAN_CONFIG_PROTOCOL. |
| @param[in] VlanId Identifier (0-4094) of the VLAN to be removed. |
| |
| @retval EFI_SUCCESS The VLAN is successfully removed. |
| @retval EFI_INVALID_PARAMETER One or more of following conditions is TRUE: |
| - This is NULL. |
| - VlanId is an invalid parameter. |
| @retval EFI_NOT_FOUND The to-be-removed VLAN does not exist. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_VLAN_CONFIG_REMOVE)( |
| IN EFI_VLAN_CONFIG_PROTOCOL *This, |
| IN UINT16 VlanId |
| ); |
| |
| /// |
| /// EFI_VLAN_CONFIG_PROTOCOL |
| /// provide manageability interface for VLAN setting. The intended |
| /// VLAN tagging implementation is IEEE802.1Q. |
| /// |
| struct _EFI_VLAN_CONFIG_PROTOCOL { |
| EFI_VLAN_CONFIG_SET Set; |
| EFI_VLAN_CONFIG_FIND Find; |
| EFI_VLAN_CONFIG_REMOVE Remove; |
| }; |
| |
| extern EFI_GUID gEfiVlanConfigProtocolGuid; |
| |
| #endif |