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