Re: confuse about qh_link_async

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 31 Oct 2010, Gavin Guo wrote:

> >> After reading section 4.8 of EHCI spec again. I have another question:
> >> Does HC will increase the asynclistaddr to next QH which follow the QH
> >> of which H bit set to 1??
> >
> > You mean, does it do this when it stops following the schedule?  No, it
> > doesn't.
> 
> If doesn't go processing next qh, the asynclistaddr will point to the
> same QH of which H bit =1, doesn't it??

Yes.

> >>  I read the code in qh_link_async() adding
> >> the new queue after the ehci->async. So I think it is not possible to
> >> restart the asynchronous when the sleep timer expires without
> >> advancing to next QH. If doesn't, HC will read the same QH of H = 1
> >> and sleep again.
> >
> > It won't sleep again right away, because when the schedule restarts
> > the Reclamation bit is set to 1.  See 4.8.3.
> 
> But if hc won't go ahead to next qh of which H!=1, it will still go to
> sleep again. Because hc still process the original qh(H=1) ??.

This is all expained in 4.10.1.  Read it again.

Briefly, the HC will read the first qh and see H=1.  But since
Reclamation=1, it won't go to sleep; instead it will set Reclamation to
0 and go on to the next qh.

After going through the entire schedule the HC will return to the first 
qh and see H=1 again.  If there was no activity during the traversal 
then Reclamation will still be 0, so the HC will sleep.  Otherwise it 
will set Reclamation to 0 and continue on with the next qh.

Alan Stern

--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux