Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error handling in control transfers #348

Open
xross opened this issue Mar 9, 2022 · 0 comments
Open

Error handling in control transfers #348

xross opened this issue Mar 9, 2022 · 0 comments
Labels
bug Something isn't working

Comments

@xross
Copy link
Contributor

xross commented Mar 9, 2022

This pertains to section 8.5.3.3 Error Handling on the Last Data Transaction

Consider a Control write where the ACK of the last data OUT transaction goes missing en route to the host.

The xCORE will typically move on to the status stage, the host will retry the last data OUT. This will lead to the xCORE Nacking the host indefinitely. The xCORE need's to continue to accept the OUT's until the data stage is started.

Now consider a Control read where the last data IN transaction is lost from host -> device. The device will wait for another IN and an attempt to re-send. The host will attempt to move on to the status stage. The xCORE will typically Nak this indefinitely
as it waits for the retry on the IN. The xCORE needs to move on when the status stage is started.

Along with #341 this further identifies the need to more coarsely encapsulate control transfers. Essentially the XUD API provides too much granularity in this area allowing developers to shoot themselves in the foot and create out of spec devices.

Ultimately this is handling of rare error cases and should be prioritised accordingly.

@xross xross added the bug Something isn't working label Mar 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant