X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FNetwork%2FMnpDxe%2FMnpDriver.h;h=d410af2726ac82ad07fc611a36d04d7ea1bc5c7d;hp=5e75b30b9794d9864c8d48500267b3c213988c17;hb=dd29f3edb9849b7bb51f0ae4be8941a760846ef3;hpb=6e4bac4dac892c8e041f8f89e1948ea43151a0a4 diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h index 5e75b30b97..d410af2726 100644 --- a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h +++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h @@ -1,11 +1,12 @@ /** @file Declaration of strctures and functions for MnpDxe driver. - -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 + +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. @@ -14,33 +15,47 @@ 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 "ComponentName.h" -#define MNP_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'S') +#define MNP_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'D') typedef struct { UINT32 Signature; EFI_HANDLE ControllerHandle; + EFI_HANDLE ImageHandle; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_VLAN_CONFIG_PROTOCOL VlanConfig; + UINTN NumberOfVlan; + CHAR16 *MacString; EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - UINT32 Mtu; - - LIST_ENTRY ChildrenList; - UINTN ChildrenNumber; + // + // List of MNP_SERVICE_DATA + // + LIST_ENTRY ServiceList; + // + // Number of configured MNP Service Binding child + // UINTN ConfiguredChildrenNumber; LIST_ENTRY GroupAddressList; @@ -55,6 +70,7 @@ typedef struct { BOOLEAN EnableSystemPoll; EFI_EVENT TimeoutCheckTimer; + EFI_EVENT MediaDetectTimer; UINT32 UnicastCount; UINT32 BroadcastCount; @@ -69,8 +85,38 @@ typedef struct { 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), \ @@ -79,6 +125,15 @@ typedef struct { 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 @@ -89,7 +144,7 @@ typedef struct { @param[in] This Protocol instance pointer. @param[in] ControllerHandle Handle of device to test. - @param[in] RemainingDevicePath Optional parameter use to pick a specific + @param[in] RemainingDevicePath Optional parameter use to pick a specific child device to start. @retval EFI_SUCCESS This driver supports this device. @@ -100,50 +155,50 @@ typedef struct { EFI_STATUS EFIAPI MnpDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + 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 + 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 + @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 + 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 + 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] 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. @@ -153,10 +208,10 @@ MnpDriverBindingStart ( EFI_STATUS EFIAPI MnpDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ); /** @@ -165,12 +220,12 @@ MnpDriverBindingStop ( @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. + 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 + @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. @@ -178,22 +233,22 @@ MnpDriverBindingStop ( EFI_STATUS EFIAPI MnpServiceBindingCreateChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN OUT EFI_HANDLE *ChildHandle + 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 + + 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_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. @@ -206,8 +261,8 @@ MnpServiceBindingCreateChild ( EFI_STATUS EFIAPI MnpServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle ); #endif