| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
filled by the callee, change the usb_allocmem() API to take another
argument for the flags.
ok mpi@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the import in '99 all buffers allocated using usb_allocmem() have
been mapped COHERENT. On some ARM SoCs, where the USB controller
is not coherent with the caches, this means the buffers were mapped
uncached. This drastically reduces the performance, especially on
reads.
We already added cache syncs before and after USB transfers, but so
far those have essentially been no-ops. Since other drivers make
use of the same allocation code, and those haven't been proven to
have correct syncs, we can't just remove the COHERENT flag.
This splits the allocation into coherent and non-coherent blocks.
All drivers who call usb_allocmem() themselves now pass a flag to
show they require coherent blocks. Onced verified that they also
work fine without coherent, or once they have been refactored, we
can remove this again.
On a ure(4) connected to an i.MX8MQ, the receive performance is
10x as fast as before. The Raspberry Pi's ethernet receive speed
doubled.
Debugged using dt(4)
Original diff from Marius Strobl
Feedback from kettenis@
Tested on an i.MX8MQ (arm64) by patrick@
Tested on a Raspberry Pi (arm64) by tobhe@
Tested on an ERL (octeon) by Janne Johansson
ok mpi@ gerhard@ tobhe@
|
|
|
|
| |
ok mpi@
|
| |
|
|
|
|
|
|
| |
interrupt context with assertwaitok(), which does work.
ok dlg@
|
|
|
|
|
| |
Errors will result in nice clean panic messages so we know what's wrong.
Reviewed by dhill visa natano jsg.
|
|
|
|
|
|
|
|
|
| |
This "cleverness" increase the risk of races due to caching and/or
prefetching between the HC and DMA engine. Many of the bug reports
on bugs@ involving memory corruptions in usb_allocmem() should be
easier to diagnose when not avoided with this change.
From Marius Strobl, ok kettenis@
|
|
|
|
| |
ok miod@
|
|
|
|
| |
after discussions with beck deraadt kettenis.
|
|
|
|
|
|
|
|
|
| |
definitions instead. We don't change usb.h for now to stay compatible
with userland.
Tested by mpi@ on macppc and myself on i386.
ok mpi@
|
| |
|
|
|
|
| |
"reads OK" claudio@
|
|
|
|
|
|
|
| |
apparently it reorders stores in a bad way. Mostly from NetBSD.
earlier diff tested by landry@ (who noticed the problems on macppc)
ok deraadt@
|
|
|
|
|
|
|
|
|
| |
Not sure what's more surprising: how long it took for NetBSD to
catch up to the rest of the BSDs (including UCB), or the amount of
code that NetBSD has claimed for itself without attributing to the
actual authors.
OK deraadt@
|
| |
|
|
|
|
|
|
|
| |
and it was not consistently used. It was confusing as it suggested these
functions were static, which they were not.
discussed with dlg and jsg, ok jsg.
|
|
|
|
| |
ok jsg@
|
| |
|
| |
|
|
|
|
| |
deraadt@ OK
|
|
|
|
| |
This includes numerous fixes and paves the way for usb 2.0 support.
|
| |
|
| |
|
|
|
|
| |
umass.c and ukbd.c as the diffs are a bit hairier.
|
| |
|
| |
|
|
|
|
|
|
| |
form of a diff to augustss@netbsd.org so that future syncs will be very easy.
This commit also adds support for ADMtek AN986 "Pegasus" based USB Ethernet,
CATC USB-EL1210A based USB Ethernet, and USB Printers (all untested).
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Make sure not to call tsleep() from suspend/resume routine.
Move more of the transfer completion processing to HC independent code.
Fix some problems with transfer abort & timeout.
Merge the soft_{td,qh} with the real {td,qh}. This saves time and space.
|
| |
|
|
|
|
| |
Diffs sent to augustsson.
|
|
|