Subject: kern/30323: Port should not be reset whilst trying to read first descriptor
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <dellis@conexant.com>
List: netbsd-bugs
Date: 05/24/2005 14:40:01
>Number: 30323
>Category: kern
>Synopsis: Port should not be reset whilst trying to read first descriptor
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue May 24 14:40:00 +0000 2005
>Originator: Dan Ellis
>Release: top of tree, sys/dev/usb/usb_subr.c r1.24
>Organization:
Conexant Systems
>Environment:
>Description:
In the function usbd_new_device, whilst trying to read the first descriptor, every 3 times round the loop the port is reset. This is bad because the address of the device isn't reset so subsequent attempts will all fail immediately.
>How-To-Repeat:
>Fix:
Either the resetting must not take place, or the address must be reset. This whole area probably needs reviewing, possibly doing the whole loop in the hub code.
Interestingly, windows always does 64 byte read of the device descriptor as the first operation, then resets the port before starting proper when it will now know the maxpacket size for EP0.