7 Copyright (c) 1999 Intel Corporation
13 EFI Simple Network protocol
19 #define EFI_SIMPLE_NETWORK_PROTOCOL \
20 { 0xA19832B9, 0xAC25, 0x11D3, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }
22 INTERFACE_DECL(_EFI_SIMPLE_NETWORK);
26 * Total number of frames received. Includes frames with errors and
31 /* Number of valid frames received and copied into receive buffers. */
35 * Number of frames below the minimum length for the media.
36 * This would be <64 for ethernet.
38 UINT64 RxUndersizeFrames;
41 * Number of frames longer than the maxminum length for the
42 * media. This would be >1500 for ethernet.
44 UINT64 RxOversizeFrames;
46 /* Valid frames that were dropped because receive buffers were full. */
47 UINT64 RxDroppedFrames;
49 /* Number of valid unicast frames received and not dropped. */
50 UINT64 RxUnicastFrames;
52 /* Number of valid broadcast frames received and not dropped. */
53 UINT64 RxBroadcastFrames;
55 /* Number of valid mutlicast frames received and not dropped. */
56 UINT64 RxMulticastFrames;
58 /* Number of frames w/ CRC or alignment errors. */
59 UINT64 RxCrcErrorFrames;
62 * Total number of bytes received. Includes frames with errors
67 /* Transmit statistics. */
70 UINT64 TxUndersizeFrames;
71 UINT64 TxOversizeFrames;
72 UINT64 TxDroppedFrames;
73 UINT64 TxUnicastFrames;
74 UINT64 TxBroadcastFrames;
75 UINT64 TxMulticastFrames;
76 UINT64 TxCrcErrorFrames;
79 /* Number of collisions detection on this subnet. */
82 /* Number of frames destined for unsupported protocol. */
83 UINT64 UnsupportedProtocol;
85 } EFI_NETWORK_STATISTICS;
88 EfiSimpleNetworkStopped,
89 EfiSimpleNetworkStarted,
90 EfiSimpleNetworkInitialized,
91 EfiSimpleNetworkMaxState
92 } EFI_SIMPLE_NETWORK_STATE;
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
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
105 #define MAX_MCAST_FILTER_CNT 16
108 UINT32 HwAddressSize;
109 UINT32 MediaHeaderSize;
110 UINT32 MaxPacketSize;
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;
122 BOOLEAN MacAddressChangeable;
123 BOOLEAN MultipleTxSupported;
124 BOOLEAN MediaPresentSupported;
125 BOOLEAN MediaPresent;
126 } EFI_SIMPLE_NETWORK_MODE;
130 (EFIAPI *EFI_SIMPLE_NETWORK_START) (
131 IN struct _EFI_SIMPLE_NETWORK *This
136 (EFIAPI *EFI_SIMPLE_NETWORK_STOP) (
137 IN struct _EFI_SIMPLE_NETWORK *This
142 (EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) (
143 IN struct _EFI_SIMPLE_NETWORK *This,
144 IN UINTN ExtraRxBufferSize OPTIONAL,
145 IN UINTN ExtraTxBufferSize OPTIONAL
150 (EFIAPI *EFI_SIMPLE_NETWORK_RESET) (
151 IN struct _EFI_SIMPLE_NETWORK *This,
152 IN BOOLEAN ExtendedVerification
157 (EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) (
158 IN struct _EFI_SIMPLE_NETWORK *This
163 (EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) (
164 IN struct _EFI_SIMPLE_NETWORK *This,
167 IN BOOLEAN ResetMCastFilter,
168 IN UINTN MCastFilterCnt OPTIONAL,
169 IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL
174 (EFIAPI *EFI_SIMPLE_NETWORK_STATION_ADDRESS) (
175 IN struct _EFI_SIMPLE_NETWORK *This,
177 IN EFI_MAC_ADDRESS *New OPTIONAL
182 (EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) (
183 IN struct _EFI_SIMPLE_NETWORK *This,
185 IN OUT UINTN *StatisticsSize OPTIONAL,
186 OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL
191 (EFIAPI *EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC) (
192 IN struct _EFI_SIMPLE_NETWORK *This,
194 IN EFI_IP_ADDRESS *IP,
195 OUT EFI_MAC_ADDRESS *MAC
200 (EFIAPI *EFI_SIMPLE_NETWORK_NVDATA) (
201 IN struct _EFI_SIMPLE_NETWORK *This,
202 IN BOOLEAN ReadWrite,
210 (EFIAPI *EFI_SIMPLE_NETWORK_GET_STATUS) (
211 IN struct _EFI_SIMPLE_NETWORK *This,
212 OUT UINT32 *InterruptStatus OPTIONAL,
213 OUT VOID **TxBuf OPTIONAL
218 (EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) (
219 IN struct _EFI_SIMPLE_NETWORK *This,
223 IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
224 IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,
225 IN UINT16 *Protocol OPTIONAL
230 (EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE) (
231 IN struct _EFI_SIMPLE_NETWORK *This,
232 OUT UINTN *HeaderSize OPTIONAL,
233 IN OUT UINTN *BufferSize,
235 OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
236 OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,
237 OUT UINT16 *Protocol OPTIONAL
240 #define EFI_SIMPLE_NETWORK_INTERFACE_REVISION 0x00010000
242 typedef struct _EFI_SIMPLE_NETWORK {
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;
261 #endif /* _EFINET_H */