]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h
BaseTools:Change the path of the file that Binary Cache
[mirror_edk2.git] / MdeModulePkg / Universal / Network / MnpDxe / MnpDriver.h
index a387eb05d003dd496257518a88a9065f9469564c..150d21e9ec16b1c7f8bf8d792a140a62bebed853 100644 (file)
-/** @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 <PiDxe.h>\r
+/** @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>
+#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/UefiDriverEntryPoint.h>\r
+#include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/UefiLib.h>
-#include <Library/NetLib.h>
-#include <Library/BaseLib.h>\r
-#include <Library/MemoryAllocationLib.h>
-#include <Library/BaseMemoryLib.h>
-
-#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;
-  UINT32                        PaddingSize;
-  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 <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