0,0 → 1,340 |
#ifndef _EFINET_H |
#define _EFINET_H |
|
|
/*++ |
Copyright (c) 1999 Intel Corporation |
|
Module Name: |
efinet.h |
|
Abstract: |
EFI Simple Network protocol |
|
Revision History |
--*/ |
|
|
/////////////////////////////////////////////////////////////////////////////// |
// |
// Simple Network Protocol |
// |
|
#define EFI_SIMPLE_NETWORK_PROTOCOL \ |
{ 0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} } |
|
|
INTERFACE_DECL(_EFI_SIMPLE_NETWORK); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef struct { |
// |
// Total number of frames received. Includes frames with errors and |
// dropped frames. |
// |
UINT64 RxTotalFrames; |
|
// |
// Number of valid frames received and copied into receive buffers. |
// |
UINT64 RxGoodFrames; |
|
// |
// Number of frames below the minimum length for the media. |
// This would be <64 for ethernet. |
// |
UINT64 RxUndersizeFrames; |
|
// |
// Number of frames longer than the maxminum length for the |
// media. This would be >1500 for ethernet. |
// |
UINT64 RxOversizeFrames; |
|
// |
// Valid frames that were dropped because receive buffers were full. |
// |
UINT64 RxDroppedFrames; |
|
// |
// Number of valid unicast frames received and not dropped. |
// |
UINT64 RxUnicastFrames; |
|
// |
// Number of valid broadcast frames received and not dropped. |
// |
UINT64 RxBroadcastFrames; |
|
// |
// Number of valid mutlicast frames received and not dropped. |
// |
UINT64 RxMulticastFrames; |
|
// |
// Number of frames w/ CRC or alignment errors. |
// |
UINT64 RxCrcErrorFrames; |
|
// |
// Total number of bytes received. Includes frames with errors |
// and dropped frames. |
// |
UINT64 RxTotalBytes; |
|
// |
// Transmit statistics. |
// |
UINT64 TxTotalFrames; |
UINT64 TxGoodFrames; |
UINT64 TxUndersizeFrames; |
UINT64 TxOversizeFrames; |
UINT64 TxDroppedFrames; |
UINT64 TxUnicastFrames; |
UINT64 TxBroadcastFrames; |
UINT64 TxMulticastFrames; |
UINT64 TxCrcErrorFrames; |
UINT64 TxTotalBytes; |
|
// |
// Number of collisions detection on this subnet. |
// |
UINT64 Collisions; |
|
// |
// Number of frames destined for unsupported protocol. |
// |
UINT64 UnsupportedProtocol; |
|
} EFI_NETWORK_STATISTICS; |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef enum { |
EfiSimpleNetworkStopped, |
EfiSimpleNetworkStarted, |
EfiSimpleNetworkInitialized, |
EfiSimpleNetworkMaxState |
} EFI_SIMPLE_NETWORK_STATE; |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
#define EFI_SIMPLE_NETWORK_RECEIVE_UNICAST 0x01 |
#define EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST 0x02 |
#define EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST 0x04 |
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08 |
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10 |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01 |
#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02 |
#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04 |
#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08 |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
#define MAX_MCAST_FILTER_CNT 16 |
typedef struct { |
UINT32 State; |
UINT32 HwAddressSize; |
UINT32 MediaHeaderSize; |
UINT32 MaxPacketSize; |
UINT32 NvRamSize; |
UINT32 NvRamAccessSize; |
UINT32 ReceiveFilterMask; |
UINT32 ReceiveFilterSetting; |
UINT32 MaxMCastFilterCount; |
UINT32 MCastFilterCount; |
EFI_MAC_ADDRESS MCastFilter[MAX_MCAST_FILTER_CNT]; |
EFI_MAC_ADDRESS CurrentAddress; |
EFI_MAC_ADDRESS BroadcastAddress; |
EFI_MAC_ADDRESS PermanentAddress; |
UINT8 IfType; |
BOOLEAN MacAddressChangeable; |
BOOLEAN MultipleTxSupported; |
BOOLEAN MediaPresentSupported; |
BOOLEAN MediaPresent; |
} EFI_SIMPLE_NETWORK_MODE; |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_START) ( |
IN struct _EFI_SIMPLE_NETWORK *This |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_STOP) ( |
IN struct _EFI_SIMPLE_NETWORK *This |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN UINTN ExtraRxBufferSize OPTIONAL, |
IN UINTN ExtraTxBufferSize OPTIONAL |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_RESET) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN ExtendedVerification |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) ( |
IN struct _EFI_SIMPLE_NETWORK *This |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN UINT32 Enable, |
IN UINT32 Disable, |
IN BOOLEAN ResetMCastFilter, |
IN UINTN MCastFilterCnt OPTIONAL, |
IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_STATION_ADDRESS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN Reset, |
IN EFI_MAC_ADDRESS *New OPTIONAL |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN Reset, |
IN OUT UINTN *StatisticsSize OPTIONAL, |
OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN IPv6, |
IN EFI_IP_ADDRESS *IP, |
OUT EFI_MAC_ADDRESS *MAC |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_NVDATA) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN BOOLEAN ReadWrite, |
IN UINTN Offset, |
IN UINTN BufferSize, |
IN OUT VOID *Buffer |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_GET_STATUS) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
OUT UINT32 *InterruptStatus OPTIONAL, |
OUT VOID **TxBuf OPTIONAL |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
IN UINTN HeaderSize, |
IN UINTN BufferSize, |
IN VOID *Buffer, |
IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, |
IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, |
IN UINT16 *Protocol OPTIONAL |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
typedef |
EFI_STATUS |
(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE) ( |
IN struct _EFI_SIMPLE_NETWORK *This, |
OUT UINTN *HeaderSize OPTIONAL, |
IN OUT UINTN *BufferSize, |
OUT VOID *Buffer, |
OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, |
OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, |
OUT UINT16 *Protocol OPTIONAL |
); |
|
/////////////////////////////////////////////////////////////////////////////// |
// |
|
#define EFI_SIMPLE_NETWORK_INTERFACE_REVISION 0x00010000 |
|
typedef struct _EFI_SIMPLE_NETWORK { |
UINT64 Revision; |
EFI_SIMPLE_NETWORK_START Start; |
EFI_SIMPLE_NETWORK_STOP Stop; |
EFI_SIMPLE_NETWORK_INITIALIZE Initialize; |
EFI_SIMPLE_NETWORK_RESET Reset; |
EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown; |
EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters; |
EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress; |
EFI_SIMPLE_NETWORK_STATISTICS Statistics; |
EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac; |
EFI_SIMPLE_NETWORK_NVDATA NvData; |
EFI_SIMPLE_NETWORK_GET_STATUS GetStatus; |
EFI_SIMPLE_NETWORK_TRANSMIT Transmit; |
EFI_SIMPLE_NETWORK_RECEIVE Receive; |
EFI_EVENT WaitForPacket; |
EFI_SIMPLE_NETWORK_MODE *Mode; |
} EFI_SIMPLE_NETWORK; |
|
#endif /* _EFINET_H */ |