Date: Fri, 10 Jan 2014 07:40:01 GMT From: Hans Petter Selasky <hps@bitfrost.no> To: freebsd-usb@FreeBSD.org Subject: Re: usb/185628: usbd_req_re_enumerate set address failed USB_ERR_STALLED for Seagate USB drives between r259425 and r260321 Message-ID: <201401100740.s0A7e1cb095721@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR usb/185628; it has been noted by GNATS. From: Hans Petter Selasky <hps@bitfrost.no> To: Alex Goncharov <alex_goncharov_usa@yahoo.com>, freebsd-gnats-submit@FreeBSD.org Cc: Subject: Re: usb/185628: usbd_req_re_enumerate set address failed USB_ERR_STALLED for Seagate USB drives between r259425 and r260321 Date: Fri, 10 Jan 2014 08:38:13 +0100 On 01/10/14 04:02, Alex Goncharov wrote: > >> Number: 185628 >> Category: usb >> Synopsis: usbd_req_re_enumerate set address failed USB_ERR_STALLED for Seagate USB drives between r259425 and r260321 >> Confidential: no >> Severity: non-critical >> Priority: low >> Responsible: freebsd-usb >> State: open >> Quarter: >> Keywords: >> Date-Required: >> Class: sw-bug >> Submitter-Id: current-users >> Arrival-Date: Fri Jan 10 03:10:00 UTC 2014 >> Closed-Date: >> Last-Modified: >> Originator: Alex Goncharov >> Release: 9.2-STABLE, built from svn source, r260321 >> Organization: >> Environment: > FreeBSD 9.2-STABLE FreeBSD 9.2-STABLE #0 r260321 Sun Jan 5 13:06:01 EST 2014 >> Description: > This is an extremely reproducible and very upsetting new problem. > > I have been using two identical Seagate Expansion 0219 drives for > about a year, attaching them to three FreeBSD systems, all of which I > update, building from the source, about every two-three weeks. No > problem, good drives -- till the last Sunday. Hi, Can you give some more details? Are these in some kind of enclosure? What USB speed are they connected at? If you are using an XHCI controller and the drives are connected at Super Speed (5.0 GBit), there has been a change in the XHCI driver which change how short packets are handled for transfers larger than 64K. The following patch will revert to the old behaviour from a class-driver point of view: ================================================================== --- umass.c (revision 260392) +++ umass.c (local) @@ -1362,7 +1362,11 @@ sc->sc_transfer.data_ptr += actlen; sc->sc_transfer.actlen += actlen; - if (actlen < sumlen) { + /* + * Filter out devices sending a short packet + * when they shouldn't: + */ + if ((actlen % 512) != 0 && (actlen < sumlen)) { /* short transfer */ sc->sc_transfer.data_rem = 0; } --HPS > > This past Sunday, I update two systems from r259425 to r260321, and > suddenly both of them now show these 'dmesg'es on connecting either of > the two drives: > > ------------------------------------------------------------ > usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored) > usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED > usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_STALLED, ignored) > usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_STALLED > usb_alloc_device: Failure selecting configuration index 0:USB_ERR_STALLED, port 3, addr 2 (ignored) > ugen5.2: <Seagate> at usbus5 > ugen5.2: <Seagate> at usbus5 (disconnected) > ------------------------------------------------------------ Do other USB devices connected to the same USB host controller continue to work? --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401100740.s0A7e1cb095721>