kern/60109: [PATCH] Fix isochronous request handling in -STABLE
Bruce M Simpson
bms at spc.org
Wed Dec 10 02:30:25 PST 2003
>Number: 60109
>Category: kern
>Synopsis: [PATCH] Fix isochronous request handling in -STABLE
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Dec 10 02:30:21 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Bruce M Simpson
>Release: FreeBSD 5.2-CURRENT i386
>Organization:
>Environment:
System: FreeBSD saboteur.dek.spc.org 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Mon Dec 8 13:35:27 GMT 2003 bms at kimchi.dek.spc.org:/usr/src/sys/i386/compile/SABOTEUR i386
>Description:
Submitted on behalf of Damien Bergamini (ueagle(4) driver maintainer).
Record the length of an isochronous request correctly when handled.
This patch is against 4.8, I can extract a 4.9 diff from CVS if
you need me to.
>How-To-Repeat:
>Fix:
--- isoc-4-8-RELEASE.patch begins here ---
--- /sys/dev/usb/uhci.c 2003-09-04 14:34:29.000000000 +0200
+++ /sys/dev/usb/uhci.c 2003-09-04 14:35:43.000000000 +0200
@@ -1090,7 +1090,7 @@
if (xfer->nframes != 0) {
/* Isoc transfer, do things differently. */
uhci_soft_td_t **stds = upipe->u.iso.stds;
- int i, n, nframes;
+ int i, n, nframes, len;
DPRINTFN(5,("uhci_idone: ii=%p isoc ready\n", ii));
@@ -1108,7 +1108,9 @@
if (++n >= UHCI_VFRAMELIST_COUNT)
n = 0;
status = LE(std->td.td_status);
- actlen += UHCI_TD_GET_ACTLEN(status);
+ len = UHCI_TD_GET_ACTLEN(status);
+ xfer->frlengths[i] = len;
+ actlen += len;
}
upipe->u.iso.inuse -= nframes;
xfer->actlen = actlen;
--- isoc-4-8-RELEASE.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list