6 Copyright (c) 1999 Intel Corporation
12 EFI Simple Network protocol
18 ///////////////////////////////////////////////////////////////////////////////
20 // Simple Network Protocol
23 #define EFI_SIMPLE_NETWORK_PROTOCOL_GUID \
24 { 0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
26 INTERFACE_DECL(_EFI_SIMPLE_NETWORK_PROTOCOL
);
28 ///////////////////////////////////////////////////////////////////////////////
33 // Total number of frames received. Includes frames with errors and
39 // Number of valid frames received and copied into receive buffers.
44 // Number of frames below the minimum length for the media.
45 // This would be <64 for ethernet.
47 UINT64 RxUndersizeFrames
;
50 // Number of frames longer than the maxminum length for the
51 // media. This would be >1500 for ethernet.
53 UINT64 RxOversizeFrames
;
56 // Valid frames that were dropped because receive buffers were full.
58 UINT64 RxDroppedFrames
;
61 // Number of valid unicast frames received and not dropped.
63 UINT64 RxUnicastFrames
;
66 // Number of valid broadcast frames received and not dropped.
68 UINT64 RxBroadcastFrames
;
71 // Number of valid mutlicast frames received and not dropped.
73 UINT64 RxMulticastFrames
;
76 // Number of frames w/ CRC or alignment errors.
78 UINT64 RxCrcErrorFrames
;
81 // Total number of bytes received. Includes frames with errors
82 // and dropped frames.
87 // Transmit statistics.
91 UINT64 TxUndersizeFrames
;
92 UINT64 TxOversizeFrames
;
93 UINT64 TxDroppedFrames
;
94 UINT64 TxUnicastFrames
;
95 UINT64 TxBroadcastFrames
;
96 UINT64 TxMulticastFrames
;
97 UINT64 TxCrcErrorFrames
;
101 // Number of collisions detection on this subnet.
106 // Number of frames destined for unsupported protocol.
108 UINT64 UnsupportedProtocol
;
110 } EFI_NETWORK_STATISTICS
;
112 ///////////////////////////////////////////////////////////////////////////////
116 EfiSimpleNetworkStopped
,
117 EfiSimpleNetworkStarted
,
118 EfiSimpleNetworkInitialized
,
119 EfiSimpleNetworkMaxState
120 } EFI_SIMPLE_NETWORK_STATE
;
122 ///////////////////////////////////////////////////////////////////////////////
125 #define EFI_SIMPLE_NETWORK_RECEIVE_UNICAST 0x01
126 #define EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST 0x02
127 #define EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST 0x04
128 #define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08
129 #define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10
131 ///////////////////////////////////////////////////////////////////////////////
134 #define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01
135 #define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02
136 #define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04
137 #define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08
139 ///////////////////////////////////////////////////////////////////////////////
141 #define MAX_MCAST_FILTER_CNT 16
144 UINT32 HwAddressSize
;
145 UINT32 MediaHeaderSize
;
146 UINT32 MaxPacketSize
;
148 UINT32 NvRamAccessSize
;
149 UINT32 ReceiveFilterMask
;
150 UINT32 ReceiveFilterSetting
;
151 UINT32 MaxMCastFilterCount
;
152 UINT32 MCastFilterCount
;
153 EFI_MAC_ADDRESS MCastFilter
[MAX_MCAST_FILTER_CNT
];
154 EFI_MAC_ADDRESS CurrentAddress
;
155 EFI_MAC_ADDRESS BroadcastAddress
;
156 EFI_MAC_ADDRESS PermanentAddress
;
158 BOOLEAN MacAddressChangeable
;
159 BOOLEAN MultipleTxSupported
;
160 BOOLEAN MediaPresentSupported
;
161 BOOLEAN MediaPresent
;
162 } EFI_SIMPLE_NETWORK_MODE
;
164 ///////////////////////////////////////////////////////////////////////////////
169 (EFIAPI
*EFI_SIMPLE_NETWORK_START
) (
170 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
173 ///////////////////////////////////////////////////////////////////////////////
178 (EFIAPI
*EFI_SIMPLE_NETWORK_STOP
) (
179 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
182 ///////////////////////////////////////////////////////////////////////////////
187 (EFIAPI
*EFI_SIMPLE_NETWORK_INITIALIZE
) (
188 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
189 IN UINTN ExtraRxBufferSize OPTIONAL
,
190 IN UINTN ExtraTxBufferSize OPTIONAL
193 ///////////////////////////////////////////////////////////////////////////////
198 (EFIAPI
*EFI_SIMPLE_NETWORK_RESET
) (
199 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
200 IN BOOLEAN ExtendedVerification
203 ///////////////////////////////////////////////////////////////////////////////
208 (EFIAPI
*EFI_SIMPLE_NETWORK_SHUTDOWN
) (
209 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
212 ///////////////////////////////////////////////////////////////////////////////
217 (EFIAPI
*EFI_SIMPLE_NETWORK_RECEIVE_FILTERS
) (
218 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
221 IN BOOLEAN ResetMCastFilter
,
222 IN UINTN MCastFilterCnt OPTIONAL
,
223 IN EFI_MAC_ADDRESS
*MCastFilter OPTIONAL
226 ///////////////////////////////////////////////////////////////////////////////
231 (EFIAPI
*EFI_SIMPLE_NETWORK_STATION_ADDRESS
) (
232 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
234 IN EFI_MAC_ADDRESS
*New OPTIONAL
237 ///////////////////////////////////////////////////////////////////////////////
242 (EFIAPI
*EFI_SIMPLE_NETWORK_STATISTICS
) (
243 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
245 IN OUT UINTN
*StatisticsSize OPTIONAL
,
246 OUT EFI_NETWORK_STATISTICS
*StatisticsTable OPTIONAL
249 ///////////////////////////////////////////////////////////////////////////////
254 (EFIAPI
*EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC
) (
255 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
257 IN EFI_IP_ADDRESS
*IP
,
258 OUT EFI_MAC_ADDRESS
*MAC
261 ///////////////////////////////////////////////////////////////////////////////
266 (EFIAPI
*EFI_SIMPLE_NETWORK_NVDATA
) (
267 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
268 IN BOOLEAN ReadWrite
,
274 ///////////////////////////////////////////////////////////////////////////////
279 (EFIAPI
*EFI_SIMPLE_NETWORK_GET_STATUS
) (
280 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
281 OUT UINT32
*InterruptStatus OPTIONAL
,
282 OUT VOID
**TxBuf OPTIONAL
285 ///////////////////////////////////////////////////////////////////////////////
290 (EFIAPI
*EFI_SIMPLE_NETWORK_TRANSMIT
) (
291 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
295 IN EFI_MAC_ADDRESS
*SrcAddr OPTIONAL
,
296 IN EFI_MAC_ADDRESS
*DestAddr OPTIONAL
,
297 IN UINT16
*Protocol OPTIONAL
300 ///////////////////////////////////////////////////////////////////////////////
305 (EFIAPI
*EFI_SIMPLE_NETWORK_RECEIVE
) (
306 IN
struct _EFI_SIMPLE_NETWORK_PROTOCOL
*This
,
307 OUT UINTN
*HeaderSize OPTIONAL
,
308 IN OUT UINTN
*BufferSize
,
310 OUT EFI_MAC_ADDRESS
*SrcAddr OPTIONAL
,
311 OUT EFI_MAC_ADDRESS
*DestAddr OPTIONAL
,
312 OUT UINT16
*Protocol OPTIONAL
315 ///////////////////////////////////////////////////////////////////////////////
318 #define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
319 #define EFI_SIMPLE_NETWORK_INTERFACE_REVISION EFI_SIMPLE_NETWORK_PROTOCOL_REVISION
321 typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL
{
323 EFI_SIMPLE_NETWORK_START Start
;
324 EFI_SIMPLE_NETWORK_STOP Stop
;
325 EFI_SIMPLE_NETWORK_INITIALIZE Initialize
;
326 EFI_SIMPLE_NETWORK_RESET Reset
;
327 EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown
;
328 EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters
;
329 EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress
;
330 EFI_SIMPLE_NETWORK_STATISTICS Statistics
;
331 EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac
;
332 EFI_SIMPLE_NETWORK_NVDATA NvData
;
333 EFI_SIMPLE_NETWORK_GET_STATUS GetStatus
;
334 EFI_SIMPLE_NETWORK_TRANSMIT Transmit
;
335 EFI_SIMPLE_NETWORK_RECEIVE Receive
;
336 EFI_EVENT WaitForPacket
;
337 EFI_SIMPLE_NETWORK_MODE
*Mode
;
338 } EFI_SIMPLE_NETWORK_PROTOCOL
;
340 // Note: Because it conflicted with the EDK2 struct name, the
341 // 'EFI_SIMPLE_NETWORK_PROTOCOL' GUID definition, from older
342 // versions of gnu-efi, is now obsoleted.
343 // Use 'EFI_SIMPLE_NETWORK_PROTOCOL_GUID' instead.
345 typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL _EFI_SIMPLE_NETWORK
;
346 typedef EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK
;
348 #endif /* _EFINET_H */