Data Sheet
Inline Functions—Ethernet Controller I210
279
The physical address of each buffer is written in the Buffer Addresses fields. The sizes of these buffers
are statically defined by BSIZEPACKET and BSIZEHEADER fields in the SRRCTL[n] registers.
The packet buffer address includes the address of the buffer assigned to the replicated packet,
including header and data payload portions of the received packet. In the case of a split header, only
the payload is included.
The header buffer address includes the address of the buffer that contains the header information. The
receive DMA module stores the header portion of the received packets into this buffer.
The I210 uses the packet replication or splitting feature when the SRRCTL[n].DESCTYPE is larger than
one. The software device driver must also program the buffer sizes in the SRRCTL[n] registers.
When header split is selected, the packet is split only on selected types of packets. A bit exists for each
option in PSRTYPE[n] registers so several options can be used in conjunction with them. If one or more
bits are set, the splitting is performed for the corresponding packet type. See Appendix A.1 for details
on the possible headers type supported).
Table 7-16 lists the behavior of the I210 in the different modes.
Table 7-16. I210 Split/Replicated Header Behavior
DESCTYPE Condition SPH HBO PKT_LEN HDR_LEN Header and Payload DMA
Split
1. Header can't be
decoded
0b 0b
Min(Packet length,
BSIZEPACKET)
N/A
Header + Payload Packet
buffer
2. Header <=
BSIZEHEADER
1b 0b
Min(Payload length,
BSIZEPACKET)
1
1. In a header only packet (such as TCP ACK packet), the PKT_LEN is zero.
Header size
Header Header buffer
Payload Packet buffer
3. Header >
BSIZEHEADER
1b 1b
Min(Packet length,
BSIZEPACKET)
Header size
2
2. The HDR_LEN doesn't reflect the actual data size stored in the Header buffer. It reflects the header size determined by the parser.
When timestamp in packet is enabled header size reflects the additional 16 bytes of the timestamp.
Header + Payload Packet
buffer
Replicate
1. Header can't be
decoded
0b
3
3. In replicate mode if SPH = 0b due to no match to any of the headers selected in the PSRTYPE[n] register, then the header size is
not relevant. In any case, even if SPH = 1b due to match to one of the headers selected in the PSRTYPE[n] register, the HDR_LEN
doesn't reflect the actual data size stored in the header buffer.
0b
Min(Packet length,
BSIZEPACKET)
N/A
(Header + Payload) (partial
5
)
Header buffer
Header + Payload Packet
buffer
2. Packet length <=
BSIZEHEADER
1b
3
0b
Min(Packet length,
BSIZEPACKET)
Header size
Header + Payload Header
buffer
Header + Payload Packet
buffer
3. Packet length >
BSIZEHEADER
1b
3
0b/1b
4
4. HBO is 1b if the header size is bigger than BSIZEHEADER and zero otherwise.
Min(Packet length,
BSIZEPACKET)
Header size
Header + Payload (partial
5
)
Header buffer
Header + Payload Packet
buffer
5. Partial means up to BSIZEHEADER.
Replicate
Large
Packet only
1. Header can't be
decoded
0b
3
0b
Min(Packet length,
BSIZEPACKET)
N/A
(Header + Payload) (partial
5
)
Header buffer
Header + Payload Packet
buffer
2. Packet length <=
BSIZEHEADER
1b
3
0b Packet length Header size
Header + Payload Header
buffer
2. Packet length >
BSIZEHEADER
1b
3
0b/1b
5
Min(Packet length,
BSIZEPACKET)
Header size
(Header + Payload) (partial
5
)
Header buffer
Header + Payload Packet
buffer