]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/SnpNt32Dxe/SnpNt32.h
UefiCpuPkg: Remove double \r
[mirror_edk2.git] / Nt32Pkg / SnpNt32Dxe / SnpNt32.h
index d1b999f537ccae08d67eecdb22ecd7dc52acc627..9939c6bd648ff8525f617cc4e169e36c22d5e4af 100644 (file)
-/** @file
-
-Copyright (c) 2006 - 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:
-
-  SnpNt32.h
-
-Abstract:
-
--**/
-
-#ifndef _SNP_NT32_H_
-#define _SNP_NT32_H_
-\r
-#include <PiDxe.h>\r
+/** @file\r
+\r
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+Module Name:\r
+\r
+  SnpNt32.h\r
+\r
+Abstract:\r
+\r
+-**/\r
+\r
+#ifndef _SNP_NT32_H_\r
+#define _SNP_NT32_H_\r
+\r
+#include <Uefi.h>\r
 \r
 #include <Protocol/SimpleNetwork.h>\r
-#include <Protocol/DevicePath.h>
+#include <Protocol/DevicePath.h>\r
 #include <Protocol/WinNtThunk.h>\r
-
+\r
 #include <Library/BaseLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/UefiLib.h>\r
-#include <Library/DevicePathLib.h>
-#include <Library/NetLib.h>
-#include <Library/MemoryAllocationLib.h>
-
-typedef struct _SNPNT32_GLOBAL_DATA  SNPNT32_GLOBAL_DATA;
-typedef struct _SNPNT32_INSTANCE_DATA SNPNT32_INSTANCE_DATA;
-
-#define NETWORK_LIBRARY_NAME_U          L"SnpNt32Io.dll"
-
-#define NETWORK_LIBRARY_INITIALIZE      "SnpInitialize"
-#define NETWORK_LIBRARY_FINALIZE        "SnpFinalize"
-#define NETWORK_LIBRARY_SET_RCV_FILTER  "SnpSetReceiveFilter"
-#define NETWORK_LIBRARY_RECEIVE         "SnpReceive"
-#define NETWORK_LIBRARY_TRANSMIT        "SnpTransmit"
-
-#pragma pack(1)
-typedef struct _NT_NET_INTERFACE_INFO {
-  UINT32          InterfaceIndex;
-  EFI_MAC_ADDRESS MacAddr;
-} NT_NET_INTERFACE_INFO;
-#pragma pack()
-
-#define NET_ETHER_HEADER_SIZE     14
-
-#define MAX_INTERFACE_INFO_NUMBER 16
-#define MAX_FILE_NAME_LENGTH      280
-
-//
-//  Functions in Net Library
-//
-typedef
-INT32
-(*NT_NET_INITIALIZE) (
-  IN OUT  UINT32                *InterfaceCount,
-  IN OUT  NT_NET_INTERFACE_INFO * InterfaceInfoBuffer
-  );
-
-typedef
-INT32
-(*NT_NET_FINALIZE) (
-  VOID
-  );
-
-typedef
-INT32
-(*NT_NET_SET_RECEIVE_FILTER) (
-  IN  UINT32                        Index,
-  IN  UINT32                        EnableFilter,
-  IN  UINT32                        MCastFilterCnt,
-  IN  EFI_MAC_ADDRESS               * MCastFilter
-  );
-
-typedef
-INT32
-(*NT_NET_RECEIVE) (
-  IN      UINT32                        Index,
-  IN OUT  UINT32                        *BufferSize,
-  OUT     VOID                          *Buffer
-  );
-
-typedef
-INT32
-(*NT_NET_TRANSMIT) (
-  IN  UINT32                        Index,
-  IN  UINT32                        HeaderSize,
-  IN  UINT32                        BufferSize,
-  IN  VOID                          *Buffer,
-  IN  EFI_MAC_ADDRESS               * SrcAddr,
-  IN  EFI_MAC_ADDRESS               * DestAddr,
-  IN  UINT16                        *Protocol
-  );
-
-typedef struct _NT_NET_UTILITY_TABLE {
-  NT_NET_INITIALIZE         Initialize;
-  NT_NET_FINALIZE           Finalize;
-  NT_NET_SET_RECEIVE_FILTER SetReceiveFilter;
-  NT_NET_RECEIVE            Receive;
-  NT_NET_TRANSMIT           Transmit;
-} NT_NET_UTILITY_TABLE;
-
-//
-//  Private functions
-//
-typedef
-EFI_STATUS
-(*SNPNT32_INITIALIZE_GLOBAL_DATA) (
-  IN SNPNT32_GLOBAL_DATA * This
-  );
-
-typedef
-EFI_STATUS
-(*SNPNT32_INITIALIZE_INSTANCE_DATA) (
-  IN SNPNT32_GLOBAL_DATA    * This,
-  IN SNPNT32_INSTANCE_DATA  * Instance
-  );
-
-typedef
-EFI_STATUS
-(*SNPNT32_CLOSE_INSTANCE) (
-  IN SNPNT32_GLOBAL_DATA    * This,
-  IN SNPNT32_INSTANCE_DATA  * Instance
-  );
-
-//
-//  Global data for this driver
-//
-#define SNP_NT32_DRIVER_SIGNATURE EFI_SIGNATURE_32 ('W', 'S', 'N', 'P')
-
-typedef struct _SNPNT32_GLOBAL_DATA {
-  UINT32                            Signature;
-
-  //
-  //  List for all the fake SNP instance
-  //
-  NET_LIST_ENTRY                    InstanceList;
-
-  EFI_WIN_NT_THUNK_PROTOCOL         *WinNtThunk;
-  HMODULE                           NetworkLibraryHandle;
-
-  NT_NET_UTILITY_TABLE              NtNetUtilityTable;
-
-  NET_LOCK                          Lock;
-
-  //
-  //  Private functions
-  //
-  SNPNT32_INITIALIZE_GLOBAL_DATA    InitializeGlobalData;
-  SNPNT32_INITIALIZE_INSTANCE_DATA  InitializeInstanceData;
-  SNPNT32_CLOSE_INSTANCE            CloseInstance;
-} SNPNT32_GLOBAL_DATA;
-
-//
-//  Instance data for each fake SNP instance
-//
-#define SNP_NT32_INSTANCE_SIGNATURE EFI_SIGNATURE_32 ('w', 'S', 'N', 'P')
-
-typedef struct _SNPNT32_INSTANCE_DATA {
-  UINT32                      Signature;
-
-  //
-  //  List entry use for linking with other instance
-  //
-  NET_LIST_ENTRY              Entry;
-
-  SNPNT32_GLOBAL_DATA         *GlobalData;
-
-  EFI_HANDLE                  DeviceHandle;
-  EFI_DEVICE_PATH_PROTOCOL    *DevicePath;
-
-  EFI_SIMPLE_NETWORK_PROTOCOL Snp;
-  EFI_SIMPLE_NETWORK_MODE     Mode;
-
-  NT_NET_INTERFACE_INFO       InterfaceInfo;
-
-  //
-  //  Private functions
-  //
-} SNPNT32_INSTANCE_DATA;
-
-#define SNP_NT32_INSTANCE_DATA_FROM_SNP_THIS(a) \
-  CR ( \
-  a, \
-  SNPNT32_INSTANCE_DATA, \
-  Snp, \
-  SNP_NT32_INSTANCE_SIGNATURE \
-  )
-
-extern EFI_DRIVER_BINDING_PROTOCOL  gSnpNt32DriverBinding;
-extern EFI_COMPONENT_NAME_PROTOCOL   gSnpNt32DriverComponentName;
-
-EFI_STATUS
-EFIAPI
-SnpNt32DriverBindingSupported (
-  IN EFI_DRIVER_BINDING_PROTOCOL  * This,
-  IN EFI_HANDLE                   ControllerHandle,
-  IN EFI_DEVICE_PATH_PROTOCOL     * RemainingDevicePath OPTIONAL
-  );
-
-EFI_STATUS
-EFIAPI
-SnpNt32DriverBindingStart (
-  IN EFI_DRIVER_BINDING_PROTOCOL  * This,
-  IN EFI_HANDLE                   ControllerHandle,
-  IN EFI_DEVICE_PATH_PROTOCOL     * RemainingDevicePath OPTIONAL
-  );
-
-EFI_STATUS
-EFIAPI
-SnpNt32DriverBindingStop (
-  IN  EFI_DRIVER_BINDING_PROTOCOL  *This,
-  IN  EFI_HANDLE                   ControllerHandle,
-  IN  UINTN                        NumberOfChildren,
-  IN  EFI_HANDLE                   *ChildHandleBuffer
-  );
-
-EFI_STATUS
-SnpNt32InitializeGlobalData (
-  IN SNPNT32_GLOBAL_DATA *This
-  );
-
-EFI_STATUS
-SnpNt32InitializeInstanceData (
-  IN SNPNT32_GLOBAL_DATA    *This,
-  IN SNPNT32_INSTANCE_DATA  *Instance
-  );
-
-EFI_STATUS
-SnpNt32CloseInstance (
-  IN SNPNT32_GLOBAL_DATA    *This,
-  IN SNPNT32_INSTANCE_DATA  *Instance
-  );
-
-#endif
+#include <Library/DevicePathLib.h>\r
+#include <Library/NetLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+\r
+typedef struct _SNPNT32_GLOBAL_DATA  SNPNT32_GLOBAL_DATA;\r
+typedef struct _SNPNT32_INSTANCE_DATA SNPNT32_INSTANCE_DATA;\r
+\r
+#define NETWORK_LIBRARY_NAME_U          L"SnpNt32Io.dll"\r
+\r
+#define NETWORK_LIBRARY_INITIALIZE      "SnpInitialize"\r
+#define NETWORK_LIBRARY_FINALIZE        "SnpFinalize"\r
+#define NETWORK_LIBRARY_SET_RCV_FILTER  "SnpSetReceiveFilter"\r
+#define NETWORK_LIBRARY_RECEIVE         "SnpReceive"\r
+#define NETWORK_LIBRARY_TRANSMIT        "SnpTransmit"\r
+\r
+#pragma pack(1)\r
+typedef struct _NT_NET_INTERFACE_INFO {\r
+  UINT32          InterfaceIndex;\r
+  EFI_MAC_ADDRESS MacAddr;\r
+} NT_NET_INTERFACE_INFO;\r
+#pragma pack()\r
+\r
+#define NET_ETHER_HEADER_SIZE     14\r
+\r
+#define MAX_INTERFACE_INFO_NUMBER 16\r
+#define MAX_FILE_NAME_LENGTH      280\r
+\r
+#define SNP_MAX_TX_BUFFER_NUM         65536\r
+#define SNP_TX_BUFFER_INCREASEMENT    32\r
+\r
+\r
+\r
+\r
+//\r
+//  Functions in Net Library\r
+//\r
+typedef\r
+INT32\r
+(*NT_NET_INITIALIZE) (\r
+  IN OUT  UINT32                *InterfaceCount,\r
+  IN OUT  NT_NET_INTERFACE_INFO * InterfaceInfoBuffer\r
+  );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_FINALIZE) (\r
+  VOID\r
+  );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_SET_RECEIVE_FILTER) (\r
+  IN  UINT32                        Index,\r
+  IN  UINT32                        EnableFilter,\r
+  IN  UINT32                        MCastFilterCnt,\r
+  IN  EFI_MAC_ADDRESS               * MCastFilter\r
+  );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_RECEIVE) (\r
+  IN      UINT32                        Index,\r
+  IN OUT  UINT32                        *BufferSize,\r
+  OUT     VOID                          *Buffer\r
+  );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_TRANSMIT) (\r
+  IN  UINT32                        Index,\r
+  IN  UINT32                        HeaderSize,\r
+  IN  UINT32                        BufferSize,\r
+  IN  VOID                          *Buffer,\r
+  IN  EFI_MAC_ADDRESS               * SrcAddr,\r
+  IN  EFI_MAC_ADDRESS               * DestAddr,\r
+  IN  UINT16                        *Protocol\r
+  );\r
+\r
+typedef struct _NT_NET_UTILITY_TABLE {\r
+  NT_NET_INITIALIZE         Initialize;\r
+  NT_NET_FINALIZE           Finalize;\r
+  NT_NET_SET_RECEIVE_FILTER SetReceiveFilter;\r
+  NT_NET_RECEIVE            Receive;\r
+  NT_NET_TRANSMIT           Transmit;\r
+} NT_NET_UTILITY_TABLE;\r
+\r
+//\r
+//  Private functions\r
+//\r
+typedef\r
+EFI_STATUS\r
+(*SNPNT32_INITIALIZE_GLOBAL_DATA) (\r
+  IN SNPNT32_GLOBAL_DATA * This\r
+  );\r
+\r
+typedef\r
+EFI_STATUS\r
+(*SNPNT32_INITIALIZE_INSTANCE_DATA) (\r
+  IN SNPNT32_GLOBAL_DATA    * This,\r
+  IN SNPNT32_INSTANCE_DATA  * Instance\r
+  );\r
+\r
+typedef\r
+EFI_STATUS\r
+(*SNPNT32_CLOSE_INSTANCE) (\r
+  IN SNPNT32_GLOBAL_DATA    * This,\r
+  IN SNPNT32_INSTANCE_DATA  * Instance\r
+  );\r
+\r
+//\r
+//  Global data for this driver\r
+//\r
+#define SNP_NT32_DRIVER_SIGNATURE SIGNATURE_32 ('W', 'S', 'N', 'P')\r
+\r
+struct _SNPNT32_GLOBAL_DATA {\r
+  UINT32                            Signature;\r
+\r
+  //\r
+  //  List for all the fake SNP instance\r
+  //\r
+  LIST_ENTRY                        InstanceList;\r
+\r
+  EFI_WIN_NT_THUNK_PROTOCOL         *WinNtThunk;\r
+  HMODULE                           NetworkLibraryHandle;\r
+\r
+  NT_NET_UTILITY_TABLE              NtNetUtilityTable;\r
+\r
+  EFI_LOCK                          Lock;\r
+\r
+  //\r
+  //  Private functions\r
+  //\r
+  SNPNT32_INITIALIZE_GLOBAL_DATA    InitializeGlobalData;\r
+  SNPNT32_INITIALIZE_INSTANCE_DATA  InitializeInstanceData;\r
+  SNPNT32_CLOSE_INSTANCE            CloseInstance;\r
+};\r
+\r
+//\r
+//  Instance data for each fake SNP instance\r
+//\r
+#define SNP_NT32_INSTANCE_SIGNATURE SIGNATURE_32 ('w', 'S', 'N', 'P')\r
+\r
+struct _SNPNT32_INSTANCE_DATA {\r
+  UINT32                      Signature;\r
+\r
+  //\r
+  //  List entry use for linking with other instance\r
+  //\r
+  LIST_ENTRY                  Entry;\r
+\r
+  //\r
+  // Array of the recycled transmit buffer address.\r
+  //\r
+  UINT64                      *RecycledTxBuf;\r
+\r
+  //\r
+  // Current number of recycled buffer pointers in RecycledTxBuf.\r
+  //\r
+  UINT32                      RecycledTxBufCount;\r
+\r
+  //\r
+  // The maximum number of recycled buffer pointers in RecycledTxBuf.\r
+  //\r
+  UINT32                      MaxRecycledTxBuf;\r
+\r
+  SNPNT32_GLOBAL_DATA         *GlobalData;\r
+\r
+  EFI_HANDLE                  DeviceHandle;\r
+  EFI_DEVICE_PATH_PROTOCOL    *DevicePath;\r
+\r
+  EFI_SIMPLE_NETWORK_PROTOCOL Snp;\r
+  EFI_SIMPLE_NETWORK_MODE     Mode;\r
+\r
+  NT_NET_INTERFACE_INFO       InterfaceInfo;\r
+\r
+  //\r
+  //  Private functions\r
+  //\r
+};\r
+\r
+#define SNP_NT32_INSTANCE_DATA_FROM_SNP_THIS(a) \\r
+  CR ( \\r
+  a, \\r
+  SNPNT32_INSTANCE_DATA, \\r
+  Snp, \\r
+  SNP_NT32_INSTANCE_SIGNATURE \\r
+  )\r
+\r
+extern EFI_DRIVER_BINDING_PROTOCOL    gSnpNt32DriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL    gSnpNt32DriverComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL   gSnpNt32DriverComponentName2;\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  This                Protocol instance pointer.\r
+  @param  ControllerHandle    Handle of device to test\r
+  @param  RemainingDevicePath Optional parameter use to pick a specific child\r
+                              device to start.\r
+\r
+  @retval EFI_SUCCESS         This driver supports this device\r
+  @retval EFI_UNSUPPORTED     This driver does not support this device\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SnpNt32DriverBindingSupported (\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\r
+  drivers as small as possible, there are a few calling restrictions for\r
+  this service. ConnectController() must follow these\r
+  calling restrictions. If any other agent wishes to call Start() it\r
+  must also follow these calling restrictions.\r
+\r
+  @param  This                 Protocol instance pointer.\r
+  @param  ControllerHandle     Handle of device to bind driver to\r
+  @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
+                               device to start.\r
+\r
+  @retval EFI_SUCCESS          Always succeeds.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SnpNt32DriverBindingStart (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL  * This,\r
+  IN EFI_HANDLE                   ControllerHandle,\r
+  IN EFI_DEVICE_PATH_PROTOCOL     * RemainingDevicePath OPTIONAL\r
+  );\r
+\r
+/**\r
+  Stop this driver on ControllerHandle. This service is called by the\r
+  EFI boot service DisconnectController(). In order to\r
+  make drivers as small as possible, there are a few calling\r
+  restrictions for this service. DisconnectController()\r
+  must follow these calling restrictions. If any other agent wishes\r
+  to call Stop() it must also follow these calling restrictions.\r
+  \r
+  @param  This              Protocol instance pointer.\r
+  @param  ControllerHandle  Handle of device to stop driver on\r
+  @param  NumberOfChildren  Number of Handles in ChildHandleBuffer. If number of\r
+                            children is zero stop the entire bus driver.\r
+  @param  ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+  @retval EFI_SUCCESS       Always succeeds.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SnpNt32DriverBindingStop (\r
+  IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
+  IN  EFI_HANDLE                   ControllerHandle,\r
+  IN  UINTN                        NumberOfChildren,\r
+  IN  EFI_HANDLE                   *ChildHandleBuffer\r
+  );\r
+\r
+/**\r
+  Initialize the driver's global data.\r
+\r
+  @param  This                  Pointer to the global context data.\r
+\r
+  @retval EFI_SUCCESS           The global data is initialized.\r
+  @retval EFI_NOT_FOUND         The required DLL is not found.\r
+  @retval EFI_DEVICE_ERROR      Error initialize network utility library.\r
+  @retval EFI_OUT_OF_RESOURCES  Out of resource.\r
+  @retval other                 Other errors.\r
+\r
+**/\r
+EFI_STATUS\r
+SnpNt32InitializeGlobalData (\r
+  IN OUT SNPNT32_GLOBAL_DATA *This\r
+  );\r
+\r
+/**\r
+  Initialize the snpnt32 driver instance.\r
+\r
+  @param  This                  Pointer to the SnpNt32 global data.\r
+  @param  Instance              Pointer to the instance context data.\r
+\r
+  @retval EFI_SUCCESS           The driver instance is initialized.\r
+  @retval other                 Initialization errors.\r
+\r
+**/\r
+EFI_STATUS\r
+SnpNt32InitializeInstanceData (\r
+  IN SNPNT32_GLOBAL_DATA        *This,\r
+  IN OUT SNPNT32_INSTANCE_DATA  *Instance\r
+  );\r
+\r
+/**\r
+  Close the SnpNt32 driver instance.\r
+\r
+  @param  This                  Pointer to the SnpNt32 global data.\r
+  @param  Instance              Pointer to the instance context data.\r
+\r
+  @retval EFI_SUCCESS           The instance is closed.\r
+\r
+**/\r
+EFI_STATUS\r
+SnpNt32CloseInstance (\r
+  IN SNPNT32_GLOBAL_DATA        *This,\r
+  IN OUT SNPNT32_INSTANCE_DATA  *Instance\r
+  );\r
+\r
+#endif\r