summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2009-03-20 22:15:22 +0000
committerthompsa <thompsa@FreeBSD.org>2009-03-20 22:15:22 +0000
commitff4719bc10a5ef46d4e9aa4dbcc54dfb648ceecb (patch)
treef333962d74ce9e0c12c8dbf2bf15277ee135f425
parent2deb944310c347df6f05fd33338759c892108f24 (diff)
downloadFreeBSD-src-ff4719bc10a5ef46d4e9aa4dbcc54dfb648ceecb.zip
FreeBSD-src-ff4719bc10a5ef46d4e9aa4dbcc54dfb648ceecb.tar.gz
MFp4 //depot/projects/usb @159423, 159497
- Return a Zero Length packet on read errors. - Allow for smaller buffer size. Submitted by: Hans Petter Selasky
-rw-r--r--sys/dev/usb/usb_generic.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/usb/usb_generic.c b/sys/dev/usb/usb_generic.c
index 6a1a9da..bdb19ba 100644
--- a/sys/dev/usb/usb_generic.c
+++ b/sys/dev/usb/usb_generic.c
@@ -416,6 +416,8 @@ ugen_default_read_callback(struct usb2_xfer *xfer)
default: /* Error */
if (xfer->error != USB_ERR_CANCELLED) {
+ /* send a zero length packet to userland */
+ usb2_fifo_put_data(f, xfer->frbuffers, 0, 0, 1);
f->flag_stall = 1;
f->fifo_zlp = 0;
usb2_transfer_start(f->xfer[1]);
@@ -1616,8 +1618,8 @@ ugen_set_buffer_size(struct usb2_fifo *f, void *addr)
{
usb2_frlength_t t;
- if (*(int *)addr < 1024)
- t = 1024;
+ if (*(int *)addr < 0)
+ t = 0; /* use "wMaxPacketSize" */
else if (*(int *)addr < (256 * 1024))
t = *(int *)addr;
else
OpenPOWER on IntegriCloud