I am developing a custom USB device that makes use of isochronous IN transfers. It works fine from my laptop (xHCI) however on an embedded target (vortex86dx3, EHCI) I am seeing mysterious EFBIG errors. After adding lots of debug to ehci-sched I discovered that the EHCI register "FRINDEX" which is supposed to increase monotonically, is actually taking a jump backwards: [ 25.576198] ehci-pci 0000:00:0a.1: scan_isoc ehci_read_frame_index(ehci)=12318 [ 25.576523] ehci-pci 0000:00:0a.1: iso_stream_schedule ehci_read_frame_index(ehci)=12292 <- (count goes down!?) [ 25.576550] ehci-pci 0000:00:0a.1: request c302d23e would overflow (4104+288 >= 4096) The backwards jump screws up periodic scheduling and culminates in the EFBIG error I've been seeing. I'm suspecting buggy EHCI hardware, but my question is... could anything else cause this? Other misc background facts: - Host is an Adlink CM1 PC104 module which contains a Vortex86 DX3. USB device is an LPC4323 operating full-speed. - I instigate the error by softbooting the system. EFBIG typically happens within a minute or does not happen at all. - I also get EXDEV errors from "URB was too late" in sitd_complete(). I suspect this is related to the problem above but don't fully understand the mechanism. Thanks, Dan.