Transfer Errors. There are several types of transfer errors that must be handled by the HC. They fall into the following categories: • transmission • sequence • system Transmission errors are errors that occur in communicating information over the USB wires and manifest themselves as CRC errors, BITSTUFFING errors, DEVICENOTRESPONDING errors. Sequence errors occur when the number of data bytes received does not match the number of bytes expected from an endpoint. System errors occur when the Host Controller has a problem resulting from the HC’s system environment that cannot otherwise be attributed to USB. 4.3.1.3.6.1 Transmission Errors For errors in this category, USB defines a policy that allows the transaction to be retried for up to three times before the transfer is failed and returned to the client. The Host Controller supports this policy with the ErrorCount field. This field is initialized to 0 by the Host Controller Driver when the General TD is queued. This field is updated after each transaction attempt. If there is no transmission error, the field is written to 0. If, however, there is a transmission error, the field is incremented. If the ErrorCount field reaches 2 (10b) and another transmission error occurs (the third error in a row), the TD is retired to the Done Queue and the endpoint is halted. Data toggle mismatches on input data are counted as transmission errors. The cause of a data toggle mismatch is either failure of the endpoint to receive an ACK or a broken device. Data received when the data toggle mismatches is discarded and never written to host memory. An error in the PID check field is counted as a transmission error and is reported with a ConditionCode of PIDCHECKFAILURE. 4.3.1.3.6.2 Sequence Errors Sequence errors occur only on reads from an endpoint to the Host Controller (IN). Sequence errors are not checked unless the data packet is received without a transmission error. There are two types of sequence errors: data overrun and data underrun. When either of these error conditions is encountered, the ConditionCode field is set accordingly, the General TD is retired, and the endpoint is halted. A data overrun error occurs when the number of bytes received from an endpoint exceeds either Maximum Packet Size or the number of bytes remaining in a General TD’s buffer. In the case of an overrun condition, the Host Controller writes to memory all of the data received up to the point where the data overrun condition was created. When the General TD is retired, CurrentBufferPointer points to the start of the data packet in error; however, all of the data bytes are valid and the data toggle will have advanced. The second type of sequence error, data underrun, occurs when the number of data bytes received from an endpoint is less than allowed. Even though a General TD is always retired when the number of bytes received from an endpoint is less than Maximum Packet Size, it does not always create an error condition. If the amount of received data fills the buffer exactly (last byte of a data packet written to BufferEnd), then a normal completion condition exists regardless of the size of the data packet. The General TD is retired with a ConditionCode of NOERROR and the endpoint is not halted. If the data packet does not fill the buffer exactly, the bufferRounding bit determines how the General TD will be retired. If the bufferRounding bit is not set, then the underrun is treated as an error condition. The ConditionCode field is set to DATAUNDERRUN, the General TD retired, and the endpoint is halted. If the bufferRounding field is set, then the General TD is retired without error. This condition is differentiated from a buffer-filled completion condition by CurrentBufferPointer not being zero when the General TD is retired. 4.3.1.3.6.3 System Errors For General TDs, system error sources are limited. In particular, an OpenHCI Host Controller will never have an overrun or underrun of its internal buffering for a General TD. An OpenHCI Host Controller is not allowed to issue an IN to an endpoint unless there is sufficient buffer space within the Host Controller to accept a data packet of Maximum Packet Size from the endpoint (64 bytes for a General TD) without having to access system memory. Similarly, the Host Controller is not allowed to issue an OUT or SETUP token unless it has pre-fetched to an internal buffer all the data that is sent to the endpoint in the data phase.
Appears in 1 contract
Samples: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant
Transfer Errors. There are several types of transfer Transfer errors that must be handled by the HC. They for isochronous errors fall into the following four categories: • ?? transmission • ?? sequence • system ?? time ?? system
4.3.2.3.5.1 Transmission Errors Since there is no handshake for isochronous transfers, the Host Controller can detect transmission errors are for transfers only from an endpoint to the host (IN). The error may be either a CRC error, a BITSTUFFING error, or a DEVICENOTRESPONDING error. If any of these errors that occur in communicating information over occurs during the USB wires transfer, the ConditionCode of PacketStatusWord[R] is set accordingly and manifest themselves as CRC errors, BITSTUFFING errors, DEVICENOTRESPONDING errors. Sequence errors occur when the number of data bytes received does not match size field reflects the number of bytes expected from an endpointreceived (up to the size of the buffer defined for the frame) and placed in the memory buffer. System errors occur when For a bit stuffing error, the Host Controller has a problem resulting from writes up only to the HC’s system environment that cannot otherwise be attributed to USB.
4.3.1.3.6.1 Transmission Errors For errors in this category, USB defines a policy that allows the transaction to be retried for up to three times last byte received before the transfer bit stuffing error is failed and returned to the client. The Host Controller supports this policy with the ErrorCount field. This field is initialized to 0 by the Host Controller Driver when the General TD is queued. This field is updated after each transaction attemptdetected. If there a transmission error is no transmission detected along with a sequence or system error, the field is written to 0. If, however, there is a transmission error, the field is incremented. If the ErrorCount field reaches 2 (10b) and another transmission error occurs (is the third error one that is reported in a row), the TD is retired to the Done Queue and the endpoint is haltedConditionCode . Data toggle mismatches on input data are counted as transmission errors. The cause of a data toggle mismatch is either failure of the endpoint to receive an ACK or a broken device. Data received when the data toggle mismatches is discarded and never written to host memory. An A PID check error in the PID check field is counted as a transmission error and from an endpoint is reported with a ConditionCode of PIDCHECKFAILURE.
4.3.1.3.6.2 4.3.2.3.5.2 Sequence Errors Sequence errors occur only on reads from an A sequence error occurs when the endpoint sends more or less data than is expected and a transmission error is not present. If the endpoint sends more data than will fit in the specified buffer, the ConditionCode for the PacketStatusWord is set to DATAOVERRUN and the size field is set to the size of the buffer. The Host Controller writes the received data to memory up to the limit of the buffer defined for the frame. If the endpoint sends less data than defined by the buffer, the ConditionCode for the PacketStatusWord is set to DATAUNDERRUN.
4.3.2.3.5.3 Time Errors Each packet has a specific frame in which it is to be transferred. It is possible that the Host Controller (IN). Sequence errors are cannot checked unless start or complete the data packet is received without a transmission errortransfer in the specified frame. There are two types manifestations of sequence errorsthis type of error: data overrun skipped packets and data underrunlate retirement of an Isochronous TD. When either of these error conditions Skipped packets occur if the Host Controller does not process an Isochronous TD in a frame for which the Isochronous TD has data. A skipped packet is encountered, the ConditionCode field indicated when an Offset/PacketStatusWord is set accordingly, to NOT ACCESSED after the General Isochronous TD is retired. This indicates that the Host Controller did not process the Isochronous TD for the frame and therefore did not change the Offset to a PacketStatusWord. When the Host Controller skips the last packet of the Isochronous TD, and a more significant error occurs. Since the endpoint is haltedIsochronous TD was not processed in the frame in which it should have been retired, the Isochronous TD remains on its ED’s queue. A data overrun error occurs when When the number of bytes received from an endpoint exceeds either Maximum Packet Size or Host Controller processes the number of bytes remaining Isochronous TD in a General TD’s bufferlatter frame, it finds that the time for expiration of the Isochronous TD has passed. In the case of an overrun conditionsuch cases, the Host Controller writes sets the ConditionCode for the Isochronous TD to memory all of DATAOVERRUN and retires the Isochronous TD (it does not, however, set the Halted bit in the ED). The Host Controller then accesses the next Isochronous TD for the same ED and processes it. Note: Setting DATAOVERRUN in the ConditionCode for the Isochronous TD rather than the PacketStatusWord indicates a time overrun. The same code in a PacketStatusWord will indicate a true data received up to the point where the data overrun condition was createdbuffer overrun. When the General TD is retired, CurrentBufferPointer points to the start of the 0xFFFC 0xFFFE 0xFFFE (-2) 3 Do nothing 0xFFFD 0xFFFE 0xFFFF (-1) 3 Do nothing 0xFFFE 0xFFFE 0x0000 3 Send data packet in error; however, all of the data bytes are valid and the data toggle will have advanced. The second type of sequence error, data underrun, occurs when the number of data bytes received from an endpoint is less than allowed. Even though a General TD is always retired when the number of bytes received from an endpoint is less than Maximum Packet Size, it 0 Host Controller does not always create an error condition. If the amount of received data fills the buffer exactly (last byte of a data packet written process Isochronous TD for three frames due to BufferEnd)schedule overrun, then a normal completion condition exists regardless of the size of the data packet. The General then... 0x0002 0xFFFE 0x0004 3 Retire Isochronous TD is retired with a ConditionCode of NOERROR and the endpoint is not halted. If the data packet does not fill the buffer exactly, the bufferRounding bit determines how the General TD will be retired. If the bufferRounding bit is not set, then the underrun is treated as an error condition. The ConditionCode field is set to DATAUNDERRUN, the General TD retired, and the endpoint is halted. If the bufferRounding field is set, then the General TD is retired without error. This condition is differentiated from a buffer-filled completion condition by CurrentBufferPointer not being zero when the General TD is retired.
4.3.1.3.6.3 System Errors For General TDs, system error sources are limited. In particular, an OpenHCI Host Controller will never have an overrun or underrun of its internal buffering for a General TD. An OpenHCI Host Controller is not allowed to issue an IN to an endpoint unless there is sufficient buffer space within the Host Controller to accept a data packet of Maximum Packet Size from the endpoint (64 bytes for a General TD) without having to access system memory. Similarly, the Host Controller is not allowed to issue an OUT or SETUP token unless it has pre-fetched to an internal buffer all the data that is sent to the endpoint DATAOVERRUN in the data phase.XXX.XX
Appears in 1 contract
Samples: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant
Transfer Errors. There are several types of transfer errors that must be handled by the HC. They fall into the following categories: • ?? transmission • ?? sequence • ?? system Transmission errors are errors that occur in communicating information over the USB wires and manifest themselves as CRC errors, BITSTUFFING errors, DEVICENOTRESPONDING errors. Sequence errors occur when the number of data bytes received does not match the number of bytes expected from an endpoint. System errors occur when the Host Controller has a problem resulting from the HC’s system environment that cannot otherwise be attributed to USB.
4.3.1.3.6.1 Transmission Errors For errors in this category, USB defines a policy that allows the transaction to be retried for up to three times before the transfer is failed and returned to the client. The Host Controller supports this policy with the ErrorCount field. This field is initialized to 0 by the Host Controller Driver when the General TD is queued. This field is updated after each transaction attempt. If there is no transmission error, the field is written to 0. If, however, there is a transmission error, the field is incremented. If the ErrorCount field reaches 2 (10b) and another transmission error occurs (the third error in a row), the TD is retired to the Done Queue and the endpoint is halted. Data toggle mismatches on input data are counted as transmission errors. The cause of a data toggle mismatch is either failure of the endpoint to receive an ACK or a broken device. Data received when the data toggle mismatches is discarded and never written to host memory. An error in the PID check field is counted as a transmission error and is reported with a ConditionCode of PIDCHECKFAILURE.
4.3.1.3.6.2 Sequence Errors Sequence errors occur only on reads from an endpoint to the Host Controller (IN). Sequence errors are not checked unless the data packet is received without a transmission error. There are two types of sequence errors: data overrun and data underrun. When either of these error conditions is encountered, the ConditionCode field is set accordingly, the General TD is retired, and the endpoint is halted. A data overrun error occurs when the number of bytes received from an endpoint exceeds either Maximum Packet Size or the number of bytes remaining in a General TD’s buffer. In the case of an overrun condition, the Host Controller writes to memory all of the data received up to the point where the data overrun condition was created. When the General TD is retired, CurrentBufferPointer points to the start of the data packet in error; however, all of the data bytes are valid and the data toggle will have advanced. The second type of sequence error, data underrun, occurs when the number of data bytes received from an endpoint is less than allowed. Even though a General TD is always retired when the number of bytes received from an endpoint is less than Maximum Packet Size, it does not always create an error condition. If the amount of received data fills the buffer exactly (last byte of a data packet written to BufferEnd), then a normal completion condition exists regardless of the size of the data packet. The General TD is retired with a ConditionCode of NOERROR and the endpoint is not halted. If the data packet does not fill the buffer exactly, the bufferRounding bit determines how the General TD will be retired. If the bufferRounding bit is not set, then the underrun is treated as an error condition. The ConditionCode field is set to DATAUNDERRUN, the General TD retired, and the endpoint is halted. If the bufferRounding field is set, then the General TD is retired without error. This condition is differentiated from a buffer-filled completion condition by CurrentBufferPointer not being zero when the General TD is retired.
4.3.1.3.6.3 System Errors For General TDs, system error sources are limited. In particular, an OpenHCI Host Controller will never have an overrun or underrun of its internal buffering for a General TD. An OpenHCI Host Controller is not allowed to issue an IN to an endpoint unless there is sufficient buffer space within the Host Controller to accept a data packet of Maximum Packet Size from the endpoint (64 bytes for a General TD) without having to access system memory. Similarly, the Host Controller is not allowed to issue an OUT or SETUP token unless it has pre-fetched to an internal buffer all the data that is sent to the endpoint in the data phase.
Appears in 1 contract
Samples: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant
Transfer Errors. There are several types of transfer Transfer errors that must be handled by the HC. They for isochronous errors fall into the following four categories: • transmission • sequence • system time • system
4.3.2.3.5.1 Transmission Errors Since there is no handshake for isochronous transfers, the Host Controller can detect transmission errors are for transfers only from an endpoint to the host (IN). The error may be either a CRC error, a BITSTUFFING error, or a DEVICENOTRESPONDING error. If any of these errors that occur in communicating information over occurs during the USB wires transfer, the ConditionCode of PacketStatusWord[R] is set accordingly and manifest themselves as CRC errors, BITSTUFFING errors, DEVICENOTRESPONDING errors. Sequence errors occur when the number of data bytes received does not match size field reflects the number of bytes expected from an endpointreceived (up to the size of the buffer defined for the frame) and placed in the memory buffer. System errors occur when For a bit stuffing error, the Host Controller has a problem resulting from writes up only to the HC’s system environment that cannot otherwise be attributed to USB.
4.3.1.3.6.1 Transmission Errors For errors in this category, USB defines a policy that allows the transaction to be retried for up to three times last byte received before the transfer bit stuffing error is failed and returned to the client. The Host Controller supports this policy with the ErrorCount field. This field is initialized to 0 by the Host Controller Driver when the General TD is queued. This field is updated after each transaction attemptdetected. If there a transmission error is no transmission detected along with a sequence or system error, the field is written to 0. If, however, there is a transmission error, the field is incremented. If the ErrorCount field reaches 2 (10b) and another transmission error occurs (is the third error one that is reported in a row), the TD is retired to the Done Queue and the endpoint is haltedConditionCode. Data toggle mismatches on input data are counted as transmission errors. The cause of a data toggle mismatch is either failure of the endpoint to receive an ACK or a broken device. Data received when the data toggle mismatches is discarded and never written to host memory. An A PID check error in the PID check field is counted as a transmission error and from an endpoint is reported with a ConditionCode of PIDCHECKFAILURE.
4.3.1.3.6.2 4.3.2.3.5.2 Sequence Errors Sequence errors occur only on reads from an A sequence error occurs when the endpoint sends more or less data than is expected and a transmission error is not present. If the endpoint sends more data than will fit in the specified buffer, the ConditionCode for the PacketStatusWord is set to DATAOVERRUN and the size field is set to the size of the buffer. The Host Controller writes the received data to memory up to the limit of the buffer defined for the frame. If the endpoint sends less data than defined by the buffer, the ConditionCode for the PacketStatusWord is set to DATAUNDERRUN.
4.3.2.3.5.3 Time Errors Each packet has a specific frame in which it is to be transferred. It is possible that the Host Controller (IN). Sequence errors are cannot checked unless start or complete the data packet is received without a transmission errortransfer in the specified frame. There are two types manifestations of sequence errorsthis type of error: data overrun skipped packets and data underrunlate retirement of an Isochronous TD. When either of these error conditions Skipped packets occur if the Host Controller does not process an Isochronous TD in a frame for which the Isochronous TD has data. A skipped packet is encountered, the ConditionCode field indicated when an Offset/PacketStatusWord is set accordingly, to NOT ACCESSED after the General Isochronous TD is retired. This indicates that the Host Controller did not process the Isochronous TD for the frame and therefore did not change the Offset to a PacketStatusWord. When the Host Controller skips the last packet of the Isochronous TD, and a more significant error occurs. Since the endpoint is haltedIsochronous TD was not processed in the frame in which it should have been retired, the Isochronous TD remains on its ED’s queue. A data overrun error occurs when When the number of bytes received from an endpoint exceeds either Maximum Packet Size or Host Controller processes the number of bytes remaining Isochronous TD in a General TD’s bufferlatter frame, it finds that the time for expiration of the Isochronous TD has passed. In the case of an overrun conditionsuch cases, the Host Controller writes sets the ConditionCode for the Isochronous TD to memory all of DATAOVERRUN and retires the Isochronous TD (it does not, however, set the Halted bit in the ED). The Host Controller then accesses the next Isochronous TD for the same ED and processes it. Note: Setting DATAOVERRUN in the ConditionCode for the Isochronous TD rather than the PacketStatusWord indicates a time overrun. The same code in a PacketStatusWord will indicate a true data received up to the point where the data overrun condition was createdbuffer overrun. When the General TD is retired, CurrentBufferPointer points to the start of the 0xFFFC 0xFFFE 0xFFFE (-2) 3 Do nothing 0xFFFD 0xFFFE 0xFFFF (-1) 3 Do nothing 0xFFFE 0xFFFE 0x0000 3 Send data packet in error; however, all of the data bytes are valid and the data toggle will have advanced. The second type of sequence error, data underrun, occurs when the number of data bytes received from an endpoint is less than allowed. Even though a General TD is always retired when the number of bytes received from an endpoint is less than Maximum Packet Size, it 0 Host Controller does not always create an error condition. If the amount of received data fills the buffer exactly (last byte of a data packet written process Isochronous TD for three frames due to BufferEnd)schedule overrun, then a normal completion condition exists regardless of the size of the data packet. The General then... 0x0002 0xFFFE 0x0004 3 Retire Isochronous TD is retired with a ConditionCode of NOERROR and the endpoint is not halted. If the data packet does not fill the buffer exactly, the bufferRounding bit determines how the General TD will be retired. If the bufferRounding bit is not set, then the underrun is treated as an error condition. The ConditionCode field is set to DATAUNDERRUN, the General TD retired, and the endpoint is halted. If the bufferRounding field is set, then the General TD is retired without error. This condition is differentiated from a buffer-filled completion condition by CurrentBufferPointer not being zero when the General TD is retired.
4.3.1.3.6.3 System Errors For General TDs, system error sources are limited. In particular, an OpenHCI Host Controller will never have an overrun or underrun of its internal buffering for a General TD. An OpenHCI Host Controller is not allowed to issue an IN to an endpoint unless there is sufficient buffer space within the Host Controller to accept a data packet of Maximum Packet Size from the endpoint (64 bytes for a General TD) without having to access system memory. Similarly, the Host Controller is not allowed to issue an OUT or SETUP token unless it has pre-fetched to an internal buffer all the data that is sent to the endpoint DATAOVERRUN in the data phase.XXX.XX
Appears in 1 contract
Samples: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant