Subject: kern/30003: Interrupt transfers of less than 128ms period don't work on the ehci driver
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <dellis@conexant.com>
List: netbsd-bugs
Date: 04/18/2005 09:22:00
>Number:         30003
>Category:       kern
>Synopsis:       Interrupt transfers of less than 128ms period don't work on the ehci driver
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 18 09:22:00 +0000 2005
>Originator:     Dan Ellis
>Release:        top of tree
>Organization:
Conexant systems
>Environment:
>Description:
When using the ehci driver (r1.91), if a device claims an interrupt endpoint with a period of less then 128ms, then it won't work (i.e. most devices except hubs which use interrupt transfers).


>How-To-Repeat:
Plug in a device which requires an interrupt endpoint with a period of less than 128ms - it won't work.
>Fix:
The bug is in the initialisation of the binary tree for the the interrupt queue heads. After carefully pointing the next pointer to the next level of the tree down, the next pointer is then NULLed. Removal of line 442 puts things right.

In fact removal of the restriction on devices being HIGH speed allows the driver to work (without noticable fault so far) with low and full speed devices.