|
|
#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 */
|