Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
32/64-Bit UNDI Specification
Version 1.10 12/01/02 E-57
Preparing the CPB
If the MemoryRequired field returned in the PXE_DB_GET_INIT_INFO structure is zero, the
Initialize command does not need to be given a memory buffer or even a CPB structure. If the
MemoryRequired field is nonzero, the Initialize command does need a memory buffer.
#pragma pack(1)
typedef struct s_pxe_cpb_initialize {
// Address of first (lowest) byte of the memory buffer.
// This buffer must be in contiguous physical memory and cannot
// be swapped out. The UNDI will be using this for transmit
// and receive buffering. This address must be a processor-
// based address for S/W UNDI and a device-based address for
// H/W UNDI.
PXE_UINT64 MemoryAddr;
// MemoryLength must be greater than or equal to MemoryRequired
// returned by the Get Init Info command.
PXE_UINT32 MemoryLength;
// Desired link speed in Mbit/sec. Common ethernet values are
// 10, 100 and 1000. Setting a value of zero will auto-detect
// and/or use the default link speed (operation depends on
// UNDI/NIC functionality).
PXE_UINT32 LinkSpeed;
// Suggested number and size of receive and transmit buffers to
// allocate. If MemoryAddr and MemoryLength are nonzero, this
// allocation comes out of the supplied memory buffer. If
// MemoryAddr and MemoryLength are zero, this allocation comes
// out of memory on the NIC.
// If these fields are set to zero, the UNDI will allocate
// buffer counts and sizes as it sees fit.
PXE_UINT16 TxBufCnt;
PXE_UINT16 TxBufSize;
PXE_UINT16 RxBufCnt;
PXE_UINT16 RxBufSize;