USB keyboard/mouse combo fails to attach

Hans Petter Selasky hselasky at c2i.net
Sun Jun 21 00:55:54 UTC 2009


On Saturday 20 June 2009 21:08:20 Jason Harmening wrote:
> Hi all,
>
> I have a USB keyboard/mouse combo that sometimes fails to attach in
> -CURRENT, with the following error:
>
> uhub_reattach_port:416: could not allocate new device!
>
> This failure happens roughly every other time the device enumerates;
> generally it will attach and work fine if I just re-plug it.
>
> It looks like a stall while retrieving the device descriptor, though the
> device never had a problem attaching in 7-STABLE. I've included what (I
> think) are the relevant lines from my syslog w/ hw.usb.debug=15.
>
> Any help would be greatly appreciated.
>
> Thanks,
> Jason
>
>
> Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:307: Handle Request
> function is set Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:272:
> udev=0xffffff0005bb8000 bmRequestType=0x23 bRequest=0x01 wValue=0x0014
> wIndex=0x0001 wLength=0x0000 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:307: Handle Request function is set Jun 20 13:53:09
> riviera kernel: usbd_req_reset_port:659: port 1 reset returning
> error=USB_ERR_NORMAL_COMPLETION Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:272: udev=0xffffff0005bb8000 bmRequestType=0xa3
> bRequest=0x00 wValue=0x0000 wIndex=0x0001 wLength=0x0004 Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:307: Handle Request function is set
> Jun 20 13:53:09 riviera kernel: usb_alloc_device:1432:
> parent_dev=0xffffff0005be1400, bus=0xffffff80005e8db0,
> parent_hub=0xffffff0005bb8000, depth=1, port_index=0, port_no=1, speed=1,
> usb_mode=0 Jun 20 13:53:09 riviera kernel: usb_set_device_state:2421: udev
> 0xffffff0016575800 state DETACHED -> POWERED Jun 20 13:53:09 riviera
> kernel: usbd_req_set_address:1160: setting device address=2 Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:272: udev=0xffffff0016575800
> bmRequestType=0x00 bRequest=0x05 wValue=0x0002 wIndex=0x0000 wLength=0x0000
> Jun 20 13:53:09 riviera kernel: usbd_get_endpoint:184:
> udev=0xffffff0016575800 iface_index=0 address=0x0 type=0x0 dir=0xff index=0
> Jun 20 13:53:09 riviera last message repeated 3 times
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_callback_wrapper:1922: case 1-4 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_callback:75: st=0
> Jun 20 13:53:09 riviera kernel: usbd_transfer_submit:1381:
> xfer=0xffffff8000aa0148, endpoint=0xffffff00165758d8, nframes=1, dir=write
> Jun 20 13:53:09 riviera kernel: usb_dump_endpoint:
> endpoint=0xffffff00165758d8 edesc=0xffffff0016575de4 isoc_next=0
> toggle_next=0 bEndpointAddress=0x00 Jun 20 13:53:09 riviera kernel:
> usb_dump_queue: endpoint=0xffffff00165758d8 xfer: Jun 20 13:53:09 riviera
> kernel: usbd_transfer_submit:1400: open
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0xffffff8000aa0148 (leave) Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usbd_pipe_enter:1568: enter
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_start:2296: start
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb
> 0xffffff8000aa0148 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2077: err=USB_ERR_NORMAL_COMPLETION Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper_sub:2430:
> xfer=0xffffff8000aa0148 endpoint=0xffffff00165758d8 sts=0 alen=8, slen=8,
> afrm=1, nfrm=1 Jun 20 13:53:09 riviera kernel:
> usbd_callback_wrapper_sub:2466: xfer=0xffffff8000aa0148: Control transfer
> active on endpoint=0xffffff00165758d8 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_callback:75: st=1
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0 (leave)
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_callback_wrapper:1922: case 1-4 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_callback:75: st=0
> Jun 20 13:53:09 riviera kernel: usbd_transfer_submit:1381:
> xfer=0xffffff8000aa0148, endpoint=0xffffff00165758d8, nframes=1, dir=write
> Jun 20 13:53:09 riviera kernel: usb_dump_endpoint:
> endpoint=0xffffff00165758d8 edesc=0xffffff0016575de4 isoc_next=0
> toggle_next=1 bEndpointAddress=0x00 Jun 20 13:53:09 riviera kernel:
> usb_dump_queue: endpoint=0xffffff00165758d8 xfer: Jun 20 13:53:09 riviera
> kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun 20
> 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0xffffff8000aa0148
> (leave) Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_enter:1568: enter
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_start:2296: start
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb
> 0xffffff8000aa0148 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2077: err=USB_ERR_NORMAL_COMPLETION Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper_sub:2430:
> xfer=0xffffff8000aa0148 endpoint=0xffffff00165758d8 sts=0 alen=0, slen=0,
> afrm=1, nfrm=1 Jun 20 13:53:09 riviera kernel: usbd_do_request_callback:75:
> st=1
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0 (leave)
> Jun 20 13:53:09 riviera kernel: usb_set_device_state:2421: udev
> 0xffffff0016575800 state POWERED -> ADDRESSED Jun 20 13:53:09 riviera
> kernel: usbd_req_get_desc:699: id=0, type=1, index=0, max_len=8 Jun 20
> 13:53:09 riviera kernel: usbd_do_request_flags:272: udev=0xffffff0016575800
> bmRequestType=0x80 bRequest=0x06 wValue=0x0100 wIndex=0x0000 wLength=0x0008
> Jun 20 13:53:09 riviera kernel: usbd_transfer_stop:1675: close
> Jun 20 13:53:09 riviera kernel: usbd_transfer_done:2077:
> err=USB_ERR_CANCELLED Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2084: not transferring Jun 20 13:53:09 riviera kernel:
> usbd_get_endpoint:184: udev=0xffffff0016575800 iface_index=0 address=0x0
> type=0x0 dir=0xff index=0 Jun 20 13:53:09 riviera last message repeated 3
> times
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_callback_wrapper:1922: case 1-4 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_callback:75: st=0
> Jun 20 13:53:09 riviera kernel: usbd_transfer_submit:1381:
> xfer=0xffffff8000aa0148, endpoint=0xffffff00165758d8, nframes=2, dir=write
> Jun 20 13:53:09 riviera kernel: usb_dump_endpoint:
> endpoint=0xffffff00165758d8 edesc=0xffffff0016575de4 isoc_next=0
> toggle_next=0 bEndpointAddress=0x00 Jun 20 13:53:09 riviera kernel:
> usb_dump_queue: endpoint=0xffffff00165758d8 xfer: Jun 20 13:53:09 riviera
> kernel: usbd_transfer_submit:1400: open
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0xffffff8000aa0148 (leave) Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0xffffff8000aa0148
> (leave) Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_enter:1568: enter
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_start:2296: start
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb
> 0xffffff8000aa0148 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2077: err=USB_ERR_NORMAL_COMPLETION Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper_sub:2430:
> xfer=0xffffff8000aa0148 endpoint=0xffffff00165758d8 sts=0 alen=16, slen=16,
> afrm=2, nfrm=2 Jun 20 13:53:09 riviera kernel: usbd_do_request_callback:75:
> st=1
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0 (leave)
> Jun 20 13:53:09 riviera kernel: usb_alloc_device:1622: adding unit addr=2,
> rev=110, class=0, subclass=0, protocol=0, maxpacket=8, len=8, speed=1 Jun
> 20 13:53:09 riviera kernel: usbd_req_get_device_desc:1023:
> Jun 20 13:53:09 riviera kernel: usbd_req_get_desc:699: id=0, type=1,
> index=0, max_len=18 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:272: udev=0xffffff0016575800 bmRequestType=0x80
> bRequest=0x06 wValue=0x0100 wIndex=0x0000 wLength=0x0012 Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_do_request_callback:75: st=0
> Jun 20 13:53:09 riviera kernel: usbd_transfer_submit:1381:
> xfer=0xffffff8000aa0148, endpoint=0xffffff00165758d8, nframes=2, dir=read
> Jun 20 13:53:09 riviera kernel: usb_dump_endpoint:
> endpoint=0xffffff00165758d8 edesc=0xffffff0016575de4 isoc_next=0
> toggle_next=0 bEndpointAddress=0x00 Jun 20 13:53:09 riviera kernel:
> usb_dump_queue: endpoint=0xffffff00165758d8 xfer: Jun 20 13:53:09 riviera
> kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun 20
> 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0xffffff8000aa0148
> (leave) Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0xffffff8000aa0148 (leave) Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usbd_pipe_enter:1568: enter
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_start:2296: start
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb
> 0xffffff8000aa0148 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2077: err=USB_ERR_STALLED Jun 20 13:53:09 riviera
> kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper_sub:2430:
> xfer=0xffffff8000aa0148 endpoint=0xffffff00165758d8 sts=22 alen=8, slen=26,
> afrm=1, nfrm=2 Jun 20 13:53:09 riviera kernel: usbd_do_request_callback:75:
> st=2
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0 (leave)
> Jun 20 13:53:09 riviera kernel: usbd_transfer_stop:1675: close
> Jun 20 13:53:09 riviera kernel: usbd_transfer_done:2077:
> err=USB_ERR_CANCELLED Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2084: not transferring Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:272: udev=0xffffff0005bb8800 bmRequestType=0xa3
> bRequest=0x00 wValue=0x0000 wIndex=0x0001 wLength=0x0004 Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:307: Handle Request function is set
> Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:272:
> udev=0xffffff0005bb8800 bmRequestType=0xa3 bRequest=0x00 wValue=0x0000
> wIndex=0x0002 wLength=0x0004 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:307: Handle Request function is set Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:272: udev=0xffffff0005bb8800
> bmRequestType=0xa3 bRequest=0x00 wValue=0x0000 wIndex=0x0003 wLength=0x0004
> Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:307: Handle Request
> function is set Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:272:
> udev=0xffffff0005bb8800 bmRequestType=0xa3 bRequest=0x00 wValue=0x0000
> wIndex=0x0004 wLength=0x0004 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:307: Handle Request function is set Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:272: udev=0xffffff0005bb8800
> bmRequestType=0xa3 bRequest=0x00 wValue=0x0000 wIndex=0x0005 wLength=0x0004
> Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:307: Handle Request
> function is set Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:272:
> udev=0xffffff0005bb8800 bmRequestType=0xa3 bRequest=0x00 wValue=0x0000
> wIndex=0x0006 wLength=0x0004 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:307: Handle Request function is set Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:272: udev=0xffffff0005bb5800
> bmRequestType=0xa3 bRequest=0x00 wValue=0x0000 wIndex=0x0001 wLength=0x0004
> Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:307: Handle Request
> function is set Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:272:
> udev=0xffffff0005bb5800 bmRequestType=0xa3 bRequest=0x00 wValue=0x0000
> wIndex=0x0002 wLength=0x0004 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:307: Handle Request function is set Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:272: udev=0xffffff0005bb5800
> bmRequestType=0xa3 bRequest=0x00 wValue=0x0000 wIndex=0x0003 wLength=0x0004
> Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:307: Handle Request
> function is set Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:272:
> udev=0xffffff0005bb5800 bmRequestType=0xa3 bRequest=0x00 wValue=0x0000
> wIndex=0x0004 wLength=0x0004 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:307: Handle Request function is set Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:272: udev=0xffffff0005bb5800
> bmRequestType=0xa3 bRequest=0x00 wValue=0x0000 wIndex=0x0005 wLength=0x0004
> Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:307: Handle Request
> function is set Jun 20 13:53:09 riviera kernel: usbd_do_request_flags:272:
> udev=0xffffff0005bb5800 bmRequestType=0xa3 bRequest=0x00 wValue=0x0000
> wIndex=0x0006 wLength=0x0004 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:307: Handle Request function is set Jun 20 13:53:09
> riviera kernel: usbd_do_request_flags:272: udev=0xffffff0016575800
> bmRequestType=0x80 bRequest=0x06 wValue=0x0100 wIndex=0x0000 wLength=0x0012
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_callback_wrapper:1922: case 1-4 Jun 20 13:53:09 riviera kernel:
> usbd_do_request_callback:75: st=0
> Jun 20 13:53:09 riviera kernel: usbd_transfer_submit:1381:
> xfer=0xffffff8000aa0148, endpoint=0xffffff00165758d8, nframes=2, dir=read
> Jun 20 13:53:09 riviera kernel: usb_dump_endpoint:
> endpoint=0xffffff00165758d8 edesc=0xffffff0016575de4 isoc_next=0
> toggle_next=1 bEndpointAddress=0x00 Jun 20 13:53:09 riviera kernel:
> usb_dump_queue: endpoint=0xffffff00165758d8 xfer: Jun 20 13:53:09 riviera
> kernel: usbd_transfer_submit:1400: open
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0xffffff8000aa0148 (leave) Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0xffffff8000aa0148
> (leave) Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_enter:1568: enter
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_start:2296: start
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb
> 0xffffff8000aa0148 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2077: err=USB_ERR_STALLED Jun 20 13:53:09 riviera
> kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper_sub:2430:
> xfer=0xffffff8000aa0148 endpoint=0xffffff00165758d8 sts=22 alen=8, slen=26,
> afrm=1, nfrm=2 Jun 20 13:53:09 riviera kernel: usbd_do_request_callback:75:
> st=2
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0 (leave)
> Jun 20 13:53:09 riviera kernel: usbd_transfer_stop:1675: close
> Jun 20 13:53:09 riviera kernel: usbd_transfer_done:2077:
> err=USB_ERR_CANCELLED Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2084: not transferring Jun 20 13:53:09 riviera kernel:
> usbd_do_request_flags:272: udev=0xffffff0016575800 bmRequestType=0x80
> bRequest=0x06 wValue=0x0100 wIndex=0x0000 wLength=0x0012 Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_do_request_callback:75: st=0
> Jun 20 13:53:09 riviera kernel: usbd_transfer_submit:1381:
> xfer=0xffffff8000aa0148, endpoint=0xffffff00165758d8, nframes=2, dir=read
> Jun 20 13:53:09 riviera kernel: usb_dump_endpoint:
> endpoint=0xffffff00165758d8 edesc=0xffffff0016575de4 isoc_next=0
> toggle_next=1 bEndpointAddress=0x00 Jun 20 13:53:09 riviera kernel:
> usb_dump_queue: endpoint=0xffffff00165758d8 xfer: Jun 20 13:53:09 riviera
> kernel: usbd_transfer_submit:1400: open
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0xffffff8000aa0148 (leave) Jun 20 13:53:09
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0xffffff8000aa0148
> (leave) Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_enter:1568: enter
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:09 riviera kernel:
> usbd_pipe_start:2296: start
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb
> 0xffffff8000aa0148 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2077: err=USB_ERR_STALLED Jun 20 13:53:09 riviera
> kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:09 riviera kernel: usbd_callback_wrapper_sub:2430:
> xfer=0xffffff8000aa0148 endpoint=0xffffff00165758d8 sts=22 alen=8, slen=26,
> afrm=1, nfrm=2 Jun 20 13:53:09 riviera kernel: usbd_do_request_callback:75:
> st=2
> Jun 20 13:53:09 riviera kernel: usb_command_wrapper:2543: cb 0 (leave)
> Jun 20 13:53:09 riviera kernel: usbd_transfer_stop:1675: close
> Jun 20 13:53:09 riviera kernel: usbd_transfer_done:2077:
> err=USB_ERR_CANCELLED Jun 20 13:53:09 riviera kernel:
> usbd_transfer_done:2084: not transferring Jun 20 13:53:10 riviera kernel:
> usbd_do_request_flags:272: udev=0xffffff0016575800 bmRequestType=0x80
> bRequest=0x06 wValue=0x0100 wIndex=0x0000 wLength=0x0012 Jun 20 13:53:10
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:10 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:10 riviera kernel: usbd_do_request_callback:75: st=0
> Jun 20 13:53:10 riviera kernel: usbd_transfer_submit:1381:
> xfer=0xffffff8000aa0148, endpoint=0xffffff00165758d8, nframes=2, dir=read
> Jun 20 13:53:10 riviera kernel: usb_dump_endpoint:
> endpoint=0xffffff00165758d8 edesc=0xffffff0016575de4 isoc_next=0
> toggle_next=1 bEndpointAddress=0x00 Jun 20 13:53:10 riviera kernel:
> usb_dump_queue: endpoint=0xffffff00165758d8 xfer: Jun 20 13:53:10 riviera
> kernel: usbd_transfer_submit:1400: open
> Jun 20 13:53:10 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:10 riviera kernel:
> usb_command_wrapper:2543: cb 0xffffff8000aa0148 (leave) Jun 20 13:53:10
> riviera kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun
> 20 13:53:10 riviera kernel: usb_command_wrapper:2543: cb 0xffffff8000aa0148
> (leave) Jun 20 13:53:10 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:10 riviera kernel:
> usbd_pipe_enter:1568: enter
> Jun 20 13:53:10 riviera kernel: usb_command_wrapper:2541: cb
> 0xffffff8000aa0148 (enter) Jun 20 13:53:10 riviera kernel:
> usbd_pipe_start:2296: start
> Jun 20 13:53:10 riviera kernel: usb_command_wrapper:2543: cb
> 0xffffff8000aa0148 (leave) Jun 20 13:53:10 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:10 riviera kernel:
> usb_command_wrapper:2543: cb 0 (leave) Jun 20 13:53:10 riviera kernel:
> usbd_transfer_done:2077: err=USB_ERR_STALLED Jun 20 13:53:10 riviera
> kernel: usb_command_wrapper:2541: cb 0xffffff8000aa0148 (enter) Jun 20
> 13:53:10 riviera kernel: usbd_callback_wrapper:1922: case 1-4 Jun 20
> 13:53:10 riviera kernel: usbd_callback_wrapper_sub:2430:
> xfer=0xffffff8000aa0148 endpoint=0xffffff00165758d8 sts=22 alen=8, slen=26,
> afrm=1, nfrm=2 Jun 20 13:53:10 riviera kernel: usbd_do_request_callback:75:
> st=2
> Jun 20 13:53:10 riviera kernel: usb_command_wrapper:2543: cb 0 (leave)
> Jun 20 13:53:10 riviera kernel: usbd_transfer_stop:1675: close
> Jun 20 13:53:10 riviera kernel: usbd_transfer_done:2077:
> err=USB_ERR_CANCELLED Jun 20 13:53:10 riviera kernel:
> usbd_transfer_done:2084: not transferring Jun 20 13:53:10 riviera kernel:
> usb_alloc_device:1628: addr=2, getting full desc failed Jun 20 13:53:10
> riviera kernel: usb_free_device:1920: udev=0xffffff0016575800 port=1 Jun 20
> 13:53:10 riviera kernel: usb_set_device_state:2421: udev 0xffffff0016575800
> state ADDRESSED -> DETACHED Jun 20 13:53:10 riviera kernel: ugen4.2:
> <(null)> at usbus4 (disconnected) Jun 20 13:53:10 riviera kernel:
> usb_detach_device:1037: udev=0xffffff0016575800 Jun 20 13:53:10 riviera
> kernel: usb_cdev_free:1887: Freeing device nodes Jun 20 13:53:10 riviera
> kernel: usb_config_parse:618: iface_index=255 cmd=1 Jun 20 13:53:10 riviera
> kernel: uhub_reattach_port:416: could not allocate new device!
>

In /sys/dev/usb/usb_device.c :

There is some code to re-enumerate the device, when errors are detected. Maybe 
we should add an automatic re-enumeration in case the full device descriptor 
cannot be retrieved aswell.

Search for:
       err = usbd_req_get_desc(udev, NULL, NULL, &udev->ddesc,
            USB_MAX_IPACKET, USB_MAX_IPACKET, 0, UDESC_DEVICE, 0, 0);
        if (err) {
                DPRINTFN(0, "getting device descriptor "
                    "at addr %d failed, %s!\n", udev->address,
                    usbd_errstr(err));
                /* XXX try to re-enumerate the device */
                err = usbd_req_re_enumerate(udev, NULL);
                if (err) {
                        goto done;
                }
        }

Some lines down you patch the code like this:

        /* get the full device descriptor */
        err = usbd_req_get_device_desc(udev, NULL, &udev->ddesc);
        if (err) {
                DPRINTF("addr=%d, getting full desc failed\n",
                    udev->address);
+                /* XXX try to re-enumerate the device */
+                err = usbd_req_re_enumerate(udev, NULL);
+                if (err) {
+                        goto done;
+                }
-                goto done;
        }

--HPS


More information about the freebsd-current mailing list