mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-30 22:20:17 +00:00
samd: Fix a lock-up situation at high traffic.
This PR fixes a transmit lock-up, which happens, when data is received and sent at the sime time at moderate to high speeds, like code which just echoes incoming data. In my case, an issue was reported here: https://github.com/micropython/micropython/issues/8521
This commit is contained in:
parent
3ead682af0
commit
bc4da2047b
@ -286,14 +286,14 @@ bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t
|
||||
{
|
||||
bank->PCKSIZE.bit.MULTI_PACKET_SIZE = total_bytes;
|
||||
bank->PCKSIZE.bit.BYTE_COUNT = 0;
|
||||
ep->EPSTATUSCLR.reg |= USB_DEVICE_EPSTATUSCLR_BK0RDY;
|
||||
ep->EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRFAIL0;
|
||||
ep->EPSTATUSCLR.reg = USB_DEVICE_EPSTATUSCLR_BK0RDY;
|
||||
ep->EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_TRFAIL0;
|
||||
} else
|
||||
{
|
||||
bank->PCKSIZE.bit.MULTI_PACKET_SIZE = 0;
|
||||
bank->PCKSIZE.bit.BYTE_COUNT = total_bytes;
|
||||
ep->EPSTATUSSET.reg |= USB_DEVICE_EPSTATUSSET_BK1RDY;
|
||||
ep->EPINTFLAG.reg |= USB_DEVICE_EPINTFLAG_TRFAIL1;
|
||||
ep->EPSTATUSSET.reg = USB_DEVICE_EPSTATUSSET_BK1RDY;
|
||||
ep->EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_TRFAIL1;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user