summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/uvisor.c
diff options
context:
space:
mode:
authorjoe <joe@FreeBSD.org>2003-08-14 00:15:23 +0000
committerjoe <joe@FreeBSD.org>2003-08-14 00:15:23 +0000
commit52d14db571f7adb4f8901fe88346f5dea10ac336 (patch)
tree2fdeb196071beffdf1959796eaa3f76f347a04b7 /sys/dev/usb/uvisor.c
parentcbd02f7c9f1e970bbdc3738491ace0eac5fbd61b (diff)
downloadFreeBSD-src-52d14db571f7adb4f8901fe88346f5dea10ac336.zip
FreeBSD-src-52d14db571f7adb4f8901fe88346f5dea10ac336.tar.gz
Crank down UVISORBUFSIZE from 1024 to 64 to avoid a problem where
the Palm device and the USB host controller deadlock. The USB host controller is expecting an early-end-of-transmission packet with 0 data, and the Palm doesn't send one because it's already communicated the amount of data it's going to send in a header (which ucom/uvisor are oblivious to). This is the problem that has been known on the pilot-link lists as the "[Free]BSD USB problem", but not understood. Submitted by: Nathan J. Williams <nathanw@MIT.EDU>
Diffstat (limited to 'sys/dev/usb/uvisor.c')
-rw-r--r--sys/dev/usb/uvisor.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/dev/usb/uvisor.c b/sys/dev/usb/uvisor.c
index e22cf3a..72b64a4 100644
--- a/sys/dev/usb/uvisor.c
+++ b/sys/dev/usb/uvisor.c
@@ -144,7 +144,17 @@ struct uvisor_connection_info {
#define UVISOR_GET_PALM_INFORMATION_LEN 0x14
-#define UVISORIBUFSIZE 1024
+/*
+ * Crank down UVISORBUFSIZE from 1024 to 64 to avoid a problem where
+ * the Palm device and the USB host controller deadlock. The USB host
+ * controller is expecting an early-end-of-transmission packet with 0
+ * data, and the Palm doesn't send one because it's already
+ * communicated the amount of data it's going to send in a header
+ * (which ucom/uvisor are oblivious to). This is the problem that has
+ * been known on the pilot-link lists as the "[Free]BSD USB problem",
+ * but not understood.
+ */
+#define UVISORIBUFSIZE 64
#define UVISOROBUFSIZE 1024
struct uvisor_softc {
OpenPOWER on IntegriCloud