Thread (2 messages) 2 messages, 2 authors, 2012-11-26

Re: USB 2.0: No giveback comes for one submitted URB

From: naveen yadav <hidden>
Date: 2012-11-26 12:23:48
Also in: lkml

Dear Alan,

Thanks for your reply ,

We check on 3.2.34 and 3.6.7 on X86 host machine. and result is same
without connecting Bluetooth device.
I am attaching log



On Thu, Nov 22, 2012 at 9:08 PM, Alan Stern [off-list ref] wrote:
On Thu, 22 Nov 2012, naveen yadav wrote:
quoted
Hi,

we are using 3.2.2 version of kernel.

When Bluetooth(connected to USB 2.0) is suspended, urb->use_count
value does not become zero and eventually there is a continuous wait
in wait_event() of usb_kill_urb().
          wait_event(usb_kill_urb_queue, atomic_read(&urb->use_count) == 0);

urb_count is incremented at only one place in usb_hcd_submit_urb() and
That's how it is _supposed_ to work.  You have discovered that
something else increments urb->use_count.
quoted
decremented in usb_hcd_giveback_urb(). (Also, in error case inside
usb_hcd_submit_urb()). After taking print of  urb->use_count at all
these places, I see, even without connecting the Bluetooth device
urb_count is incremented while below execution has never been
decremented.
quoted
.....
[    3.490000] ====>[usb_hcd_giveback_urb][1626] urb->use_count = 0
pipe=2147484032 [vid=0x1d6b] [pid=0x0002][devno=1]
[    3.540000] ====>[usb_hcd_submit_urb][1482] urb->use_count = 2
pipe=1077969280 [vid=0x1d6b] [pid=0x0002][devno=1]
[    3.540000] ====>[usb_hcd_giveback_urb][1626] urb->use_count = 1
pipe=1077969280 [vid=0x1d6b] [pid=0x0002][devno=1]
Now you need to find out what other code has changed urb->use_count and
fix it.

Alan Stern

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help