264 Hardware Reference Manual
Intel® IXP2800 Network Processor
Media and Switch Fabric Interface
Table 9 7 shows the TBUF partition options. Note that the choice of element size is independent for
each partition.
The Microengine can write data from Microengine S_TRANSFER_OUT registers to the TBUF
using the msf[write] instruction, where they specify the starting byte number (which must be
aligned to four bytes), and number of 32-bit words to write. The number in the instruction can be
either the number of 32-bit words, or number of 32-bit word pairs, using the single and double
instruction modifiers, respectively. Data is pulled from the Microengine to TBUF via S_Pull_Bus.
msf[write, $s_xfer_reg, src_op_1, src_op_2, ref_cnt], optional_token
The src_op_1 and src_op_2 operands are added together to form the address in TBUF (note that
the base address of the TBUF is 0x2000). The ref_cnt operand is the number of 32-bit words or
word pairs, which are pulled from sequential S_TRANSFER_OUT registers, starting with
$s_xfer_reg.
The Microengine can move data from DRAM to TBUF using the instruction
dram[tbuf_wr, --, src_op1, src_op2, ref_cnt], indirect_ref
The src_op_1 and src_op_2 operands are added together to form the address in DRAM, so the
dram instruction must use indirect mode to specify the TBUF address. The ref_cnt operand is the
number of 64-bit words that are written into TBUF.
Data is stored in big-endian order. The most significant (lowest numbered) byte of each 32-bit
word is transmitted first.
All elements within a TBUF partition are transmitted in the order. Control information associated
with the element (Section 98 and Section 99) defines which bytes are valid. The data from the
TBUF will be shifted and byte-aligned to the TDAT pins as required. Four parameters are defined.
Prepend Offset — Number of the first byte to send. This is information that is prepended onto the
payload, for example as a header. It need not start at offset 0 in the element.
Prepend Length — Number of bytes of prepended information. This can be 0 to 31 bytes. If it is 0,
then the Prepend Offset must also be 0.
Table 97. Number of Elements per TBUF Partition
TBUF_Partition Field TBUF_Element_Size_# Field
Partition Number
012
00 (1 partition)
00 (64 bytes) 128
Unused Unused01 (128 bytes) 64
10 (256 bytes) 32
01 (2 partitions)
00 (64 bytes) 96 32
Unused01 (128 bytes) 48 16
10 (256 bytes 24 8
10 (3 partitions)
00 (64 bytes) 64 48 16
01 (128 bytes) 32 24 8
10 (256 bytes) 16 12 4