Intel IXP2800 Personal Computer User Manual


 
Hardware Reference Manual 251
Intel
®
IXP2800 Network Processor
Media and Switch Fabric Interface
Section 8.2.7.1). The SPI-4 Control Word Type, EOPS, SOP, and ADR fields are placed
into a temporary status register. The Byte_Count field of the element status is set to 0x0.
As each Data Word is received, the data is written into the element, starting at offset 0x0
in the element, and Byte_Count is updated. Subsequent Data transfers are placed at higher
offsets (0x2, 0x4, etc.). The 16-bit Checksum Accumulator is also updated with the 1’s-
complement addition of each byte pair. (Note that, if the data transfer has an odd number
of bytes, a byte of zeros is appended as the more significant byte, before the checksum
addition is done.)
If a Control Word is received before the element is full — the element is marked valid. EOP
for the element is taken from the value of the EOPS field (see Table 83) from the just-received
Control Word. If the EOPS field from the just-received Control Word indicates that EOP is
asserted, then the Byte_Count for the element is decremented by 0 or 1, according to the EOPS
field (i.e., decrement by 0 if two bytes are valid, and by 1 if one byte is valid). If the EOPS
field indicates Abort, Byte_Count is rounded up to the next multiple of 4
. The temporary
status register value is put into Full_Element_List.
If the element becomes full before receipt of another Control Word — the element is marked
as pre-valid. The eventual status is based on the next SPI-4 transfer(s).
If the next transfer is a Data Word — the previous element is changed from pre-valid to valid.
The EOP for the element is 0. The temporary status register value is put into
Full_Element_List. Another available RBUF element is allocated, and the new data is written
into it. The temporary status for the new element gets the same ADR field of the previous
element, and SOP is set to 0. The Status word Byte_Count field is set to 0x2, and will be
incremented as more Data Words arrive. The Checksum Accumulator is cleared.
If the next transfer is a Control Word — the previous element is changed from pre-valid to
valid. EOP for the element is taken from the value of the EOPS field from the just-received
Control Word. If the EOPS field from the just-received Control Word indicates that EOP is
asserted, then the Byte_Count for the element is decremented by 0 or 1, according to the EOPS
field (i.e., decrement by 0 if two bytes valid, and by 1 if one byte is valid). The temporary
status register value is put into Full_Element_List.
Data received from the bus is placed into the element lowest offset first, in big-endian order
(i.e., with the first byte received in the most significant byte of the 32-bit word, etc.).