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