efinet.h revision 96893
1/* $FreeBSD: head/sys/boot/efi/include/efinet.h 96893 2002-05-19 03:17:22Z marcel $ */ 2#ifndef _EFINET_H 3#define _EFINET_H 4 5 6/*++ 7Copyright (c) 1999 Intel Corporation 8 9Module Name: 10 efinet.h 11 12Abstract: 13 EFI Simple Network protocol 14 15Revision History 16--*/ 17 18 19#define EFI_SIMPLE_NETWORK_PROTOCOL \ 20 { 0xA19832B9, 0xAC25, 0x11D3, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } 21 22INTERFACE_DECL(_EFI_SIMPLE_NETWORK); 23 24typedef struct { 25 /* 26 * Total number of frames received. Includes frames with errors and 27 * dropped frames. 28 */ 29 UINT64 RxTotalFrames; 30 31 /* Number of valid frames received and copied into receive buffers. */ 32 UINT64 RxGoodFrames; 33 34 /* 35 * Number of frames below the minimum length for the media. 36 * This would be <64 for ethernet. 37 */ 38 UINT64 RxUndersizeFrames; 39 40 /* 41 * Number of frames longer than the maxminum length for the 42 * media. This would be >1500 for ethernet. 43 */ 44 UINT64 RxOversizeFrames; 45 46 /* Valid frames that were dropped because receive buffers were full. */ 47 UINT64 RxDroppedFrames; 48 49 /* Number of valid unicast frames received and not dropped. */ 50 UINT64 RxUnicastFrames; 51 52 /* Number of valid broadcast frames received and not dropped. */ 53 UINT64 RxBroadcastFrames; 54 55 /* Number of valid mutlicast frames received and not dropped. */ 56 UINT64 RxMulticastFrames; 57 58 /* Number of frames w/ CRC or alignment errors. */ 59 UINT64 RxCrcErrorFrames; 60 61 /* 62 * Total number of bytes received. Includes frames with errors 63 * and dropped frames. 64 */ 65 UINT64 RxTotalBytes; 66 67 /* Transmit statistics. */ 68 UINT64 TxTotalFrames; 69 UINT64 TxGoodFrames; 70 UINT64 TxUndersizeFrames; 71 UINT64 TxOversizeFrames; 72 UINT64 TxDroppedFrames; 73 UINT64 TxUnicastFrames; 74 UINT64 TxBroadcastFrames; 75 UINT64 TxMulticastFrames; 76 UINT64 TxCrcErrorFrames; 77 UINT64 TxTotalBytes; 78 79 /* Number of collisions detection on this subnet. */ 80 UINT64 Collisions; 81 82 /* Number of frames destined for unsupported protocol. */ 83 UINT64 UnsupportedProtocol; 84 85} EFI_NETWORK_STATISTICS; 86 87typedef enum { 88 EfiSimpleNetworkStopped, 89 EfiSimpleNetworkStarted, 90 EfiSimpleNetworkInitialized, 91 EfiSimpleNetworkMaxState 92} EFI_SIMPLE_NETWORK_STATE; 93 94#define EFI_SIMPLE_NETWORK_RECEIVE_UNICAST 0x01 95#define EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST 0x02 96#define EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST 0x04 97#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08 98#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10 99 100#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01 101#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02 102#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04 103#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08 104 105#define MAX_MCAST_FILTER_CNT 16 106typedef struct { 107 UINT32 State; 108 UINT32 HwAddressSize; 109 UINT32 MediaHeaderSize; 110 UINT32 MaxPacketSize; 111 UINT32 NvRamSize; 112 UINT32 NvRamAccessSize; 113 UINT32 ReceiveFilterMask; 114 UINT32 ReceiveFilterSetting; 115 UINT32 MaxMCastFilterCount; 116 UINT32 MCastFilterCount; 117 EFI_MAC_ADDRESS MCastFilter[MAX_MCAST_FILTER_CNT]; 118 EFI_MAC_ADDRESS CurrentAddress; 119 EFI_MAC_ADDRESS BroadcastAddress; 120 EFI_MAC_ADDRESS PermanentAddress; 121 UINT8 IfType; 122 BOOLEAN MacAddressChangeable; 123 BOOLEAN MultipleTxSupported; 124 BOOLEAN MediaPresentSupported; 125 BOOLEAN MediaPresent; 126} EFI_SIMPLE_NETWORK_MODE; 127 128typedef 129EFI_STATUS 130(EFIAPI *EFI_SIMPLE_NETWORK_START) ( 131 IN struct _EFI_SIMPLE_NETWORK *This 132); 133 134typedef 135EFI_STATUS 136(EFIAPI *EFI_SIMPLE_NETWORK_STOP) ( 137 IN struct _EFI_SIMPLE_NETWORK *This 138); 139 140typedef 141EFI_STATUS 142(EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) ( 143 IN struct _EFI_SIMPLE_NETWORK *This, 144 IN UINTN ExtraRxBufferSize OPTIONAL, 145 IN UINTN ExtraTxBufferSize OPTIONAL 146); 147 148typedef 149EFI_STATUS 150(EFIAPI *EFI_SIMPLE_NETWORK_RESET) ( 151 IN struct _EFI_SIMPLE_NETWORK *This, 152 IN BOOLEAN ExtendedVerification 153); 154 155typedef 156EFI_STATUS 157(EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) ( 158 IN struct _EFI_SIMPLE_NETWORK *This 159); 160 161typedef 162EFI_STATUS 163(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) ( 164 IN struct _EFI_SIMPLE_NETWORK *This, 165 IN UINT32 Enable, 166 IN UINT32 Disable, 167 IN BOOLEAN ResetMCastFilter, 168 IN UINTN MCastFilterCnt OPTIONAL, 169 IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL 170); 171 172typedef 173EFI_STATUS 174(EFIAPI *EFI_SIMPLE_NETWORK_STATION_ADDRESS) ( 175 IN struct _EFI_SIMPLE_NETWORK *This, 176 IN BOOLEAN Reset, 177 IN EFI_MAC_ADDRESS *New OPTIONAL 178); 179 180typedef 181EFI_STATUS 182(EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) ( 183 IN struct _EFI_SIMPLE_NETWORK *This, 184 IN BOOLEAN Reset, 185 IN OUT UINTN *StatisticsSize OPTIONAL, 186 OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL 187); 188 189typedef 190EFI_STATUS 191(EFIAPI *EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC) ( 192 IN struct _EFI_SIMPLE_NETWORK *This, 193 IN BOOLEAN IPv6, 194 IN EFI_IP_ADDRESS *IP, 195 OUT EFI_MAC_ADDRESS *MAC 196); 197 198typedef 199EFI_STATUS 200(EFIAPI *EFI_SIMPLE_NETWORK_NVDATA) ( 201 IN struct _EFI_SIMPLE_NETWORK *This, 202 IN BOOLEAN ReadWrite, 203 IN UINTN Offset, 204 IN UINTN BufferSize, 205 IN OUT VOID *Buffer 206); 207 208typedef 209EFI_STATUS 210(EFIAPI *EFI_SIMPLE_NETWORK_GET_STATUS) ( 211 IN struct _EFI_SIMPLE_NETWORK *This, 212 OUT UINT32 *InterruptStatus OPTIONAL, 213 OUT VOID **TxBuf OPTIONAL 214); 215 216typedef 217EFI_STATUS 218(EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) ( 219 IN struct _EFI_SIMPLE_NETWORK *This, 220 IN UINTN HeaderSize, 221 IN UINTN BufferSize, 222 IN VOID *Buffer, 223 IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, 224 IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, 225 IN UINT16 *Protocol OPTIONAL 226); 227 228typedef 229EFI_STATUS 230(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE) ( 231 IN struct _EFI_SIMPLE_NETWORK *This, 232 OUT UINTN *HeaderSize OPTIONAL, 233 IN OUT UINTN *BufferSize, 234 OUT VOID *Buffer, 235 OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, 236 OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, 237 OUT UINT16 *Protocol OPTIONAL 238); 239 240#define EFI_SIMPLE_NETWORK_INTERFACE_REVISION 0x00010000 241 242typedef struct _EFI_SIMPLE_NETWORK { 243 UINT64 Revision; 244 EFI_SIMPLE_NETWORK_START Start; 245 EFI_SIMPLE_NETWORK_STOP Stop; 246 EFI_SIMPLE_NETWORK_INITIALIZE Initialize; 247 EFI_SIMPLE_NETWORK_RESET Reset; 248 EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown; 249 EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters; 250 EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress; 251 EFI_SIMPLE_NETWORK_STATISTICS Statistics; 252 EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac; 253 EFI_SIMPLE_NETWORK_NVDATA NvData; 254 EFI_SIMPLE_NETWORK_GET_STATUS GetStatus; 255 EFI_SIMPLE_NETWORK_TRANSMIT Transmit; 256 EFI_SIMPLE_NETWORK_RECEIVE Receive; 257 EFI_EVENT WaitForPacket; 258 EFI_SIMPLE_NETWORK_MODE *Mode; 259} EFI_SIMPLE_NETWORK; 260 261#endif /* _EFINET_H */ 262