diff options
author | hselasky <hselasky@FreeBSD.org> | 2015-08-14 12:57:53 +0000 |
---|---|---|
committer | hselasky <hselasky@FreeBSD.org> | 2015-08-14 12:57:53 +0000 |
commit | 967fec97cb5698122643678ae26e2b88e7624681 (patch) | |
tree | 12297810bcaec77c250925fb8b4746d5b46faa4c /sys/boot | |
parent | 42db8f8b534a07a092edab7b1943bae61d9de688 (diff) | |
download | FreeBSD-src-967fec97cb5698122643678ae26e2b88e7624681.zip FreeBSD-src-967fec97cb5698122643678ae26e2b88e7624681.tar.gz |
Improve the realtime properties of USB transfers for embedded systems
like RPI-B and RPI-2.
Description of problem:
USB transfers can process data in their callbacks sometimes causing
unacceptable latency for other USB transfers. Separate BULK completion
callbacks from CONTROL, INTERRUPT and ISOCHRONOUS callbacks, and give
BULK completion callbacks lesser execution priority than the
others. This way USB audio won't be interfered by heavy USB ethernet
usage for example.
Further serve USB transfer completion in a round robin fashion,
instead of only serving the most CPU hungry. This has been done by
adding a third flag to USB transfer queue structure which keeps track
of looping callbacks. The "command" callback function then decides
what to do when looping.
MFC after: 2 weeks
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/kshim/bsd_kernel.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/boot/kshim/bsd_kernel.h b/sys/boot/kshim/bsd_kernel.h index 0e40fb0..aba8131 100644 --- a/sys/boot/kshim/bsd_kernel.h +++ b/sys/boot/kshim/bsd_kernel.h @@ -43,7 +43,8 @@ #define M_USBDEV 0 #define USB_PROC_MAX 3 #define USB_BUS_GIANT_PROC(bus) (usb_process + 2) -#define USB_BUS_NON_GIANT_PROC(bus) (usb_process + 2) +#define USB_BUS_NON_GIANT_BULK_PROC(bus) (usb_process + 2) +#define USB_BUS_NON_GIANT_ISOC_PROC(bus) (usb_process + 2) #define USB_BUS_EXPLORE_PROC(bus) (usb_process + 0) #define USB_BUS_CONTROL_XFER_PROC(bus) (usb_process + 1) #define SYSCTL_DECL(...) |