summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2015-08-14 12:57:53 +0000
committerhselasky <hselasky@FreeBSD.org>2015-08-14 12:57:53 +0000
commit967fec97cb5698122643678ae26e2b88e7624681 (patch)
tree12297810bcaec77c250925fb8b4746d5b46faa4c /sys/boot
parent42db8f8b534a07a092edab7b1943bae61d9de688 (diff)
downloadFreeBSD-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.h3
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(...)
OpenPOWER on IntegriCloud