Intel Extensible Firmware Interface User Manual
Page 952

Extensible Firmware Interface Specification
E-86
12/01/02
Version 1.10
OpFlags
Check the
!PXE.Implementation
flags to see if the network device support fragmented
packets. Select one of the OpFlags below so the UNDI knows what type of CPB is being used.
PXE_OPFLAGS_TRANSMIT_WHOLE
PXE_OPFLAGS_TRANSMIT_FRAGMENTED
In addition to selecting whether or not fragmented packets are being given, S/W UNDI needs to
know if it should block until the packets are transmitted. H/W UNDI cannot block, these two
OpFlag settings have no affect when used with H/W UNDI.
PXE_OPFLAGS_TRANSMIT_BLOCK
PXE_OPFLAGS_TRANSMIT_DONT_BLOCK
Preparing the CPB
If multiple frames per command are supported (see
!PXE.Implementation
flags), multiple
CPBs can be packed together. The
CDB.CPBsize
field lets the UNDI know how may frames are
to be transmitted.
Nonfragmented Frame
#pragma pack(1)
typedef struct s_pxe_cpb_transmit {
// Address of first byte of frame buffer. This is also the
// first byte of the media header. This address must be a
// processor-based address for S/W UNDI and a device-based
// address for H/W UNDI.
PXE_UINT64
FrameAddr;
// Length of the data portion of the frame buffer in bytes. Do
// not include the length of the media header.
PXE_UINT32
DataLen;
// Length of the media header in bytes.
PXE_UINT16
MediaheaderLen;
// Reserved, must be zero.
PXE_UINT16
reserved;
} PXE_CPB_TRANSMIT;
#pragma pack()