source: bootcd/isolinux/syslinux-6.03/gnu-efi/gnu-efi-3.0/inc/efinet.h @ e16e8f2

Last change on this file since e16e8f2 was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

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