123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- #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_GUID \
- { 0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
- INTERFACE_DECL(_EFI_SIMPLE_NETWORK_PROTOCOL);
- ///////////////////////////////////////////////////////////////////////////////
- //
- 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_PROTOCOL *This
- );
- ///////////////////////////////////////////////////////////////////////////////
- //
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SIMPLE_NETWORK_STOP) (
- IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This
- );
- ///////////////////////////////////////////////////////////////////////////////
- //
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) (
- IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This,
- IN UINTN ExtraRxBufferSize OPTIONAL,
- IN UINTN ExtraTxBufferSize OPTIONAL
- );
- ///////////////////////////////////////////////////////////////////////////////
- //
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SIMPLE_NETWORK_RESET) (
- IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This,
- IN BOOLEAN ExtendedVerification
- );
- ///////////////////////////////////////////////////////////////////////////////
- //
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) (
- IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *This
- );
- ///////////////////////////////////////////////////////////////////////////////
- //
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) (
- IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *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_PROTOCOL *This,
- IN BOOLEAN Reset,
- IN EFI_MAC_ADDRESS *New OPTIONAL
- );
- ///////////////////////////////////////////////////////////////////////////////
- //
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) (
- IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *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_PROTOCOL *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_PROTOCOL *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_PROTOCOL *This,
- OUT UINT32 *InterruptStatus OPTIONAL,
- OUT VOID **TxBuf OPTIONAL
- );
- ///////////////////////////////////////////////////////////////////////////////
- //
- typedef
- EFI_STATUS
- (EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) (
- IN struct _EFI_SIMPLE_NETWORK_PROTOCOL *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_PROTOCOL *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_PROTOCOL_REVISION 0x00010000
- #define EFI_SIMPLE_NETWORK_INTERFACE_REVISION EFI_SIMPLE_NETWORK_PROTOCOL_REVISION
- typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL {
- 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_PROTOCOL;
- // Note: Because it conflicted with the EDK2 struct name, the
- // 'EFI_SIMPLE_NETWORK_PROTOCOL' GUID definition, from older
- // versions of gnu-efi, is now obsoleted.
- // Use 'EFI_SIMPLE_NETWORK_PROTOCOL_GUID' instead.
- typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL _EFI_SIMPLE_NETWORK;
- typedef EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK;
- #endif /* _EFINET_H */
|