diff options
| author | hathach <[email protected]> | 2026-06-13 00:22:28 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-06-13 23:34:57 +0700 |
| commit | e47eabd49d1838dc2a4eb42b9bd167a1d24d7cf5 (patch) | |
| tree | 7fbf33b923099a531b19e22edcdd96e8b44be5c6 /examples/device/hid_multiple_interface | |
| parent | 3b73ee7e926d228bfa6ea4961d15a11a0310ed44 (diff) | |
dcd/musb: replay deferred SETUP instead of stalling EP0
dcd_edpt_stall(EP0 OUT) discarded the deferred SETUP and armed
SendStall. A deferred SETUP can only exist once the old transfer's
status stage was seen on the wire, so the request usbd is rejecting
(class callback failing at CONTROL_STAGE_DATA) already succeeded
host-side and the hardware already ACKed the next SETUP - the STALL
would land on that innocent request, which then fails host-side
without any tud callback ever seeing it. Skip the stall and replay
the deferred SETUP; the rejected transfer needs no wire-level stall
since it is already over.
Review follow-up for #3643 (dcd_musb.c l.860 finding).
Co-Authored-By: Claude Fable 5 <[email protected]>
Diffstat (limited to 'examples/device/hid_multiple_interface')
0 files changed, 0 insertions, 0 deletions
