SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
+\r
#ifndef _SNP_H_\r
#define _SNP_H_\r
\r
-\r
#include <Uefi.h>\r
\r
#include <Protocol/SimpleNetwork.h>\r
\r
#define FOUR_GIGABYTES (UINT64) 0x100000000ULL\r
\r
-\r
#define SNP_DRIVER_SIGNATURE SIGNATURE_32 ('s', 'n', 'd', 's')\r
#define MAX_MAP_LENGTH 100\r
\r
-#define PCI_BAR_IO_MASK 0x00000003\r
-#define PCI_BAR_IO_MODE 0x00000001\r
+#define PCI_BAR_IO_MASK 0x00000003\r
+#define PCI_BAR_IO_MODE 0x00000001\r
\r
-#define PCI_BAR_MEM_MASK 0x0000000F\r
-#define PCI_BAR_MEM_MODE 0x00000000\r
-#define PCI_BAR_MEM_64BIT 0x00000004\r
+#define PCI_BAR_MEM_MASK 0x0000000F\r
+#define PCI_BAR_MEM_MODE 0x00000000\r
+#define PCI_BAR_MEM_64BIT 0x00000004\r
\r
-#define SNP_TX_BUFFER_INCREASEMENT MAX_XMIT_BUFFERS\r
-#define SNP_MAX_TX_BUFFER_NUM 65536\r
+#define SNP_TX_BUFFER_INCREASEMENT MAX_XMIT_BUFFERS\r
+#define SNP_MAX_TX_BUFFER_NUM 65536\r
\r
typedef\r
EFI_STATUS\r
-(EFIAPI *ISSUE_UNDI32_COMMAND) (\r
+(EFIAPI *ISSUE_UNDI32_COMMAND)(\r
UINT64 Cdb\r
);\r
\r
typedef struct {\r
- UINT32 Signature;\r
- EFI_LOCK Lock;\r
+ UINT32 Signature;\r
+ EFI_LOCK Lock;\r
\r
- EFI_SIMPLE_NETWORK_PROTOCOL Snp;\r
- EFI_SIMPLE_NETWORK_MODE Mode;\r
+ EFI_SIMPLE_NETWORK_PROTOCOL Snp;\r
+ EFI_SIMPLE_NETWORK_MODE Mode;\r
\r
- EFI_HANDLE DeviceHandle;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_HANDLE DeviceHandle;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
\r
//\r
// Local instance data needed by SNP driver\r
// Pointer to S/W UNDI API entry point\r
// This will be NULL for H/W UNDI\r
//\r
- ISSUE_UNDI32_COMMAND IssueUndi32Command;\r
+ ISSUE_UNDI32_COMMAND IssueUndi32Command;\r
\r
- BOOLEAN IsSwUndi;\r
+ BOOLEAN IsSwUndi;\r
\r
//\r
// undi interface number, if one undi manages more nics\r
//\r
- PXE_IFNUM IfNum;\r
+ PXE_IFNUM IfNum;\r
\r
//\r
// Allocated tx/rx buffer that was passed to UNDI Initialize.\r
//\r
- UINT32 TxRxBufferSize;\r
- VOID *TxRxBuffer;\r
+ UINT32 TxRxBufferSize;\r
+ VOID *TxRxBuffer;\r
//\r
// mappable buffers for receive and fill header for undi3.0\r
// these will be used if the user buffers are above 4GB limit (instead of\r
// mapping the user buffers)\r
//\r
- UINT8 *ReceiveBufffer;\r
- VOID *ReceiveBufferUnmap;\r
- UINT8 *FillHeaderBuffer;\r
- VOID *FillHeaderBufferUnmap;\r
+ UINT8 *ReceiveBufffer;\r
+ VOID *ReceiveBufferUnmap;\r
+ UINT8 *FillHeaderBuffer;\r
+ VOID *FillHeaderBufferUnmap;\r
\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
- UINT8 IoBarIndex;\r
- UINT8 MemoryBarIndex;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+ UINT8 IoBarIndex;\r
+ UINT8 MemoryBarIndex;\r
\r
//\r
// Buffers for command descriptor block, command parameter block\r
// and data block.\r
//\r
- PXE_CDB Cdb;\r
- VOID *Cpb;\r
- VOID *CpbUnmap;\r
- VOID *Db;\r
+ PXE_CDB Cdb;\r
+ VOID *Cpb;\r
+ VOID *CpbUnmap;\r
+ VOID *Db;\r
\r
//\r
// UNDI structure, we need to remember the init info for a long time!\r
//\r
- PXE_DB_GET_INIT_INFO InitInfo;\r
+ PXE_DB_GET_INIT_INFO InitInfo;\r
\r
- VOID *SnpDriverUnmap;\r
+ VOID *SnpDriverUnmap;\r
//\r
// when ever we map an address, we must remember it's address and the un-map\r
// cookie so that we can unmap later\r
//\r
struct MAP_LIST {\r
- EFI_PHYSICAL_ADDRESS VirtualAddress;\r
- VOID *MapCookie;\r
+ EFI_PHYSICAL_ADDRESS VirtualAddress;\r
+ VOID *MapCookie;\r
} MapList[MAX_MAP_LENGTH];\r
\r
- EFI_EVENT ExitBootServicesEvent;\r
+ EFI_EVENT ExitBootServicesEvent;\r
\r
//\r
// Whether UNDI support reporting media status from GET_STATUS command,\r
// i.e. PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED or\r
// PXE_STATFLAGS_GET_STATUS_NO_MEDIA_NOT_SUPPORTED\r
//\r
- BOOLEAN MediaStatusSupported;\r
+ BOOLEAN MediaStatusSupported;\r
\r
//\r
// Whether UNDI support cable detect for INITIALIZE command,\r
// i.e. PXE_STATFLAGS_CABLE_DETECT_SUPPORTED or\r
// PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED\r
//\r
- BOOLEAN CableDetectSupported;\r
+ BOOLEAN CableDetectSupported;\r
\r
//\r
// Array of the recycled transmit buffer address from UNDI.\r
//\r
- UINT64 *RecycledTxBuf;\r
+ UINT64 *RecycledTxBuf;\r
//\r
// The maximum number of recycled buffer pointers in RecycledTxBuf.\r
//\r
- UINT32 MaxRecycledTxBuf;\r
+ UINT32 MaxRecycledTxBuf;\r
//\r
// Current number of recycled buffer pointers in RecycledTxBuf.\r
//\r
- UINT32 RecycledTxBufCount;\r
+ UINT32 RecycledTxBufCount;\r
} SNP_DRIVER;\r
\r
-#define EFI_SIMPLE_NETWORK_DEV_FROM_THIS(a) CR (a, SNP_DRIVER, Snp, SNP_DRIVER_SIGNATURE)\r
+#define EFI_SIMPLE_NETWORK_DEV_FROM_THIS(a) CR (a, SNP_DRIVER, Snp, SNP_DRIVER_SIGNATURE)\r
\r
//\r
// Global Variables\r
//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gSimpleNetworkComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gSimpleNetworkComponentName2;\r
+extern EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gSimpleNetworkComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gSimpleNetworkComponentName2;\r
\r
/**\r
this routine calls undi to start the interface and changes the snp state.\r
**/\r
EFI_STATUS\r
PxeStart (\r
- IN SNP_DRIVER *Snp\r
+ IN SNP_DRIVER *Snp\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
PxeStop (\r
- SNP_DRIVER *Snp\r
+ SNP_DRIVER *Snp\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
PxeInit (\r
- SNP_DRIVER *Snp,\r
- UINT16 CableDetectFlag\r
+ SNP_DRIVER *Snp,\r
+ UINT16 CableDetectFlag\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
PxeShutdown (\r
- IN SNP_DRIVER *Snp\r
+ IN SNP_DRIVER *Snp\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
PxeGetStnAddr (\r
- SNP_DRIVER *Snp\r
+ SNP_DRIVER *Snp\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
PxeGetStatus (\r
- IN SNP_DRIVER *Snp,\r
- OUT UINT32 *InterruptStatusPtr,\r
- IN BOOLEAN GetTransmittedBuf\r
+ IN SNP_DRIVER *Snp,\r
+ OUT UINT32 *InterruptStatusPtr,\r
+ IN BOOLEAN GetTransmittedBuf\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SnpUndi32CallbackBlock (\r
- IN UINT64 UniqueId,\r
- IN UINT32 Enable\r
+ IN UINT64 UniqueId,\r
+ IN UINT32 Enable\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SnpUndi32CallbackDelay (\r
- IN UINT64 UniqueId,\r
- IN UINT64 MicroSeconds\r
+ IN UINT64 UniqueId,\r
+ IN UINT64 MicroSeconds\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SnpUndi32CallbackMemio (\r
- IN UINT64 UniqueId,\r
- IN UINT8 ReadOrWrite,\r
- IN UINT8 NumBytes,\r
- IN UINT64 MemOrPortAddr,\r
- IN OUT UINT64 BufferPtr\r
+ IN UINT64 UniqueId,\r
+ IN UINT8 ReadOrWrite,\r
+ IN UINT8 NumBytes,\r
+ IN UINT64 MemOrPortAddr,\r
+ IN OUT UINT64 BufferPtr\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SnpUndi32CallbackMap (\r
- IN UINT64 UniqueId,\r
- IN UINT64 CpuAddr,\r
- IN UINT32 NumBytes,\r
- IN UINT32 Direction,\r
- IN OUT UINT64 DeviceAddrPtr\r
+ IN UINT64 UniqueId,\r
+ IN UINT64 CpuAddr,\r
+ IN UINT32 NumBytes,\r
+ IN UINT32 Direction,\r
+ IN OUT UINT64 DeviceAddrPtr\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SnpUndi32CallbackUnmap (\r
- IN UINT64 UniqueId,\r
- IN UINT64 CpuAddr,\r
- IN UINT32 NumBytes,\r
- IN UINT32 Direction,\r
- IN UINT64 DeviceAddr\r
+ IN UINT64 UniqueId,\r
+ IN UINT64 CpuAddr,\r
+ IN UINT32 NumBytes,\r
+ IN UINT32 Direction,\r
+ IN UINT64 DeviceAddr\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SnpUndi32CallbackSync (\r
- IN UINT64 UniqueId,\r
- IN UINT64 CpuAddr,\r
- IN UINT32 NumBytes,\r
- IN UINT32 Direction,\r
- IN UINT64 DeviceAddr\r
+ IN UINT64 UniqueId,\r
+ IN UINT64 CpuAddr,\r
+ IN UINT32 NumBytes,\r
+ IN UINT32 Direction,\r
+ IN UINT64 DeviceAddr\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32Start (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32Stop (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32Initialize (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- IN UINTN ExtraRxBufferSize OPTIONAL,\r
- IN UINTN ExtraTxBufferSize OPTIONAL\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ IN UINTN ExtraRxBufferSize OPTIONAL,\r
+ IN UINTN ExtraTxBufferSize OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32Shutdown (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32ReceiveFilters (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- IN UINT32 Enable,\r
- IN UINT32 Disable,\r
- IN BOOLEAN ResetMCastFilter,\r
- IN UINTN MCastFilterCnt OPTIONAL,\r
- IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ IN UINT32 Enable,\r
+ IN UINT32 Disable,\r
+ IN BOOLEAN ResetMCastFilter,\r
+ IN UINTN MCastFilterCnt OPTIONAL,\r
+ IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32StationAddress (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- IN BOOLEAN Reset,\r
- IN EFI_MAC_ADDRESS *New OPTIONAL\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ IN BOOLEAN Reset,\r
+ IN EFI_MAC_ADDRESS *New OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32Statistics (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- IN BOOLEAN Reset,\r
- IN OUT UINTN *StatisticsSize OPTIONAL,\r
- IN OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ IN BOOLEAN Reset,\r
+ IN OUT UINTN *StatisticsSize OPTIONAL,\r
+ IN OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32McastIpToMac (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- IN BOOLEAN IPv6,\r
- IN EFI_IP_ADDRESS *IP,\r
- OUT EFI_MAC_ADDRESS *MAC\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ IN BOOLEAN IPv6,\r
+ IN EFI_IP_ADDRESS *IP,\r
+ OUT EFI_MAC_ADDRESS *MAC\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32NvData (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- IN BOOLEAN ReadWrite,\r
- IN UINTN Offset,\r
- IN UINTN BufferSize,\r
- IN OUT VOID *Buffer\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ IN BOOLEAN ReadWrite,\r
+ IN UINTN Offset,\r
+ IN UINTN BufferSize,\r
+ IN OUT VOID *Buffer\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32GetStatus (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- OUT UINT32 *InterruptStatus OPTIONAL,\r
- OUT VOID **TxBuf OPTIONAL\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ OUT UINT32 *InterruptStatus OPTIONAL,\r
+ OUT VOID **TxBuf OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32Transmit (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- IN UINTN HeaderSize,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer,\r
- IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
- IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
- IN UINT16 *Protocol OPTIONAL\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ IN UINTN HeaderSize,\r
+ IN UINTN BufferSize,\r
+ IN VOID *Buffer,\r
+ IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
+ IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
+ IN UINT16 *Protocol OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SnpUndi32Receive (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
- OUT UINTN *HeaderSize OPTIONAL,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer,\r
- OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
- OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
- OUT UINT16 *Protocol OPTIONAL\r
+ IN EFI_SIMPLE_NETWORK_PROTOCOL *This,\r
+ OUT UINTN *HeaderSize OPTIONAL,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer,\r
+ OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,\r
+ OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,\r
+ OUT UINT16 *Protocol OPTIONAL\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
SnpWaitForPacketNotify (\r
- EFI_EVENT Event,\r
- VOID *SnpPtr\r
+ EFI_EVENT Event,\r
+ VOID *SnpPtr\r
);\r
\r
#define SNP_MEM_PAGES(x) (((x) - 1) / 4096 + 1)\r
\r
-\r
#endif /* _SNP_H_ */\r