On Tue, Aug 30, 2022 at 07:17:19AM +0200, Marcus Glocker wrote: > Periodic transfers on dwctwo(4) work very unreliable today. If I want > to use my RPI3B+ as a workstation, the keyboard is working so > unreliable, I can't hardly log-in to X. Playing USB audio isn't fun > either. > > After circulating this diff internally for a while, and merging back the > received feedback, I'm sending it out here. This is version seven of > the diff. It includes another change, which is to run dwctwo(4) on > IPL_VM instead of IPL_USB, like NetBSD does it already, and as briefly > discussed with kettenis@. It enhances the reliability of the periodic > transfers further by prioritizing them against IPL_BIO interrupts, as > i.e. coming from bcmsdhost(4). > > The other majority of the diff contains the merging with the > Linux driver, which did a large rework on the periodic scheduling > to overcome similar issues we are seeing currently. Also being > in sync with the Linux driver will make future adaption of improvements > much more easy. Today we are so much out of sync, we can hardly adapt > patches from there. > > With this diff following tasks can run in parallel on my RPI3B+: > > * Reliable keyboard. > * USB audio streaming. > * USB video streaming. > * Disk operations. > > Still on high system interrupts, audio will crackle a bit, and the > keyboard will sometimes miss or repeat keystrokes. I have some ideas > on how to further improve that once the diff should make it in, like > scheduling continuous transfers for isoc and interrupt pipes. See my > recent diff about 'Continuous USB transfers'. > > I have tested it for quite a while on arm64 and regression tested on > octeon. As a summary; It's still not perfect, but it's better than > before, and I think it's the way forward to get still better :-) > > Further testing, comments, and OKs welcome.
In the meantime I also have tested the uaudio(4) recording on the RPI3B+; While with a snapshot kernel there is consistent noise in the recording, the recording with the synced driver is clear.