diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-11 08:17:27 +0000 |
commit | f215e02bf85f68d3a6106c2a1f4f7f063f819064 (patch) | |
tree | 6bb5b92c046312c4e95ac2620b10ddf482d3fa8b /src/VBox/Devices/EFI/Firmware/NetworkPkg/MnpDxe/MnpVlan.h | |
parent | Initial commit. (diff) | |
download | virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.tar.xz virtualbox-f215e02bf85f68d3a6106c2a1f4f7f063f819064.zip |
Adding upstream version 7.0.14-dfsg.upstream/7.0.14-dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/NetworkPkg/MnpDxe/MnpVlan.h | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/NetworkPkg/MnpDxe/MnpVlan.h b/src/VBox/Devices/EFI/Firmware/NetworkPkg/MnpDxe/MnpVlan.h new file mode 100644 index 00000000..c5e048e0 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/NetworkPkg/MnpDxe/MnpVlan.h @@ -0,0 +1,205 @@ +/** @file + Header file to be included by MnpVlan.c. + +Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR> +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __MNP_VLAN_H__ +#define __MNP_VLAN_H__ + +#include "MnpDriver.h" + +extern EFI_VLAN_CONFIG_PROTOCOL mVlanConfigProtocolTemplate; + + +/** + Create a child handle for the VLAN ID. + + @param[in] ImageHandle The driver image handle. + @param[in] ControllerHandle Handle of device to bind driver to. + @param[in] VlanId The VLAN ID. + @param[out] Devicepath Pointer to returned device path for child handle. + + @return The handle of VLAN child or NULL if failed to create VLAN child. + +**/ +EFI_HANDLE +MnpCreateVlanChild ( + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle, + IN UINT16 VlanId, + OUT EFI_DEVICE_PATH_PROTOCOL **Devicepath OPTIONAL + ); + +/** + Remove VLAN tag of a packet. + + @param[in, out] MnpDeviceData Pointer to the mnp device context data. + @param[in, out] Nbuf Pointer to the NET_BUF to remove VLAN tag. + @param[out] VlanId Pointer to the returned VLAN ID. + + @retval TRUE VLAN tag is removed from this packet. + @retval FALSE There is no VLAN tag in this packet. + +**/ +BOOLEAN +MnpRemoveVlanTag ( + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN OUT NET_BUF *Nbuf, + OUT UINT16 *VlanId + ); + +/** + Build the vlan packet to transmit from the TxData passed in. + + @param MnpServiceData Pointer to the mnp service context data. + @param TxData Pointer to the transmit data containing the + information to build the packet. + @param ProtocolType Pointer to the Ethernet protocol type. + @param Packet Pointer to record the address of the packet. + @param Length Pointer to a UINT32 variable used to record the + packet's length. + +**/ +VOID +MnpInsertVlanTag ( + IN MNP_SERVICE_DATA *MnpServiceData, + IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, + OUT UINT16 *ProtocolType, + IN OUT UINT8 **Packet, + IN OUT UINT32 *Length + ); + +/** + Get VLAN configuration variable. + + @param[in] MnpDeviceData Pointer to the MNP device context data. + @param[out] NumberOfVlan Pointer to number of VLAN to be returned. + @param[out] VlanVariable Pointer to the buffer to return requested + array of VLAN_TCI. + + @retval EFI_SUCCESS The array of VLAN_TCI was returned in VlanVariable + and number of VLAN was returned in NumberOfVlan. + @retval EFI_NOT_FOUND VLAN configuration variable not found. + @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the configuration. + +**/ +EFI_STATUS +MnpGetVlanVariable ( + IN MNP_DEVICE_DATA *MnpDeviceData, + OUT UINTN *NumberOfVlan, + OUT VLAN_TCI **VlanVariable + ); + +/** + Set VLAN configuration variable. + + @param[in] MnpDeviceData Pointer to the MNP device context data. + @param[in] NumberOfVlan Number of VLAN in array VlanVariable. + @param[in] VlanVariable Pointer to array of VLAN_TCI. + + @retval EFI_SUCCESS The VLAN variable is successfully set. + @retval EFI_OUT_OF_RESOURCES There is not enough resource to set the configuration. + +**/ +EFI_STATUS +MnpSetVlanVariable ( + IN MNP_DEVICE_DATA *MnpDeviceData, + IN UINTN NumberOfVlan, + IN VLAN_TCI *VlanVariable + ); + +/** + 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. + +**/ +EFI_STATUS +EFIAPI +VlanConfigSet ( + 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. + +**/ +EFI_STATUS +EFIAPI +VlanConfigFind ( + 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. + +**/ +EFI_STATUS +EFIAPI +VlanConfigRemove ( + IN EFI_VLAN_CONFIG_PROTOCOL *This, + IN UINT16 VlanId + ); + +#endif |