As suggested by Rajasekaran K, I am opening this new thread to discuss unclear documentation in SPRUGR9 (revision G) about the configuration of queues for the first buffer in a packet on an RX flow.
The relevant fields are RX_SIZE_THRESH_EN[2:0], RX_FDQ0_SZ0_QMGR/_QNUM, RX_FDQ0_SZ1_*, RX_FDQ0_SZ2_*, RX_FDQ0_SZ3_*, RX_SIZE_THRESH0, RX_SIZE_THRESH1 and RX_SIZE_THRESH2, but the descriptions of the fields in section 4.2.4 are not consistent.
The RX_SIZE_THRESHn fields describe a logic like this at the start of a packet with length 'pkt_size' bytes:
if (RX_SIZE_THRESH_EN[0] == 0) or (pkt_size <= RX_SIZE_THRESH0 * 32 bytes), use RX_FDQ0_SZ0_*
else if (RX_SIZE_THRESH_EN[1] == 0) or (pkt_size <= RX_SIZE_THRESH1 * 32 bytes), use RX_FDQ0_SZ1_*
else if (RX_SIZE_THRESH_EN[2] == 0) or (pkt_size <= RX_SIZE_THRESH2 * 32 bytes), use RX_FDQ0_SZ2_*
else (presumably, this is not explicitly documented) use RX_FDQ0_SZ3_*
(Section 2.7 of the document describes what happens if the packet is larger than this first buffer.)
The documentation for RX_FDQ0_SZ0_* matches the first line of this logic, except that it refers to an undefined RX_SIZE0 variable.
The documentation for RX_FDQ0_SZ1_* is identical to that for RX_FDQ0_SZ0_* except for spelling.
The documentation for RX_FDQ0_SZ2_* matches the second line, except for referring to rx_size2.
The documentation for RX_FDQ0_SZ3_* is close, except it refers to a rx_size3 value that does not have an obvious definition (maybe it should be rx_size2). I would suggest that the wording for this should be "in a packet whose size was greater than the rx_size2 value", though, rather than "in a packet whose size was not less than or equal to the rx_size2 value" -- the former is shorter and makes it harder to overlook the key word ("greater" vs "not"). The description for this field pair also says "This queue [manager/number] is selected if the packet length does not match any enabled size threshold." This last sentence conflicts with the documentation for RX_SIZE_THRESH_EN, which says that RX_FDQ0_SZ0_* gets used if all thresholds are disabled.
In an older thread, Sivaraj Kuppuraj agreed with the RX_FDQ0_SZ1_* problem, and suggested a documentation change that I think fixes that, but disagreed for RX_FDQ0_SZ3_*. This post is mostly meant to elaborate on why I think RX_FDQ0_SZ3_* is also flawed.
Michael