X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FNetwork%2FMnpDxe%2FMnpDriver.h;h=d410af2726ac82ad07fc611a36d04d7ea1bc5c7d;hp=48ad0960cd45fa28848dfc2fd719ad8cd010cbde;hb=dd29f3edb9849b7bb51f0ae4be8941a760846ef3;hpb=8a67d61da4d5a8f08a656cbeea2d902d0ad9042a diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h index 48ad0960cd..d410af2726 100644 --- a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h +++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h @@ -1,136 +1,268 @@ -/** @file - -Copyright (c) 2005 - 2007, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - MnpDriver.h - -Abstract: - - -**/ - -#ifndef _MNP_DRIVER_H_ -#define _MNP_DRIVER_H_ -#include +/** @file + Declaration of strctures and functions for MnpDxe driver. + +Copyright (c) 2005 - 2010, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions +of the BSD License which accompanies this distribution. The full +text of the license may be found at
+http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef _MNP_DRIVER_H_ +#define _MNP_DRIVER_H_ + +#include #include -#include +#include #include +#include +#include +#include #include -#include +#include #include -#include -#include -#include -#include -#include - -#include "MnpDebug.h" - -// -// Required Global Variables -// -extern EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gMnpComponentName; - -#define MNP_SERVICE_DATA_SIGNATURE EFI_SIGNATURE_32 ('M', 'n', 'p', 'S') - -typedef struct _MNP_SERVICE_DATA { - UINT32 Signature; - - EFI_HANDLE ControllerHandle; - - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - - UINT32 Mtu; - - NET_LIST_ENTRY ChildrenList; - UINTN ChildrenNumber; - UINTN ConfiguredChildrenNumber; - - NET_LIST_ENTRY GroupAddressList; - UINT32 GroupAddressCount; - - EFI_EVENT TxTimeoutEvent; - - NET_BUF_QUEUE FreeNbufQue; - INTN NbufCnt; - - EFI_EVENT PollTimer; - BOOLEAN EnableSystemPoll; - - EFI_EVENT TimeoutCheckTimer; - - UINT32 UnicastCount; - UINT32 BroadcastCount; - UINT32 MulticastCount; - UINT32 PromiscuousCount; - - // - // The size of the data buffer in the MNP_PACKET_BUFFER used to - // store a packet. - // - UINT32 BufferLength; - NET_BUF *RxNbufCache; - UINT8 *TxBuf; -} MNP_SERVICE_DATA; - -#define MNP_SERVICE_DATA_FROM_THIS(a) \ - CR ( \ - (a), \ - MNP_SERVICE_DATA, \ - ServiceBinding, \ - MNP_SERVICE_DATA_SIGNATURE \ - ) - -EFI_STATUS -EFIAPI -MnpDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL * This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL - ); - -EFI_STATUS -EFIAPI -MnpDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL * This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL - ); - -EFI_STATUS -EFIAPI -MnpDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ); - -EFI_STATUS -EFIAPI -MnpServiceBindingCreateChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE *ChildHandle - ); - -EFI_STATUS -EFIAPI -MnpServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle - ); - -#endif +#include +#include +#include +#include +#include + +#include "ComponentName.h" + +#define MNP_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'D') + +typedef struct { + UINT32 Signature; + + EFI_HANDLE ControllerHandle; + EFI_HANDLE ImageHandle; + + EFI_VLAN_CONFIG_PROTOCOL VlanConfig; + UINTN NumberOfVlan; + CHAR16 *MacString; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + + // + // List of MNP_SERVICE_DATA + // + LIST_ENTRY ServiceList; + // + // Number of configured MNP Service Binding child + // + UINTN ConfiguredChildrenNumber; + + LIST_ENTRY GroupAddressList; + UINT32 GroupAddressCount; + + EFI_EVENT TxTimeoutEvent; + + NET_BUF_QUEUE FreeNbufQue; + INTN NbufCnt; + + EFI_EVENT PollTimer; + BOOLEAN EnableSystemPoll; + + EFI_EVENT TimeoutCheckTimer; + EFI_EVENT MediaDetectTimer; + + UINT32 UnicastCount; + UINT32 BroadcastCount; + UINT32 MulticastCount; + UINT32 PromiscuousCount; + + // + // The size of the data buffer in the MNP_PACKET_BUFFER used to + // store a packet. + // + UINT32 BufferLength; + UINT32 PaddingSize; + NET_BUF *RxNbufCache; + UINT8 *TxBuf; +} MNP_DEVICE_DATA; + +#define MNP_DEVICE_DATA_FROM_THIS(a) \ + CR ( \ + (a), \ + MNP_DEVICE_DATA, \ + VlanConfig, \ + MNP_DEVICE_DATA_SIGNATURE \ + ) + +#define MNP_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'S') + +typedef struct { + UINT32 Signature; + + LIST_ENTRY Link; + + MNP_DEVICE_DATA *MnpDeviceData; + EFI_HANDLE ServiceHandle; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + + LIST_ENTRY ChildrenList; + UINTN ChildrenNumber; + + UINT32 Mtu; + + UINT16 VlanId; + UINT8 Priority; +} MNP_SERVICE_DATA; + + +#define MNP_SERVICE_DATA_FROM_THIS(a) \ + CR ( \ + (a), \ + MNP_SERVICE_DATA, \ + ServiceBinding, \ + MNP_SERVICE_DATA_SIGNATURE \ + ) + +#define MNP_SERVICE_DATA_FROM_LINK(a) \ + CR ( \ + (a), \ + MNP_SERVICE_DATA, \ + Link, \ + MNP_SERVICE_DATA_SIGNATURE \ + ) + + +/** + Test to see if this driver supports ControllerHandle. This service + is called by the EFI boot service ConnectController(). In + order to make drivers as small as possible, there are a few calling + restrictions for this service. ConnectController() must + follow these calling restrictions. If any other agent wishes to call + Supported() it must also follow these calling restrictions. + + @param[in] This Protocol instance pointer. + @param[in] ControllerHandle Handle of device to test. + @param[in] RemainingDevicePath Optional parameter use to pick a specific + child device to start. + + @retval EFI_SUCCESS This driver supports this device. + @retval EFI_ALREADY_STARTED This driver is already running on this device. + @retval Others This driver does not support this device. + +**/ +EFI_STATUS +EFIAPI +MnpDriverBindingSupported ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ); + +/** + Start this driver on ControllerHandle. This service is called by the + EFI boot service ConnectController(). In order to make drivers as small + as possible, there are a few calling restrictions for this service. + ConnectController() must follow these calling restrictions. If any other + agent wishes to call Start() it must also follow these calling restrictions. + + @param[in] This Protocol instance pointer. + @param[in] ControllerHandle Handle of device to bind driver to. + @param[in] RemainingDevicePath Optional parameter use to pick a specific + child device to start. + + @retval EFI_SUCCESS This driver is added to ControllerHandle. + @retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory for Mnp Service Data. + @retval Others This driver does not support this device. + +**/ +EFI_STATUS +EFIAPI +MnpDriverBindingStart ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + ); + + +/** + Stop this driver on ControllerHandle. This service is called by the + EFI boot service DisconnectController(). In order to make drivers as + small as possible, there are a few calling restrictions for this service. + DisconnectController() must follow these calling restrictions. If any other + agent wishes to call Stop() it must also follow these calling restrictions. + + @param[in] This Protocol instance pointer. + @param[in] ControllerHandle Handle of device to stop driver on. + @param[in] NumberOfChildren Number of Handles in ChildHandleBuffer. If + number of children is zero stop the entire + bus driver. + @param[in] ChildHandleBuffer List of Child Handles to Stop. + + @retval EFI_SUCCESS This driver is removed ControllerHandle. + @retval EFI_DEVICE_ERROR The device could not be stopped due to a device error. + +**/ +EFI_STATUS +EFIAPI +MnpDriverBindingStop ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + ); + +/** + Creates a child handle with a set of I/O services. + + @param[in] This Protocol instance pointer. + @param[in, out] ChildHandle Pointer to the handle of the child to create. If + it is NULL, then a new handle is created. If + it is not NULL, then the I/O services are added + to the existing child handle. + + @retval EFI_SUCCES The protocol was added to ChildHandle. + @retval EFI_INVALID_PARAMETER ChildHandle is NULL. + @retval EFI_OUT_OF_RESOURCES There are not enough resources availabe to + create the child. + @retval Others The child handle was not created. + +**/ +EFI_STATUS +EFIAPI +MnpServiceBindingCreateChild ( + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN OUT EFI_HANDLE *ChildHandle + ); + +/** + Destroys a child handle with a set of I/O services. + + The DestroyChild() function does the opposite of CreateChild(). It removes a + protocol that was installed by CreateChild() from ChildHandle. If the removed + protocol is the last protocol on ChildHandle, then ChildHandle is destroyed. + + @param[in] This Pointer to the EFI_SERVICE_BINDING_PROTOCOL + instance. + @param[in] ChildHandle Handle of the child to destroy. + + @retval EFI_SUCCES The protocol was removed from ChildHandle. + @retval EFI_UNSUPPORTED ChildHandle does not support the protocol that + is being removed. + @retval EFI_INVALID_PARAMETER ChildHandle is not a valid UEFI handle. + @retval EFI_ACCESS_DENIED The protocol could not be removed from the + ChildHandle because its services are being + used. + @retval Others The child handle was not destroyed. + +**/ +EFI_STATUS +EFIAPI +MnpServiceBindingDestroyChild ( + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle + ); + +#endif