Datasheet
Intel
®
82599 10 GbE Controller—Errata
44
48 FCoE: Exhausted Receive Context Is not
Invalidated if Last Buffer Size Is Equal to User
Buffer Size
Problem:
If the last buffer of an FCoE context doesn’t have sufficient room for the FC payload, the context is
considered exhausted and must be invalidated by hardware.
The FCoE context is not invalidated as required under the following scenarios:
• FCoE last buffer size (FCDMARW.LASTSIZE) equals the exact user buffer size (FCBUFF.BUFFSIZE).
• FCoE DDP last payload byte in a mid packet written to the last byte of the last allocated buffer (the
packet fills in the exact buffer value).
• Extra FCoE packet(s) are received in the problematic context.
Implication:
• Invalid host memory access.
• Hardware does not invalidate FCoE context when exhausted and does not assert error status to
software.
Workaround:
FCoE context last buffer must be smaller than the context buffer size.
If it’s necessary to configure a last buffer to equal buffer size, the following flow should be used:
• Allocate the extra user-buffer in the context list. Set it in the context buffer list and then increment
FCBUFF.BUFFCNT to reflect a possible usage of an additional buffer.
• Set FCDMARW.LASTSIZE = 0x1.
• If flow ends and the extra buffer is used, the flow is invalid and exhausted.
If FCDMARW.LASTSIZE = FCBUFF.BUFFSIZE, the number of used DDP buffers is limited to 255. The
FCBUFF.BUFFCNT value should be programmed for less than 256.
Note: The workaround is included in ixgbe v3.2.10 and in our Windows* drivers, starting with
Release 16.4 version 2.9.66.0.
Status: B0=Yes; NoFix