/** @file\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
+Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions\r
+of the BSD License which accompanies this distribution. The full\r
+text of the license may be found at<BR>\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
#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/UefiLib.h>\r
#include <Library/NetLib.h>\r
#include <Library/DpcLib.h>\r
+#include <Library/UefiRuntimeServicesTableLib.h>\r
+#include <Library/DevicePathLib.h>\r
\r
#include "ComponentName.h"\r
\r
-#define MNP_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'S')\r
+#define MNP_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'D')\r
\r
typedef struct {\r
UINT32 Signature;\r
\r
EFI_HANDLE ControllerHandle;\r
+ EFI_HANDLE ImageHandle;\r
\r
- EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;\r
+ EFI_VLAN_CONFIG_PROTOCOL VlanConfig;\r
+ UINTN NumberOfVlan;\r
+ CHAR16 *MacString;\r
EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
\r
- UINT32 Mtu;\r
-\r
- LIST_ENTRY ChildrenList;\r
- UINTN ChildrenNumber;\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
BOOLEAN EnableSystemPoll;\r
\r
EFI_EVENT TimeoutCheckTimer;\r
+ EFI_EVENT MediaDetectTimer;\r
\r
UINT32 UnicastCount;\r
UINT32 BroadcastCount;\r
UINT32 PaddingSize;\r
NET_BUF *RxNbufCache;\r
UINT8 *TxBuf;\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_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
\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
+ @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
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
+ 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
+ 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
+ @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
**/\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
+ 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
+ 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
+\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] 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
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
+ 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
@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
+ 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
+ @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
EFI_STATUS\r
EFIAPI\r
MnpServiceBindingCreateChild (\r
- IN EFI_SERVICE_BINDING_PROTOCOL *This,\r
- IN OUT EFI_HANDLE *ChildHandle\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
+\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_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
EFI_STATUS\r
EFIAPI\r
MnpServiceBindingDestroyChild (\r
- IN EFI_SERVICE_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ChildHandle\r
+ IN EFI_SERVICE_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ChildHandle\r
);\r
\r
#endif\r