+++ /dev/null
-/** @file\r
- Declaration of strctures and functions for MnpDxe driver.\r
-\r
-Copyright (c) 2005 - 2016, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef _MNP_DRIVER_H_\r
-#define _MNP_DRIVER_H_\r
-\r
-#include <Uefi.h>\r
-\r
-#include <Protocol/ManagedNetwork.h>\r
-#include <Protocol/SimpleNetwork.h>\r
-#include <Protocol/ServiceBinding.h>\r
-#include <Protocol/VlanConfig.h>\r
-\r
-#include <Library/BaseLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/NetLib.h>\r
-#include <Library/DpcLib.h>\r
-#include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/DevicePathLib.h>\r
-#include <Library/PrintLib.h>\r
-\r
-#include "ComponentName.h"\r
-\r
-#define MNP_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'D')\r
-\r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding;\r
-\r
-typedef struct {\r
- UINT32 Signature;\r
-\r
- EFI_HANDLE ControllerHandle;\r
- EFI_HANDLE ImageHandle;\r
-\r
- EFI_VLAN_CONFIG_PROTOCOL VlanConfig;\r
- UINTN NumberOfVlan;\r
- CHAR16 *MacString;\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
-\r
- //\r
- // List of MNP_SERVICE_DATA\r
- //\r
- LIST_ENTRY ServiceList;\r
- //\r
- // Number of configured MNP Service Binding child\r
- //\r
- UINTN ConfiguredChildrenNumber;\r
-\r
- LIST_ENTRY GroupAddressList;\r
- UINT32 GroupAddressCount;\r
-\r
- LIST_ENTRY FreeTxBufList;\r
- LIST_ENTRY AllTxBufList;\r
- UINT32 TxBufCount;\r
-\r
- NET_BUF_QUEUE FreeNbufQue;\r
- INTN NbufCnt;\r
-\r
- EFI_EVENT PollTimer;\r
- BOOLEAN EnableSystemPoll;\r
-\r
- EFI_EVENT TimeoutCheckTimer;\r
- EFI_EVENT MediaDetectTimer;\r
-\r
- UINT32 UnicastCount;\r
- UINT32 BroadcastCount;\r
- UINT32 MulticastCount;\r
- UINT32 PromiscuousCount;\r
-\r
- //\r
- // The size of the data buffer in the MNP_PACKET_BUFFER used to\r
- // store a packet.\r
- //\r
- UINT32 BufferLength;\r
- UINT32 PaddingSize;\r
- NET_BUF *RxNbufCache;\r
-} MNP_DEVICE_DATA;\r
-\r
-#define MNP_DEVICE_DATA_FROM_THIS(a) \\r
- CR ( \\r
- (a), \\r
- MNP_DEVICE_DATA, \\r
- VlanConfig, \\r
- MNP_DEVICE_DATA_SIGNATURE \\r
- )\r
-\r
-#define MNP_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'S')\r
-\r
-typedef struct {\r
- UINT32 Signature;\r
-\r
- LIST_ENTRY Link;\r
-\r
- MNP_DEVICE_DATA *MnpDeviceData;\r
- EFI_HANDLE ServiceHandle;\r
- EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
-\r
- LIST_ENTRY ChildrenList;\r
- UINTN ChildrenNumber;\r
-\r
- UINT32 Mtu;\r
-\r
- UINT16 VlanId;\r
- UINT8 Priority;\r
-} MNP_SERVICE_DATA;\r
-\r
-\r
-#define MNP_SERVICE_DATA_FROM_THIS(a) \\r
- CR ( \\r
- (a), \\r
- MNP_SERVICE_DATA, \\r
- ServiceBinding, \\r
- MNP_SERVICE_DATA_SIGNATURE \\r
- )\r
-\r
-#define MNP_SERVICE_DATA_FROM_LINK(a) \\r
- CR ( \\r
- (a), \\r
- MNP_SERVICE_DATA, \\r
- Link, \\r
- MNP_SERVICE_DATA_SIGNATURE \\r
- )\r
-\r
-\r
-/**\r
- Test to see if this driver supports ControllerHandle. This service\r
- is called by the EFI boot service ConnectController(). In\r
- order to make drivers as small as possible, there are a few calling\r
- restrictions for this service. ConnectController() must\r
- follow these calling restrictions. If any other agent wishes to call\r
- Supported() it must also follow these calling restrictions.\r
-\r
- @param[in] This Protocol instance pointer.\r
- @param[in] ControllerHandle Handle of device to test.\r
- @param[in] RemainingDevicePath Optional parameter use to pick a specific\r
- child device to start.\r
-\r
- @retval EFI_SUCCESS This driver supports this device.\r
- @retval EFI_ALREADY_STARTED This driver is already running on this device.\r
- @retval Others This driver does not support this device.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-MnpDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
- );\r
-\r
-/**\r
- Start this driver on ControllerHandle. This service is called by the\r
- EFI boot service ConnectController(). In order to make drivers as small\r
- as possible, there are a few calling restrictions for this service.\r
- ConnectController() must follow these calling restrictions. If any other\r
- agent wishes to call Start() it must also follow these calling restrictions.\r
-\r
- @param[in] This Protocol instance pointer.\r
- @param[in] ControllerHandle Handle of device to bind driver to.\r
- @param[in] RemainingDevicePath Optional parameter use to pick a specific\r
- child device to start.\r
-\r
- @retval EFI_SUCCESS This driver is added to ControllerHandle.\r
- @retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle.\r
- @retval EFI_OUT_OF_RESOURCES Failed to allocate memory for Mnp Service Data.\r
- @retval Others This driver does not support this device.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-MnpDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL\r
- );\r
-\r
-\r
-/**\r
- Stop this driver on ControllerHandle. This service is called by the\r
- EFI boot service DisconnectController(). In order to make drivers as\r
- small as possible, there are a few calling restrictions for this service.\r
- DisconnectController() must follow these calling restrictions. If any other\r
- agent wishes to call Stop() it must also follow these calling restrictions.\r
-\r
- @param[in] This Protocol instance pointer.\r
- @param[in] ControllerHandle Handle of device to stop driver on.\r
- @param[in] NumberOfChildren Number of Handles in ChildHandleBuffer. If\r
- number of children is zero stop the entire\r
- bus driver.\r
- @param[in] ChildHandleBuffer List of Child Handles to Stop.\r
-\r
- @retval EFI_SUCCESS This driver is removed ControllerHandle.\r
- @retval EFI_DEVICE_ERROR The device could not be stopped due to a device error.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-MnpDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer OPTIONAL\r
- );\r
-\r
-/**\r
- Creates a child handle with a set of I/O services.\r
-\r
- @param[in] This Protocol instance pointer.\r
- @param[in, out] ChildHandle Pointer to the handle of the child to create. If\r
- it is NULL, then a new handle is created. If\r
- it is not NULL, then the I/O services are added\r
- to the existing child handle.\r
-\r
- @retval EFI_SUCCES The protocol was added to ChildHandle.\r
- @retval EFI_INVALID_PARAMETER ChildHandle is NULL.\r
- @retval EFI_OUT_OF_RESOURCES There are not enough resources available to\r
- create the child.\r
- @retval Others The child handle was not created.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-MnpServiceBindingCreateChild (\r
- IN EFI_SERVICE_BINDING_PROTOCOL *This,\r
- IN OUT EFI_HANDLE *ChildHandle\r
- );\r
-\r
-/**\r
- Destroys a child handle with a set of I/O services.\r
-\r
- The DestroyChild() function does the opposite of CreateChild(). It removes a\r
- protocol that was installed by CreateChild() from ChildHandle. If the removed\r
- protocol is the last protocol on ChildHandle, then ChildHandle is destroyed.\r
-\r
- @param[in] This Pointer to the EFI_SERVICE_BINDING_PROTOCOL\r
- instance.\r
- @param[in] ChildHandle Handle of the child to destroy.\r
-\r
- @retval EFI_SUCCES The protocol was removed from ChildHandle.\r
- @retval EFI_UNSUPPORTED ChildHandle does not support the protocol that\r
- is being removed.\r
- @retval EFI_INVALID_PARAMETER ChildHandle is NULL.\r
- @retval EFI_ACCESS_DENIED The protocol could not be removed from the\r
- ChildHandle because its services are being\r
- used.\r
- @retval Others The child handle was not destroyed.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-MnpServiceBindingDestroyChild (\r
- IN EFI_SERVICE_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ChildHandle\r
- );\r
-\r
-#endif\r