REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the EmulatorPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			452 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			452 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  The EMU_SNP_PROTOCOL provides services to initialize a network interface,
 | 
						|
  transmit packets, receive packets, and close a network interface.
 | 
						|
 | 
						|
 | 
						|
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
 | 
						|
Portitions copyright (c) 2011, Apple Inc. All rights reserved.
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __EMU_SNP_H__
 | 
						|
#define __EMU_SNP_H__
 | 
						|
 | 
						|
#include <Protocol/SimpleNetwork.h>
 | 
						|
 | 
						|
#define EMU_SNP_PROTOCOL_GUID \
 | 
						|
 { 0xFD5FBE54, 0x8C35, 0xB345, { 0x8A, 0x0F, 0x7A, 0xC8, 0xA5, 0xFD, 0x05, 0x21 } }
 | 
						|
 | 
						|
typedef struct _EMU_SNP_PROTOCOL EMU_SNP_PROTOCOL;
 | 
						|
 | 
						|
/**
 | 
						|
  Register storage for SNP Mode.
 | 
						|
 | 
						|
  @param  This Protocol instance pointer.
 | 
						|
  @param  Mode SimpleNetworkProtocol Mode structure passed into driver.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The network interface was started.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_CREATE_MAPPING)(
 | 
						|
  IN EMU_SNP_PROTOCOL         *This,
 | 
						|
  IN EFI_SIMPLE_NETWORK_MODE  *Mode
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Changes the state of a network interface from "stopped" to "started".
 | 
						|
 | 
						|
  @param  This Protocol instance pointer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The network interface was started.
 | 
						|
  @retval EFI_ALREADY_STARTED   The network interface is already in the started state.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_START)(
 | 
						|
  IN EMU_SNP_PROTOCOL  *This
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Changes the state of a network interface from "started" to "stopped".
 | 
						|
 | 
						|
  @param  This Protocol instance pointer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The network interface was stopped.
 | 
						|
  @retval EFI_ALREADY_STARTED   The network interface is already in the stopped state.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_STOP)(
 | 
						|
  IN EMU_SNP_PROTOCOL  *This
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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.
 | 
						|
 | 
						|
  @param  This              The protocol instance pointer.
 | 
						|
  @param  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.
 | 
						|
  @param  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.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The network interface was initialized.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  There was not enough memory for the transmit and
 | 
						|
                                receive buffers.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_INITIALIZE)(
 | 
						|
  IN EMU_SNP_PROTOCOL                    *This,
 | 
						|
  IN UINTN                               ExtraRxBufferSize  OPTIONAL,
 | 
						|
  IN UINTN                               ExtraTxBufferSize  OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Resets a network adapter and re-initializes it with the parameters that were
 | 
						|
  provided in the previous call to Initialize().
 | 
						|
 | 
						|
  @param  This                 The protocol instance pointer.
 | 
						|
  @param  ExtendedVerification Indicates that the driver may perform a more
 | 
						|
                               exhaustive verification operation of the device
 | 
						|
                               during reset.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The network interface was reset.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_RESET)(
 | 
						|
  IN EMU_SNP_PROTOCOL   *This,
 | 
						|
  IN BOOLEAN            ExtendedVerification
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Resets a network adapter and leaves it in a state that is safe for
 | 
						|
  another driver to initialize.
 | 
						|
 | 
						|
  @param  This Protocol instance pointer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The network interface was shutdown.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_SHUTDOWN)(
 | 
						|
  IN EMU_SNP_PROTOCOL  *This
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Manages the multicast receive filters of a network interface.
 | 
						|
 | 
						|
  @param  This             The protocol instance pointer.
 | 
						|
  @param  Enable           A bit mask of receive filters to enable on the network interface.
 | 
						|
  @param  Disable          A bit mask of receive filters to disable on the network interface.
 | 
						|
  @param  ResetMCastFilter Set to TRUE to reset the contents of the multicast receive
 | 
						|
                           filters on the network interface to their default values.
 | 
						|
  @param  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 EMU_SNP_MODE. This
 | 
						|
                           field is optional if ResetMCastFilter is TRUE.
 | 
						|
  @param  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.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The multicast receive filter list was updated.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_RECEIVE_FILTERS)(
 | 
						|
  IN EMU_SNP_PROTOCOL                             *This,
 | 
						|
  IN UINT32                                       Enable,
 | 
						|
  IN UINT32                                       Disable,
 | 
						|
  IN BOOLEAN                                      ResetMCastFilter,
 | 
						|
  IN UINTN                                        MCastFilterCnt     OPTIONAL,
 | 
						|
  IN EFI_MAC_ADDRESS                              *MCastFilter OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Modifies or resets the current station address, if supported.
 | 
						|
 | 
						|
  @param  This  The protocol instance pointer.
 | 
						|
  @param  Reset Flag used to reset the station address to the network interfaces
 | 
						|
                permanent address.
 | 
						|
  @param  New   The new station address to be used for the network interface.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The network interfaces station address was updated.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_STATION_ADDRESS)(
 | 
						|
  IN EMU_SNP_PROTOCOL            *This,
 | 
						|
  IN BOOLEAN                     Reset,
 | 
						|
  IN EFI_MAC_ADDRESS             *New OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Resets or collects the statistics on a network interface.
 | 
						|
 | 
						|
  @param  This            Protocol instance pointer.
 | 
						|
  @param  Reset           Set to TRUE to reset the statistics for the network interface.
 | 
						|
  @param  StatisticsSize  On input the size, in bytes, of StatisticsTable. On
 | 
						|
                          output the size, in bytes, of the resulting table of
 | 
						|
                          statistics.
 | 
						|
  @param  StatisticsTable A pointer to the EFI_NETWORK_STATISTICS structure that
 | 
						|
                          contains the statistics.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The statistics were collected from the network interface.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL  The Statistics buffer was too small. The current buffer
 | 
						|
                                size needed to hold the statistics is returned in
 | 
						|
                                StatisticsSize.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_STATISTICS)(
 | 
						|
  IN EMU_SNP_PROTOCOL                     *This,
 | 
						|
  IN BOOLEAN                              Reset,
 | 
						|
  IN OUT UINTN                            *StatisticsSize   OPTIONAL,
 | 
						|
  OUT EFI_NETWORK_STATISTICS              *StatisticsTable  OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Converts a multicast IP address to a multicast HW MAC address.
 | 
						|
 | 
						|
  @param  This The protocol instance pointer.
 | 
						|
  @param  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].
 | 
						|
  @param  IP   The multicast IP address that is to be converted to a multicast
 | 
						|
               HW MAC address.
 | 
						|
  @param  MAC  The multicast HW MAC address that is to be generated from IP.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The multicast IP address was mapped to the multicast
 | 
						|
                                HW MAC address.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL  The Statistics buffer was too small. The current buffer
 | 
						|
                                size needed to hold the statistics is returned in
 | 
						|
                                StatisticsSize.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_MCAST_IP_TO_MAC)(
 | 
						|
  IN EMU_SNP_PROTOCOL                     *This,
 | 
						|
  IN BOOLEAN                              IPv6,
 | 
						|
  IN EFI_IP_ADDRESS                       *IP,
 | 
						|
  OUT EFI_MAC_ADDRESS                     *MAC
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Performs read and write operations on the NVRAM device attached to a
 | 
						|
  network interface.
 | 
						|
 | 
						|
  @param  This       The protocol instance pointer.
 | 
						|
  @param  ReadWrite  TRUE for read operations, FALSE for write operations.
 | 
						|
  @param  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.
 | 
						|
  @param  BufferSize The number of bytes to read or write from the NVRAM device.
 | 
						|
                     This must also be a multiple of NvramAccessSize.
 | 
						|
  @param  Buffer     A pointer to the data buffer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The NVRAM access was performed.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_NVDATA)(
 | 
						|
  IN EMU_SNP_PROTOCOL                     *This,
 | 
						|
  IN BOOLEAN                              ReadWrite,
 | 
						|
  IN UINTN                                Offset,
 | 
						|
  IN UINTN                                BufferSize,
 | 
						|
  IN OUT VOID                             *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Reads the current interrupt status and recycled transmit buffer status from
 | 
						|
  a network interface.
 | 
						|
 | 
						|
  @param  This            The protocol instance pointer.
 | 
						|
  @param  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.
 | 
						|
  @param  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.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The status of the network interface was retrieved.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_GET_STATUS)(
 | 
						|
  IN EMU_SNP_PROTOCOL                     *This,
 | 
						|
  OUT UINT32                              *InterruptStatus OPTIONAL,
 | 
						|
  OUT VOID                                **TxBuf OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Places a packet in the transmit queue of a network interface.
 | 
						|
 | 
						|
  @param  This       The protocol instance pointer.
 | 
						|
  @param  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.
 | 
						|
  @param  BufferSize The size, in bytes, of the entire packet (media header and
 | 
						|
                     data) to be transmitted through the network interface.
 | 
						|
  @param  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.
 | 
						|
  @param  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.
 | 
						|
  @param  DestAddr   The destination HW MAC address. If HeaderSize is zero, then this
 | 
						|
                     parameter is ignored.
 | 
						|
  @param  Protocol   The type of header to build. If HeaderSize is zero, then this
 | 
						|
                     parameter is ignored. See RFC 1700, section "Ether Types", for
 | 
						|
                     examples.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The packet was placed on the transmit queue.
 | 
						|
  @retval EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval EFI_NOT_READY         The network interface is too busy to accept this transmit request.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL  The BufferSize parameter is too small.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_TRANSMIT)(
 | 
						|
  IN EMU_SNP_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
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receives a packet from a network interface.
 | 
						|
 | 
						|
  @param  This       The protocol instance pointer.
 | 
						|
  @param  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.
 | 
						|
  @param  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.
 | 
						|
  @param  Buffer     A pointer to the data buffer to receive both the media header and
 | 
						|
                     the data.
 | 
						|
  @param  SrcAddr    The source HW MAC address. If this parameter is NULL, the
 | 
						|
                     HW MAC source address will not be extracted from the media
 | 
						|
                     header.
 | 
						|
  @param  DestAddr   The destination HW MAC address. If this parameter is NULL,
 | 
						|
                     the HW MAC destination address will not be extracted from the
 | 
						|
                     media header.
 | 
						|
  @param  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.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS           The received data was stored in Buffer, and BufferSize has
 | 
						|
                                 been updated to the number of bytes received.
 | 
						|
  @retval  EFI_NOT_STARTED       The network interface has not been started.
 | 
						|
  @retval  EFI_NOT_READY         The network interface is too busy to accept this transmit
 | 
						|
                                 request.
 | 
						|
  @retval  EFI_BUFFER_TOO_SMALL  The BufferSize parameter is too small.
 | 
						|
  @retval  EFI_INVALID_PARAMETER One or more of the parameters has an unsupported value.
 | 
						|
  @retval  EFI_DEVICE_ERROR      The command could not be sent to the network interface.
 | 
						|
  @retval  EFI_UNSUPPORTED       This function is not supported by the network interface.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EMU_SNP_RECEIVE)(
 | 
						|
  IN EMU_SNP_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
 | 
						|
  );
 | 
						|
 | 
						|
#define EMU_SNP_PROTOCOL_REVISION  0x00010000
 | 
						|
 | 
						|
//
 | 
						|
// Revision defined in EFI1.1
 | 
						|
//
 | 
						|
#define EMU_SNP_INTERFACE_REVISION  EMU_SNP_PROTOCOL_REVISION
 | 
						|
 | 
						|
///
 | 
						|
/// The EMU_SNP_PROTOCOL protocol abstracts OS network sercices
 | 
						|
/// from the EFI driver that produces EFI Simple Network Protocol.
 | 
						|
///
 | 
						|
struct _EMU_SNP_PROTOCOL {
 | 
						|
  EMU_SNP_CREATE_MAPPING     CreateMapping;
 | 
						|
  EMU_SNP_START              Start;
 | 
						|
  EMU_SNP_STOP               Stop;
 | 
						|
  EMU_SNP_INITIALIZE         Initialize;
 | 
						|
  EMU_SNP_RESET              Reset;
 | 
						|
  EMU_SNP_SHUTDOWN           Shutdown;
 | 
						|
  EMU_SNP_RECEIVE_FILTERS    ReceiveFilters;
 | 
						|
  EMU_SNP_STATION_ADDRESS    StationAddress;
 | 
						|
  EMU_SNP_STATISTICS         Statistics;
 | 
						|
  EMU_SNP_MCAST_IP_TO_MAC    MCastIpToMac;
 | 
						|
  EMU_SNP_NVDATA             NvData;
 | 
						|
  EMU_SNP_GET_STATUS         GetStatus;
 | 
						|
  EMU_SNP_TRANSMIT           Transmit;
 | 
						|
  EMU_SNP_RECEIVE            Receive;
 | 
						|
};
 | 
						|
 | 
						|
extern EFI_GUID  gEmuSnpProtocolGuid;
 | 
						|
 | 
						|
#endif
 |