System errors. The most probable source of system errors for isochronous transfers is underrun or overflow/overrun of the HC’s internal data buffers. An Isochronous TD is allowed to specify a single data packet of up to 1023 bytes. It is not expected that Host Controller implementations will contain sufficient internal buffering for the largest possible isochronous packet. Therefore, there is a possibility that the system will not provide timely access to the system bus to allow the Host Controller to keep up with the USB data rate in all cases. This can cause the HC’s internal buffer to overflow with data from an endpoint or to underrun and have no data to send to an endpoint when it is required. Buffer overrun happens only on IN endpoints and underrun happens only on OUT endpoints. When an underrun occurs, the Host Controller sets the ConditionCode of the data packet’s PacketStatusWord to BUFFERUNDERRUN and the size field is set to zero. When an overrun condition occurs, the Host Controller sets the ConditionCode of the data packet’s PacketStatusWord to BUFFEROVERRUN and writes the size field to indicate the last byte successfully received from the endpoint before the overrun condition occurred. All data received from the endpoint before the overrun condition occurred are stored in system memory. If, after detecting an overrun, the Host Controller detects a transmission error, then the transmission error is recorded in the PacketStatusWord instead of the overrun error.
Appears in 2 contracts
Sources: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant, Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant