summaryrefslogtreecommitdiff
path: root/EDK/Foundation/Efi/Protocol/SimpleNetwork/SimpleNetwork.h
diff options
context:
space:
mode:
Diffstat (limited to 'EDK/Foundation/Efi/Protocol/SimpleNetwork/SimpleNetwork.h')
-rw-r--r--EDK/Foundation/Efi/Protocol/SimpleNetwork/SimpleNetwork.h639
1 files changed, 639 insertions, 0 deletions
diff --git a/EDK/Foundation/Efi/Protocol/SimpleNetwork/SimpleNetwork.h b/EDK/Foundation/Efi/Protocol/SimpleNetwork/SimpleNetwork.h
new file mode 100644
index 0000000..15b670e
--- /dev/null
+++ b/EDK/Foundation/Efi/Protocol/SimpleNetwork/SimpleNetwork.h
@@ -0,0 +1,639 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ SimpleNetwork.h
+
+Abstract:
+
+ Simple Network protocol as defined in the EFI 1.0 specification.
+
+ Basic network device abstraction.
+
+ Rx - Received
+ Tx - Transmit
+ MCast - MultiCast
+ ...
+
+--*/
+
+#ifndef _SIMPLE_NETWORK_H_
+#define _SIMPLE_NETWORK_H_
+
+#define EFI_SIMPLE_NETWORK_PROTOCOL_GUID \
+ { \
+ 0xA19832B9, 0xAC25, 0x11D3, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D \
+ }
+
+EFI_FORWARD_DECLARATION (EFI_SIMPLE_NETWORK_PROTOCOL);
+
+//
+// Simple Network Protocol data structures
+//
+typedef struct {
+ //
+ // Total number of frames received. Includes frames with errors and
+ // dropped frames.
+ //
+ UINT64 RxTotalFrames;
+
+ //
+ // Number of valid frames received and copied into receive buffers.
+ //
+ UINT64 RxGoodFrames;
+
+ //
+ // Number of frames below the minimum length for the media.
+ // This would be <64 for ethernet.
+ //
+ UINT64 RxUndersizeFrames;
+
+ //
+ // Number of frames longer than the maxminum length for the
+ // media. This would be >1500 for ethernet.
+ //
+ UINT64 RxOversizeFrames;
+
+ //
+ // Valid frames that were dropped because receive buffers were full.
+ //
+ UINT64 RxDroppedFrames;
+
+ //
+ // Number of valid unicast frames received and not dropped.
+ //
+ UINT64 RxUnicastFrames;
+
+ //
+ // Number of valid broadcast frames received and not dropped.
+ //
+ UINT64 RxBroadcastFrames;
+
+ //
+ // Number of valid mutlicast frames received and not dropped.
+ //
+ UINT64 RxMulticastFrames;
+
+ //
+ // Number of frames w/ CRC or alignment errors.
+ //
+ UINT64 RxCrcErrorFrames;
+
+ //
+ // Total number of bytes received. Includes frames with errors
+ // and dropped frames.
+ //
+ UINT64 RxTotalBytes;
+
+ //
+ // Transmit statistics.
+ //
+ UINT64 TxTotalFrames;
+ UINT64 TxGoodFrames;
+ UINT64 TxUndersizeFrames;
+ UINT64 TxOversizeFrames;
+ UINT64 TxDroppedFrames;
+ UINT64 TxUnicastFrames;
+ UINT64 TxBroadcastFrames;
+ UINT64 TxMulticastFrames;
+ UINT64 TxCrcErrorFrames;
+ UINT64 TxTotalBytes;
+
+ //
+ // Number of collisions detection on this subnet.
+ //
+ UINT64 Collisions;
+
+ //
+ // Number of frames destined for unsupported protocol.
+ //
+ UINT64 UnsupportedProtocol;
+
+} EFI_NETWORK_STATISTICS;
+
+typedef enum {
+ EfiSimpleNetworkStopped,
+ EfiSimpleNetworkStarted,
+ EfiSimpleNetworkInitialized,
+ EfiSimpleNetworkMaxState
+} EFI_SIMPLE_NETWORK_STATE;
+
+#define EFI_SIMPLE_NETWORK_RECEIVE_UNICAST 0x01
+#define EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST 0x02
+#define EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST 0x04
+#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08
+#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10
+
+#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01
+#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02
+#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04
+#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08
+
+#define MAX_MCAST_FILTER_CNT 16
+typedef struct {
+ UINT32 State;
+ UINT32 HwAddressSize;
+ UINT32 MediaHeaderSize;
+ UINT32 MaxPacketSize;
+ UINT32 NvRamSize;
+ UINT32 NvRamAccessSize;
+ UINT32 ReceiveFilterMask;
+ UINT32 ReceiveFilterSetting;
+ UINT32 MaxMCastFilterCount;
+ UINT32 MCastFilterCount;
+ EFI_MAC_ADDRESS MCastFilter[MAX_MCAST_FILTER_CNT];
+ EFI_MAC_ADDRESS CurrentAddress;
+ EFI_MAC_ADDRESS BroadcastAddress;
+ EFI_MAC_ADDRESS PermanentAddress;
+ UINT8 IfType;
+ BOOLEAN MacAddressChangeable;
+ BOOLEAN MultipleTxSupported;
+ BOOLEAN MediaPresentSupported;
+ BOOLEAN MediaPresent;
+} EFI_SIMPLE_NETWORK_MODE;
+
+//
+// Protocol Member Functions
+//
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_START) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This
+ )
+/*++
+
+ Routine Description:
+ Changes the state of a network interface from "stopped" to "started".
+
+ Arguments:
+ This - Protocol instance pointer.
+
+ Returns:
+ EFI_SUCCESS - The network interface was started.
+ EFI_ALREADY_STARTED - The network interface is already in the started state.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_STOP) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This
+ )
+/*++
+
+ Routine Description:
+ Changes the state of a network interface from "started" to "stopped".
+
+ Arguments:
+ This - Protocol instance pointer.
+
+ Returns:
+ EFI_SUCCESS - The network interface was stopped.
+ EFI_ALREADY_STARTED - The network interface is already in the stopped state.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN UINTN ExtraRxBufferSize OPTIONAL,
+ IN UINTN ExtraTxBufferSize OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Resets a network adapter and allocates the transmit and receive buffers
+ required by the network interface; optionally, also requests allocation
+ of additional transmit and receive buffers.
+
+ Arguments:
+ This - Protocol instance pointer.
+ ExtraRxBufferSize - The size, in bytes, of the extra receive buffer space
+ that the driver should allocate for the network interface.
+ Some network interfaces will not be able to use the extra
+ buffer, and the caller will not know if it is actually
+ being used.
+ ExtraTxBufferSize - The size, in bytes, of the extra transmit buffer space
+ that the driver should allocate for the network interface.
+ Some network interfaces will not be able to use the extra
+ buffer, and the caller will not know if it is actually
+ being used.
+
+ Returns:
+ EFI_SUCCESS - The network interface was initialized.
+ EFI_NOT_STARTED - The network interface has not been started
+ EFI_OUT_OF_RESOURCES - There was not enough memory for the transmit and
+ receive buffers. .
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_RESET) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN BOOLEAN ExtendedVerification
+ )
+/*++
+
+ Routine Description:
+ Resets a network adapter and re-initializes it with the parameters that were
+ provided in the previous call to Initialize().
+
+ Arguments:
+ This - Protocol instance pointer.
+ ExtendedVerification - Indicates that the driver may perform a more
+ exhaustive verification operation of the device
+ during reset.
+
+
+ Returns:
+ EFI_SUCCESS - The network interface was reset.
+ EFI_NOT_STARTED - The network interface has not been started
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This
+ )
+/*++
+
+ Routine Description:
+ Resets a network adapter and leaves it in a state that is safe for
+ another driver to initialize.
+
+ Arguments:
+ This - Protocol instance pointer.
+
+ Returns:
+ EFI_SUCCESS - The network interface was shutdown.
+ EFI_NOT_STARTED - The network interface has not been started
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN UINT32 Enable,
+ IN UINT32 Disable,
+ IN BOOLEAN ResetMCastFilter,
+ IN UINTN MCastFilterCnt OPTIONAL,
+ IN EFI_MAC_ADDRESS * MCastFilter OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Manages the multicast receive filters of a network interface.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Enable - A bit mask of receive filters to enable on the network interface.
+ Disable - A bit mask of receive filters to disable on the network interface.
+ ResetMCastFilter - Set to TRUE to reset the contents of the multicast receive
+ filters on the network interface to their default values.
+ McastFilterCnt - Number of multicast HW MAC addresses in the new
+ MCastFilter list. This value must be less than or equal to
+ the MCastFilterCnt field of EFI_SIMPLE_NETWORK_MODE. This
+ field is optional if ResetMCastFilter is TRUE.
+ MCastFilter - A pointer to a list of new multicast receive filter HW MAC
+ addresses. This list will replace any existing multicast
+ HW MAC address list. This field is optional if
+ ResetMCastFilter is TRUE.
+
+ Returns:
+ EFI_SUCCESS - The multicast receive filter list was updated.
+ EFI_NOT_STARTED - The network interface has not been started
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_STATION_ADDRESS) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN BOOLEAN Reset,
+ IN EFI_MAC_ADDRESS * New OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Modifies or resets the current station address, if supported.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Reset - Flag used to reset the station address to the network interfaces
+ permanent address.
+ New - New station address to be used for the network interface.
+
+ Returns:
+ EFI_SUCCESS - The network interfaces station address was updated.
+ EFI_NOT_STARTED - The network interface has not been started
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN BOOLEAN Reset,
+ IN OUT UINTN *StatisticsSize OPTIONAL,
+ OUT EFI_NETWORK_STATISTICS * StatisticsTable OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Resets or collects the statistics on a network interface.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Reset - Set to TRUE to reset the statistics for the network interface.
+ StatisticsSize - On input the size, in bytes, of StatisticsTable. On
+ output the size, in bytes, of the resulting table of
+ statistics.
+ StatisticsTable - A pointer to the EFI_NETWORK_STATISTICS structure that
+ contains the statistics.
+
+ Returns:
+ EFI_SUCCESS - The statistics were collected from the network interface.
+ EFI_NOT_STARTED - The network interface has not been started.
+ EFI_BUFFER_TOO_SMALL - The Statistics buffer was too small. The current buffer
+ size needed to hold the statistics is returned in
+ StatisticsSize.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN BOOLEAN IPv6,
+ IN EFI_IP_ADDRESS * IP,
+ OUT EFI_MAC_ADDRESS * MAC
+ )
+/*++
+
+ Routine Description:
+ Converts a multicast IP address to a multicast HW MAC address.
+
+ Arguments:
+ This - Protocol instance pointer.
+ IPv6 - Set to TRUE if the multicast IP address is IPv6 [RFC 2460]. Set
+ to FALSE if the multicast IP address is IPv4 [RFC 791].
+ IP - The multicast IP address that is to be converted to a multicast
+ HW MAC address.
+ MAC - The multicast HW MAC address that is to be generated from IP.
+
+ Returns:
+ EFI_SUCCESS - The multicast IP address was mapped to the multicast
+ HW MAC address.
+ EFI_NOT_STARTED - The network interface has not been started.
+ EFI_BUFFER_TOO_SMALL - The Statistics buffer was too small. The current buffer
+ size needed to hold the statistics is returned in
+ StatisticsSize.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_NVDATA) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN BOOLEAN ReadWrite,
+ IN UINTN Offset,
+ IN UINTN BufferSize,
+ IN OUT VOID *Buffer
+ )
+/*++
+
+ Routine Description:
+ Performs read and write operations on the NVRAM device attached to a
+ network interface.
+
+ Arguments:
+ This - Protocol instance pointer.
+ ReadWrite - TRUE for read operations, FALSE for write operations.
+ Offset - Byte offset in the NVRAM device at which to start the read or
+ write operation. This must be a multiple of NvRamAccessSize and
+ less than NvRamSize.
+ BufferSize - The number of bytes to read or write from the NVRAM device.
+ This must also be a multiple of NvramAccessSize.
+ Buffer - A pointer to the data buffer.
+
+ Returns:
+ EFI_SUCCESS - The NVRAM access was performed.
+ EFI_NOT_STARTED - The network interface has not been started.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_GET_STATUS) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ OUT UINT32 *InterruptStatus OPTIONAL,
+ OUT VOID **TxBuf OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Reads the current interrupt status and recycled transmit buffer status from
+ a network interface.
+
+ Arguments:
+ This - Protocol instance pointer.
+ InterruptStatus - A pointer to the bit mask of the currently active interrupts
+ If this is NULL, the interrupt status will not be read from
+ the device. If this is not NULL, the interrupt status will
+ be read from the device. When the interrupt status is read,
+ it will also be cleared. Clearing the transmit interrupt
+ does not empty the recycled transmit buffer array.
+ TxBuf - Recycled transmit buffer address. The network interface will
+ not transmit if its internal recycled transmit buffer array
+ is full. Reading the transmit buffer does not clear the
+ transmit interrupt. If this is NULL, then the transmit buffer
+ status will not be read. If there are no transmit buffers to
+ recycle and TxBuf is not NULL, * TxBuf will be set to NULL.
+
+ Returns:
+ EFI_SUCCESS - The status of the network interface was retrieved.
+ EFI_NOT_STARTED - The network interface has not been started.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ IN UINTN HeaderSize,
+ IN UINTN BufferSize,
+ IN VOID *Buffer,
+ IN EFI_MAC_ADDRESS * SrcAddr OPTIONAL,
+ IN EFI_MAC_ADDRESS * DestAddr OPTIONAL,
+ IN UINT16 *Protocol OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Places a packet in the transmit queue of a network interface.
+
+ Arguments:
+ This - Protocol instance pointer.
+ HeaderSize - The size, in bytes, of the media header to be filled in by
+ the Transmit() function. If HeaderSize is non-zero, then it
+ must be equal to This->Mode->MediaHeaderSize and the DestAddr
+ and Protocol parameters must not be NULL.
+ BufferSize - The size, in bytes, of the entire packet (media header and
+ data) to be transmitted through the network interface.
+ Buffer - A pointer to the packet (media header followed by data) to be
+ transmitted. This parameter cannot be NULL. If HeaderSize is zero,
+ then the media header in Buffer must already be filled in by the
+ caller. If HeaderSize is non-zero, then the media header will be
+ filled in by the Transmit() function.
+ SrcAddr - The source HW MAC address. If HeaderSize is zero, then this parameter
+ is ignored. If HeaderSize is non-zero and SrcAddr is NULL, then
+ This->Mode->CurrentAddress is used for the source HW MAC address.
+ DsetAddr - The destination HW MAC address. If HeaderSize is zero, then this
+ parameter is ignored.
+ Protocol - The type of header to build. If HeaderSize is zero, then this
+ parameter is ignored. See RFC 1700, section "Ether Types", for
+ examples.
+
+ Returns:
+ EFI_SUCCESS - The packet was placed on the transmit queue.
+ EFI_NOT_STARTED - The network interface has not been started.
+ EFI_NOT_READY - The network interface is too busy to accept this transmit
+ request.
+ EFI_BUFFER_TOO_SMALL - The BufferSize parameter is too small.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE) (
+ IN EFI_SIMPLE_NETWORK_PROTOCOL * This,
+ OUT UINTN *HeaderSize OPTIONAL,
+ IN OUT UINTN *BufferSize,
+ OUT VOID *Buffer,
+ OUT EFI_MAC_ADDRESS * SrcAddr OPTIONAL,
+ OUT EFI_MAC_ADDRESS * DestAddr OPTIONAL,
+ OUT UINT16 *Protocol OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Receives a packet from a network interface.
+
+ Arguments:
+ This - Protocol instance pointer.
+ HeaderSize - The size, in bytes, of the media header received on the network
+ interface. If this parameter is NULL, then the media header size
+ will not be returned.
+ BufferSize - On entry, the size, in bytes, of Buffer. On exit, the size, in
+ bytes, of the packet that was received on the network interface.
+ Buffer - A pointer to the data buffer to receive both the media header and
+ the data.
+ SrcAddr - The source HW MAC address. If this parameter is NULL, the
+ HW MAC source address will not be extracted from the media
+ header.
+ DsetAddr - The destination HW MAC address. If this parameter is NULL,
+ the HW MAC destination address will not be extracted from the
+ media header.
+ Protocol - The media header type. If this parameter is NULL, then the
+ protocol will not be extracted from the media header. See
+ RFC 1700 section "Ether Types" for examples.
+
+ Returns:
+ EFI_SUCCESS - The received data was stored in Buffer, and BufferSize has
+ been updated to the number of bytes received.
+ EFI_NOT_STARTED - The network interface has not been started.
+ EFI_NOT_READY - The network interface is too busy to accept this transmit
+ request.
+ EFI_BUFFER_TOO_SMALL - The BufferSize parameter is too small.
+ EFI_INVALID_PARAMETER - One or more of the parameters has an unsupported value.
+ EFI_DEVICE_ERROR - The command could not be sent to the network interface.
+ EFI_UNSUPPORTED - This function is not supported by the network interface.
+
+--*/
+;
+
+#define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
+
+typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL {
+ UINT64 Revision;
+ EFI_SIMPLE_NETWORK_START Start;
+ EFI_SIMPLE_NETWORK_STOP Stop;
+ EFI_SIMPLE_NETWORK_INITIALIZE Initialize;
+ EFI_SIMPLE_NETWORK_RESET Reset;
+ EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown;
+ EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters;
+ EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress;
+ EFI_SIMPLE_NETWORK_STATISTICS Statistics;
+ EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac;
+ EFI_SIMPLE_NETWORK_NVDATA NvData;
+ EFI_SIMPLE_NETWORK_GET_STATUS GetStatus;
+ EFI_SIMPLE_NETWORK_TRANSMIT Transmit;
+ EFI_SIMPLE_NETWORK_RECEIVE Receive;
+ EFI_EVENT WaitForPacket;
+ EFI_SIMPLE_NETWORK_MODE *Mode;
+} EFI_SIMPLE_NETWORK_PROTOCOL;
+
+extern EFI_GUID gEfiSimpleNetworkProtocolGuid;
+
+#endif