fixed EP0 control handling

This commit is contained in:
IngHK 2024-03-30 14:11:02 +01:00
parent 998090d1a7
commit 818c64efec

View File

@ -828,6 +828,10 @@ static void handle_xfer_done(uint8_t rhport, bool in_isr) {
// putchar('0' + ep->ep_num);
// putchar('0' + ep->xfer_attemp);
#endif
if (ep_num == 0) {
// NAK on control, retry immediately
hxfr_write(rhport, _hcd_data.hxfr, in_isr);
} else {
#if NAK_RETRY_HANDLING
ep->retry_pending = 1;
ep->xfer_pending = 0;
@ -840,10 +844,6 @@ static void handle_xfer_done(uint8_t rhport, bool in_isr) {
atomic_flag_clear(&_hcd_data.busy);
}
#else
if (ep_num == 0) {
// NAK on control, retry immediately
hxfr_write(rhport, _hcd_data.hxfr, in_isr);
}else {
// NAK on non-control, find next pending to switch
max3421_ep_t *next_ep = find_next_pending_ep(ep);
@ -856,8 +856,8 @@ static void handle_xfer_done(uint8_t rhport, bool in_isr) {
} else {
TU_ASSERT(false,);
}
}
#endif
}
return;
case HRSL_BAD_REQ: