On Sun, Jun 27, 2010 at 04:57:30PM +0200, Andrea Righi wrote: > On Wed, Jun 23, 2010 at 01:08:43PM -0400, Alan Stern wrote: > > On Wed, 23 Jun 2010, Andrea Righi wrote: > > > > > ffff88007a862cc0 2028329666 S Bi:2:002:1 -115 4096 < > > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > > device stalls here (in this case with a large URB)... > > > > > > ffff88007a862cc0 2058694464 C Bi:2:002:1 -104 0 > > > > > > > > > > I'm about out of ideas. You could look at the qh status values in the > > > > "async" debugging file while waiting for the URB to time out, but they > > > > probably won't tell you anything new. > > > > > > for this last case: > > > > > > $ cat /sys/kernel/debug/usb/ehci/oxu210hp_sph/async > > > qh/ffff88007b051800 dev2 hs ep1 42002102 40000000 (90008d80* data1 nak0) > > > ffffc90005001120*in len=4096 10008d80 urb ffff88007a862cc0 > > > > Nothing stands out as significant. The values indicate that the > > controller hasn't received any data from the device, but that's > > probably not true in reality. > > I did many tests in these past days, unfortunately without any > significant result. :( > > The only "bad" thing I've found is that the communication via > usb_stor_bulk_transfer_sglist() seems to fail only with "large" > transfers (even 192 is sufficient to trigger the problem, while small > transfers seems to work fine): > > $ dmesg | grep "Status code\|bulk_transfer" > [ 3199.220552] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.220761] usb-storage: Status code 0; transferred 31/31 > [ 3199.220767] usb-storage: usb_stor_bulk_transfer_sglist: xfer 36 bytes, 1 entries > [ 3199.257161] usb-storage: Status code 0; transferred 36/36 > [ 3199.257168] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.257380] usb-storage: Status code 0; transferred 13/13 > [ 3199.269690] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.269896] usb-storage: Status code 0; transferred 31/31 > [ 3199.269903] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.270141] usb-storage: Status code 0; transferred 13/13 > [ 3199.270173] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.270390] usb-storage: Status code 0; transferred 31/31 > [ 3199.270396] usb-storage: usb_stor_bulk_transfer_sglist: xfer 18 bytes, 1 entries > [ 3199.647916] usb-storage: Status code 0; transferred 18/18 > [ 3199.647924] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.648143] usb-storage: Status code 0; transferred 13/13 > [ 3199.648223] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.648393] usb-storage: Status code 0; transferred 31/31 > [ 3199.648399] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.648642] usb-storage: Status code 0; transferred 13/13 > [ 3199.648702] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.648892] usb-storage: Status code 0; transferred 31/31 > [ 3199.648897] usb-storage: usb_stor_bulk_transfer_sglist: xfer 8 bytes, 1 entries > [ 3199.649648] usb-storage: Status code 0; transferred 8/8 > [ 3199.649655] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.649891] usb-storage: Status code 0; transferred 13/13 > [ 3199.649952] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.658891] usb-storage: Status code 0; transferred 31/31 > [ 3199.658897] usb-storage: usb_stor_bulk_transfer_sglist: xfer 192 bytes, 1 entries > [ 3199.659233] usb-storage: Status code -121; transferred 36/192 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > [ 3199.659240] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.659401] usb-storage: Status code 0; transferred 13/13 > [ 3199.659544] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.659787] usb-storage: Status code 0; transferred 31/31 > [ 3199.659794] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.660054] usb-storage: Status code 0; transferred 13/13 > [ 3199.660914] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.661184] usb-storage: Status code 0; transferred 31/31 > [ 3199.661191] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.661793] usb-storage: Status code 0; transferred 13/13 > [ 3199.661824] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.662027] usb-storage: Status code 0; transferred 31/31 > [ 3199.662032] usb-storage: usb_stor_bulk_transfer_sglist: xfer 18 bytes, 1 entries > [ 3199.662289] usb-storage: Status code 0; transferred 18/18 > [ 3199.662296] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.662526] usb-storage: Status code 0; transferred 13/13 > [ 3199.662614] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.662775] usb-storage: Status code 0; transferred 31/31 > [ 3199.662782] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.663025] usb-storage: Status code 0; transferred 13/13 > [ 3199.663086] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.663273] usb-storage: Status code 0; transferred 31/31 > [ 3199.663279] usb-storage: usb_stor_bulk_transfer_sglist: xfer 8 bytes, 1 entries > [ 3199.664035] usb-storage: Status code 0; transferred 8/8 > [ 3199.664042] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.664277] usb-storage: Status code 0; transferred 13/13 > [ 3199.664338] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.664522] usb-storage: Status code 0; transferred 31/31 > [ 3199.664528] usb-storage: usb_stor_bulk_transfer_sglist: xfer 192 bytes, 1 entries > [ 3199.664840] usb-storage: Status code -121; transferred 36/192 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > [ 3199.664848] usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes > [ 3199.665043] usb-storage: Status code 0; transferred 13/13 > [ 3199.665149] usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes > [ 3199.665273] usb-storage: Status code 0; transferred 31/31 > [ 3199.665279] usb-storage: usb_stor_bulk_transfer_sglist: xfer 4096 bytes, 1 entries > [ 3230.081270] usb-storage: Status code -104; transferred 0/4096 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > The error pattern seems quite clear looking at this particular log. > > Maybe the controller is just buggy and it's not able to handle "large" > bulk transfers... I don't see a quick way to limit the size of bulk > transfers, so I'd like to do a test adding an intermediate layer to > split large bulk transfers into smaller one. That was exactly my problem, that's why I used the mini-URB (the layer you wish adding). Ciao, Rodolfo -- GNU/Linux Solutions e-mail: giometti@xxxxxxxxxxxx Linux Device Driver giometti@xxxxxxxx Embedded Systems phone: +39 349 2432127 UNIX programming skype: rodolfo.giometti Freelance ICT Italia - Consulente ICT Italia - www.consulenti-ict.it -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html