How does XHCI handle USB Interrupt In endpoint polling?
Posted: Mon Aug 10, 2026 12:16 pm
I read @BenLunt's book on USB which is excellent on how OHCI, UHCI, and EHCI handle interrupt endpoints. Basically you have a frame list. You have a bunch of queues for 1ms, 2ms, 4ms, 8ms and so on and you link them into the framelist. So the 1ms one is linked in every entry, the 2ms ever second entry, 4ms every 4th and so on.
Now Ben mentions how XHCI does things in a better way. I actually re-read the book and I still can't figure out how this is done. The book seems like it's missing a chapter on how the USB stack looks for XHCI but it has it for OHCI, UHCI, and EHCI.
Now Ben mentions how XHCI does things in a better way. I actually re-read the book and I still can't figure out how this is done. The book seems like it's missing a chapter on how the USB stack looks for XHCI but it has it for OHCI, UHCI, and EHCI.
BenLunt wrote: ↑Sun Aug 30, 2020 7:20 pm As for the other two controllers, I feel that xHCI finally got it right, while EHCI was a kludge of backward compatibility and modern devices. Therefore, if I had to choose which of the four, I would choose in the following order, best/easiest to worst/most difficult--again, just being my opinion:
xHCI, OHCI, UHCI, EHCI.
Note that most new computers will include only an xHCI, since it will handle all speeds, where as the other controllers are speed specific.
Ben
- http://www.fysnet.net/the_universal_serial_bus.htm