+++ /dev/null
-/** @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>\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>\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