uefi.pxe

Based on Uefi/UefiPxe.h, original notice:

This header file contains all of the PXE type definitions, structure prototypes, global variables and constants that are needed for porting PXE to EFI.

Copyright (c) 2006 - 2013, 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 that 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.

@par Revision Reference: 32/64-bit PXE specification: alpha-4, 99-Dec-17.

Members

Aliases

PXE_STATCODE
alias PXE_STATCODE = PXE_UINT16

UNDI Fill Header. No additional StatFlags. UNDI Transmit. No additional StatFlags. UNDI Receive . No additional StatFlags.

PXE_STATFLAGS
alias PXE_STATFLAGS = PXE_UINT16

UNDI Receive. No OpFlags. PXE STATFLAGS.

PXE_UINT64
alias PXE_UINT64 = UINT64

Typedef unsigned long PXE_UINT64.

Manifest constants

MAX_PCI_CONFIG_LEN
enum MAX_PCI_CONFIG_LEN;

cpb and db definitions

PXE_BUSTYPE_PCI
enum PXE_BUSTYPE_PCI;

BUS ROM ID signatures.

PXE_BUSTYPE_PXE
enum PXE_BUSTYPE_PXE;

UNDI ROM ID and devive ID signature.

PXE_CONTROL_LINK
enum PXE_CONTROL_LINK;

These two bit values are used to determine if there are more UNDI CDB structures following this one. If the link bit is set, there must be a CDB structure following this one. Execution will start on the next CDB structure as soon as this one completes successfully. If an error is generated by this command, execution will stop.

PXE_CONTROL_QUEUE_IF_BUSY
enum PXE_CONTROL_QUEUE_IF_BUSY;

Setting this flag directs the UNDI to queue this command for later execution if the UNDI is busy and it supports command queuing. If queuing is not supported, a PXE_STATCODE_INVALID_CONTROL error is returned. If the queue is full, a PXE_STATCODE_CDB_QUEUE_FULL error is returned.

PXE_HWCMD_CLEAR_SOFTWARE_INT
enum PXE_HWCMD_CLEAR_SOFTWARE_INT;

Use these to clear pending external interrupts.

PXE_HWCMD_ISSUE_COMMAND
enum PXE_HWCMD_ISSUE_COMMAND;

Command port definitions. If set, CDB identified in CDBaddr port is given to UNDI. If not set, other bits in this word will be processed.

PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE
enum PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE;

Use these to enable/disable receive filters.

PXE_HWCMD_SOFTWARE_INT_ENABLE
enum PXE_HWCMD_SOFTWARE_INT_ENABLE;

Use these to enable/disable external interrupts.

PXE_HWSTAT_COMMAND_FAILED
enum PXE_HWSTAT_COMMAND_FAILED;

If set, last command failed.

PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED
enum PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED;

If set, identifies enabled receive filters.

PXE_HWSTAT_SOFTWARE_INT_ENABLED
enum PXE_HWSTAT_SOFTWARE_INT_ENABLED;

If set, identifies enabled external interrupts.

PXE_HWSTAT_SOFTWARE_INT_PENDING
enum PXE_HWSTAT_SOFTWARE_INT_PENDING;

If set, identifies pending interrupts.

PXE_HWSTAT_STATE_MASK
enum PXE_HWSTAT_STATE_MASK;

Status port bit definitions. UNDI operation state.

PXE_IFNUM_INVALID
enum PXE_IFNUM_INVALID;

This interface number is returned by the S/W UNDI Get State and Start commands if information in the CDB, CPB or DB is invalid.

PXE_IFNUM_START
enum PXE_IFNUM_START;

This interface number must be passed to the S/W UNDI Start command.

PXE_IFTYPE_ETHERNET
enum PXE_IFTYPE_ETHERNET;

This information is from the ARP section of RFC 1700. 1 Ethernet (10Mb) JBP 2 Experimental Ethernet (3Mb) JBP 3 Amateur Radio AX.25 PXK 4 Proteon ProNET Token Ring JBP 5 Chaos GXP 6 IEEE 802 Networks JBP 7 ARCNET JBP 8 Hyperchannel JBP 9 Lanstar TU 10 Autonet Short Address MXB1 11 LocalTalk JKR1 12 LocalNet (IBM* PCNet or SYTEK* LocalNET) JXM 13 Ultra link RXD2 14 SMDS GXC1 15 Frame Relay AGM 16 Asynchronous Transmission Mode (ATM) JXB2 17 HDLC JBP 18 Fibre Channel [Yakov Rekhter] 19 Asynchronous Transmission Mode (ATM) [Mark Laubach] 20 Serial Line JBP 21 Asynchronous Transmission Mode (ATM) MXB1 * Other names and brands may be claimed as the property of others.

PXE_OPCODE_FILL_HEADER
enum PXE_OPCODE_FILL_HEADER;

Fill media header in packet for transmit.

PXE_OPCODE_GET_CONFIG_INFO
enum PXE_OPCODE_GET_CONFIG_INFO;

Get NIC configuration information.

PXE_OPCODE_GET_INIT_INFO
enum PXE_OPCODE_GET_INIT_INFO;

Get UNDI initialization information.

PXE_OPCODE_GET_STATE
enum PXE_OPCODE_GET_STATE;

Return UNDI operational state.

PXE_OPCODE_GET_STATUS
enum PXE_OPCODE_GET_STATUS;

Get & clear interrupt status.

PXE_OPCODE_INITIALIZE
enum PXE_OPCODE_INITIALIZE;

Changed UNDI operational state from Started to Initialized.

PXE_OPCODE_INTERRUPT_ENABLES
enum PXE_OPCODE_INTERRUPT_ENABLES;

Read & change state of external interrupt enables.

PXE_OPCODE_LAST_VALID
enum PXE_OPCODE_LAST_VALID;

Last valid PXE UNDI OpCode number.

PXE_OPCODE_MCAST_IP_TO_MAC
enum PXE_OPCODE_MCAST_IP_TO_MAC;

Convert multicast IP address to multicast MAC address.

PXE_OPCODE_NVDATA
enum PXE_OPCODE_NVDATA;

Read or change non-volatile storage on the NIC.

PXE_OPCODE_RECEIVE
enum PXE_OPCODE_RECEIVE;

Receive packet.

PXE_OPCODE_RECEIVE_FILTERS
enum PXE_OPCODE_RECEIVE_FILTERS;

Read & change state of packet receive filters.

PXE_OPCODE_RESET
enum PXE_OPCODE_RESET;

Re-initialize the NIC H/W.

PXE_OPCODE_SHUTDOWN
enum PXE_OPCODE_SHUTDOWN;

Change the UNDI operational state from Initialized to Started.

PXE_OPCODE_START
enum PXE_OPCODE_START;

Change UNDI operational state from Stopped to Started.

PXE_OPCODE_STATION_ADDRESS
enum PXE_OPCODE_STATION_ADDRESS;

Read & change station MAC address.

PXE_OPCODE_STATISTICS
enum PXE_OPCODE_STATISTICS;

Read traffic statistics.

PXE_OPCODE_STOP
enum PXE_OPCODE_STOP;

Change UNDI operational state from Started to Stopped.

PXE_OPCODE_TRANSMIT
enum PXE_OPCODE_TRANSMIT;

Transmit packet(s).

PXE_OPFLAGS_FILL_HEADER_OPMASK
enum PXE_OPFLAGS_FILL_HEADER_OPMASK;

UNDI Fill Header.

PXE_OPFLAGS_GET_INTERRUPT_STATUS
enum PXE_OPFLAGS_GET_INTERRUPT_STATUS;

UNDI Get Status. Return current interrupt status. This will also clear any interrupts that are currently set. This can be used in a polling routine. The interrupt flags are still set and cleared even when the interrupts are disabled.

PXE_OPFLAGS_GET_MEDIA_STATUS
enum PXE_OPFLAGS_GET_MEDIA_STATUS;

Return current media status.

PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS
enum PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS;

Return list of transmitted buffers for recycling. Transmit buffers must not be changed or unallocated until they have recycled. After issuing a transmit command, wait for a transmit complete interrupt. When a transmit complete interrupt is received, read the transmitted buffers. Do not plan on getting one buffer per interrupt. Some NICs and UNDIs may transmit multiple buffers per interrupt.

PXE_OPFLAGS_INITIALIZE_CABLE_DETECT_MASK
enum PXE_OPFLAGS_INITIALIZE_CABLE_DETECT_MASK;

///////////////////////////////////// ///////////////////////////////////// ///////////////////////////////////// UNDI Initialize

PXE_OPFLAGS_INTERRUPT_COMMAND
enum PXE_OPFLAGS_INTERRUPT_COMMAND;

Enable command interrupts. An external interrupt will be generated when command execution stops.

PXE_OPFLAGS_INTERRUPT_OPMASK
enum PXE_OPFLAGS_INTERRUPT_OPMASK;

UNDI Shutdown. No OpFlags. UNDI Interrupt Enables. Select whether to enable or disable external interrupt signals. Setting both enable and disable will return PXE_STATCODE_INVALID_OPFLAGS.

PXE_OPFLAGS_INTERRUPT_RECEIVE
enum PXE_OPFLAGS_INTERRUPT_RECEIVE;

Enable receive interrupts. An external interrupt will be generated after a complete non-error packet has been received.

PXE_OPFLAGS_INTERRUPT_SOFTWARE
enum PXE_OPFLAGS_INTERRUPT_SOFTWARE;

Generate software interrupt. Setting this bit generates an external interrupt, if it is supported by the hardware.

PXE_OPFLAGS_INTERRUPT_TRANSMIT
enum PXE_OPFLAGS_INTERRUPT_TRANSMIT;

Enable transmit interrupts. An external interrupt will be generated after a complete non-error packet has been transmitted.

PXE_OPFLAGS_MCAST_IP_TO_MAC_OPMASK
enum PXE_OPFLAGS_MCAST_IP_TO_MAC_OPMASK;

UNDI MCast IP to MAC. Identify the type of IP address in the CPB.

PXE_OPFLAGS_NVDATA_OPMASK
enum PXE_OPFLAGS_NVDATA_OPMASK;

UNDI NvData. Select the type of non-volatile data operation.

PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST
enum PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST;

Enable promiscuous multicast packet receiving. All multicast packets will be received.

PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST
enum PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST;

Enable broadcast packet receiving. Packets sent to the broadcast MAC address will be received.

PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST
enum PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST;

Enable filtered multicast packet receiving. Packets sent to any of the multicast MAC addresses in the multicast MAC address filter list will be received. If the filter list is empty, no multicast

PXE_OPFLAGS_RECEIVE_FILTER_OPMASK
enum PXE_OPFLAGS_RECEIVE_FILTER_OPMASK;

UNDI Receive Filters. Select whether to enable or disable receive filters. Setting both enable and disable will return PXE_STATCODE_INVALID_OPCODE.

PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS
enum PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS;

Enable promiscuous packet receiving. All packets will be received.

PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST
enum PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST;

To reset the contents of the multicast MAC address filter list, set this OpFlag:

PXE_OPFLAGS_RECEIVE_FILTER_UNICAST
enum PXE_OPFLAGS_RECEIVE_FILTER_UNICAST;

Enable unicast packet receiving. Packets sent to the current station MAC address will be received.

PXE_OPFLAGS_RESET_DISABLE_INTERRUPTS
enum PXE_OPFLAGS_RESET_DISABLE_INTERRUPTS;

UNDI Reset

PXE_OPFLAGS_STATION_ADDRESS_READ
enum PXE_OPFLAGS_STATION_ADDRESS_READ;

UNDI Station Address.

PXE_OPFLAGS_STATISTICS_READ
enum PXE_OPFLAGS_STATISTICS_READ;

UNDI Statistics.

PXE_OPFLAGS_SWUNDI_TRANSMIT_OPMASK
enum PXE_OPFLAGS_SWUNDI_TRANSMIT_OPMASK;

UNDI Transmit. S/W UNDI only. Return after the packet has been transmitted. A transmit complete interrupt will still be generated and the transmit buffer will have to be recycled.

PXE_ROMID_IMP_HW_UNDI
enum PXE_ROMID_IMP_HW_UNDI;

Implementation flags.

PXE_ROMID_MAJORVER
enum PXE_ROMID_MAJORVER;

UNDI command interface revision. These are the values that get sent in option 94 (Client Network Interface Identifier) in the DHCP Discover and PXE Boot Server Request packets.

PXE_ROMID_REV
enum PXE_ROMID_REV;

!PXE structure format revision .

PXE_ROMID_SIGNATURE
enum PXE_ROMID_SIGNATURE;

Signature of !PXE structure.

PXE_STATCODE_SUCCESS
enum PXE_STATCODE_SUCCESS;

Common StatCodes returned by all UNDI commands, UNDI protocol functions and BC protocol functions.

PXE_STATFLAGS_CABLE_DETECT_MASK
enum PXE_STATFLAGS_CABLE_DETECT_MASK;

UNDI Start. No additional StatFlags. UNDI Get Init Info.

PXE_STATFLAGS_GET_STATE_MASK
enum PXE_STATFLAGS_GET_STATE_MASK;

UNDI Get State.

PXE_STATFLAGS_GET_STATUS_COMMAND
enum PXE_STATFLAGS_GET_STATUS_COMMAND;

If set, at least one command interrupt occurred.

PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK
enum PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK;

UNDI Station Address. No additional StatFlags. UNDI Statistics. No additional StatFlags. / UNDI MCast IP to MAC. / / No additional StatFlags. UNDI NvData. No additional StatFlags. UNDI Get Status. Use to determine if an interrupt has occurred.

PXE_STATFLAGS_GET_STATUS_NO_MEDIA
enum PXE_STATFLAGS_GET_STATUS_NO_MEDIA;

This flag is set if there is no media detected.

PXE_STATFLAGS_GET_STATUS_NO_TXBUFS_WRITTEN
enum PXE_STATFLAGS_GET_STATUS_NO_TXBUFS_WRITTEN;

This flag is set if no transmitted buffer addresses were written into the DB. (This could be because DBsize was too small.)

PXE_STATFLAGS_GET_STATUS_RECEIVE
enum PXE_STATFLAGS_GET_STATUS_RECEIVE;

If set, at least one receive interrupt occurred.

PXE_STATFLAGS_GET_STATUS_SOFTWARE
enum PXE_STATFLAGS_GET_STATUS_SOFTWARE;

If set, at least one software interrupt occurred.

PXE_STATFLAGS_GET_STATUS_TRANSMIT
enum PXE_STATFLAGS_GET_STATUS_TRANSMIT;

If set, at least one transmit interrupt occurred.

PXE_STATFLAGS_GET_STATUS_TXBUF_QUEUE_EMPTY
enum PXE_STATFLAGS_GET_STATUS_TXBUF_QUEUE_EMPTY;

This flag is set if the transmitted buffer queue is empty. This flag will be set if all transmitted buffer addresses get written into the DB.

PXE_STATFLAGS_INITIALIZED_NO_MEDIA
enum PXE_STATFLAGS_INITIALIZED_NO_MEDIA;

UNDI Initialize.

PXE_STATFLAGS_INTERRUPT_COMMAND
enum PXE_STATFLAGS_INTERRUPT_COMMAND;

If set, command interrupts are enabled.

PXE_STATFLAGS_INTERRUPT_RECEIVE
enum PXE_STATFLAGS_INTERRUPT_RECEIVE;

UNDI Shutdown. No additional StatFlags. UNDI Interrupt Enables. If set, receive interrupts are enabled.

PXE_STATFLAGS_INTERRUPT_TRANSMIT
enum PXE_STATFLAGS_INTERRUPT_TRANSMIT;

If set, transmit interrupts are enabled.

PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST
enum PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST;

If set, all multicast packets will be received.

PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST
enum PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST;

If set, broadcast packets will be received.

PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST
enum PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST;

If set, multicast packets that match up with the multicast address filter list will be received.

PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS
enum PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS;

If set, all packets will be received.

PXE_STATFLAGS_RECEIVE_FILTER_UNICAST
enum PXE_STATFLAGS_RECEIVE_FILTER_UNICAST;

UNDI Receive Filters. If set, unicast packets will be received.

PXE_STATFLAGS_RESET_NO_MEDIA
enum PXE_STATFLAGS_RESET_NO_MEDIA;

UNDI Reset.

PXE_STATFLAGS_STATUS_MASK
enum PXE_STATFLAGS_STATUS_MASK;

Common StatFlags that can be returned by all commands. The COMMAND_COMPLETE and COMMAND_FAILED status flags must be implemented by all UNDIs. COMMAND_QUEUED is only needed by UNDIs that support command queuing.

PXE_STATISTICS_COLLISIONS
enum PXE_STATISTICS_COLLISIONS;

Number of collisions detection on this subnet.

PXE_STATISTICS_RX_BROADCAST_FRAMES
enum PXE_STATISTICS_RX_BROADCAST_FRAMES;

Number of valid broadcast frames received and not dropped.

PXE_STATISTICS_RX_CRC_ERROR_FRAMES
enum PXE_STATISTICS_RX_CRC_ERROR_FRAMES;

Number of frames w/ CRC or alignment errors.

PXE_STATISTICS_RX_DROPPED_FRAMES
enum PXE_STATISTICS_RX_DROPPED_FRAMES;

Valid frames that were dropped because receive buffers were full.

PXE_STATISTICS_RX_GOOD_FRAMES
enum PXE_STATISTICS_RX_GOOD_FRAMES;

Number of valid frames received and copied into receive buffers.

PXE_STATISTICS_RX_MULTICAST_FRAMES
enum PXE_STATISTICS_RX_MULTICAST_FRAMES;

Number of valid mutlicast frames received and not dropped.

PXE_STATISTICS_RX_OVERSIZE_FRAMES
enum PXE_STATISTICS_RX_OVERSIZE_FRAMES;

Number of frames longer than the maxminum length for the media. This would be >1500 for ethernet.

PXE_STATISTICS_RX_TOTAL_BYTES
enum PXE_STATISTICS_RX_TOTAL_BYTES;

Total number of bytes received. Includes frames with errors and dropped frames.

PXE_STATISTICS_RX_TOTAL_FRAMES
enum PXE_STATISTICS_RX_TOTAL_FRAMES;

Total number of frames received. Includes frames with errors and dropped frames.

PXE_STATISTICS_RX_UNDERSIZE_FRAMES
enum PXE_STATISTICS_RX_UNDERSIZE_FRAMES;

Number of frames below the minimum length for the media. This would be <64 for ethernet.

PXE_STATISTICS_RX_UNICAST_FRAMES
enum PXE_STATISTICS_RX_UNICAST_FRAMES;

Number of valid unicast frames received and not dropped.

PXE_STATISTICS_TX_TOTAL_FRAMES
enum PXE_STATISTICS_TX_TOTAL_FRAMES;

Transmit statistics.

PXE_STATISTICS_UNSUPPORTED_PROTOCOL
enum PXE_STATISTICS_UNSUPPORTED_PROTOCOL;

Number of frames destined for unsupported protocol.

Structs

PXE_CPB_FILL_HEADER
struct PXE_CPB_FILL_HEADER
PXE_CPB_FILL_HEADER_FRAGMENTED
struct PXE_CPB_FILL_HEADER_FRAGMENTED
PXE_CPB_INITIALIZE
struct PXE_CPB_INITIALIZE
PXE_CPB_MCAST_IP_TO_MAC
struct PXE_CPB_MCAST_IP_TO_MAC
PXE_CPB_NVDATA_SPARSE
struct PXE_CPB_NVDATA_SPARSE
PXE_CPB_RECEIVE
struct PXE_CPB_RECEIVE
PXE_CPB_RECEIVE_FILTERS
struct PXE_CPB_RECEIVE_FILTERS
PXE_CPB_START_30
struct PXE_CPB_START_30
PXE_CPB_START_31
struct PXE_CPB_START_31
PXE_CPB_STATION_ADDRESS
struct PXE_CPB_STATION_ADDRESS
PXE_CPB_TRANSMIT
struct PXE_CPB_TRANSMIT
PXE_CPB_TRANSMIT_FRAGMENTS
struct PXE_CPB_TRANSMIT_FRAGMENTS
PXE_DB_GET_INIT_INFO
struct PXE_DB_GET_INIT_INFO
PXE_DB_GET_STATUS
struct PXE_DB_GET_STATUS
PXE_DB_INITIALIZE
struct PXE_DB_INITIALIZE
PXE_DB_MCAST_IP_TO_MAC
struct PXE_DB_MCAST_IP_TO_MAC
PXE_DB_NVDATA
struct PXE_DB_NVDATA
PXE_DB_RECEIVE
struct PXE_DB_RECEIVE
PXE_DB_RECEIVE_FILTERS
struct PXE_DB_RECEIVE_FILTERS
PXE_DB_STATION_ADDRESS
struct PXE_DB_STATION_ADDRESS
PXE_DB_STATISTICS
struct PXE_DB_STATISTICS
PXE_HW_UNDI
struct PXE_HW_UNDI
PXE_PCC_CONFIG_INFO
struct PXE_PCC_CONFIG_INFO
PXE_PCI_CONFIG_INFO
struct PXE_PCI_CONFIG_INFO
PXE_SW_UNDI
struct PXE_SW_UNDI

Unions

PXE_CPB_NVDATA_BULK
union PXE_CPB_NVDATA_BULK

When using bulk update, the size of the CPB structure must be the same size as the non-volatile NIC storage.

PXE_DEVICE
union PXE_DEVICE

Meta