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