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