/** @file\r
-\r
-Copyright (c) 2005 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
+ Declaration of strctures and functions for MnpDxe driver.\r
+ \r
+Copyright (c) 2005 - 2007, Intel Corporation. <BR> \r
+All rights reserved. This program and the accompanying materials are licensed \r
+and made available under the terms and conditions of the BSD License which \r
+accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
\r
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
-Module Name:\r
-\r
- MnpDriver.h\r
-\r
-Abstract:\r
-\r
-\r
**/\r
\r
#ifndef _MNP_DRIVER_H_\r
#define _MNP_DRIVER_H_\r
-#include <PiDxe.h>\r
+#include <Uefi.h>\r
\r
#include <Protocol/ManagedNetwork.h>\r
#include <Protocol/SimpleNetwork.h>\r
#include <Protocol/ServiceBinding.h>\r
\r
+#include <Library/BaseLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
#include <Library/DebugLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/MemoryAllocationLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/UefiLib.h>\r
#include <Library/NetLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-\r
-#include "MnpDebug.h"\r
+#include <Library/DpcLib.h>\r
\r
-//\r
-// Required Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gMnpComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gMnpComponentName2;\r
+#include "ComponentName.h"\r
\r
-#define MNP_SERVICE_DATA_SIGNATURE EFI_SIGNATURE_32 ('M', 'n', 'p', 'S')\r
+#define MNP_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'S')\r
\r
-typedef struct _MNP_SERVICE_DATA {\r
+typedef struct {\r
UINT32 Signature;\r
\r
EFI_HANDLE ControllerHandle;\r
\r
UINT32 Mtu;\r
\r
- NET_LIST_ENTRY ChildrenList;\r
+ LIST_ENTRY ChildrenList;\r
UINTN ChildrenNumber;\r
UINTN ConfiguredChildrenNumber;\r
\r
- NET_LIST_ENTRY GroupAddressList;\r
+ LIST_ENTRY GroupAddressList;\r
UINT32 GroupAddressCount;\r
\r
EFI_EVENT TxTimeoutEvent;\r
MNP_SERVICE_DATA_SIGNATURE \\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_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\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_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\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\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 availabe 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 EFI_HANDLE *ChildHandle\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 not a valid UEFI handle.\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