Re: confuse about qh_link_async

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

 



On Sat, 30 Oct 2010, Gavin Guo wrote:

> >>         Why only the null queue head is checked? I think it is
> >> possible that non-empty queue head link list also have asynchronous
> >> list disabled
> >
> > No, it is not possible.
> >
> >>         (hc encounter queue head of which H=1 and scan_async havent's
> >> unlink the queue head).
> >
> > Only one QH, ehci->async, ever has H set to 1.  It is never removed
> > from the async schedule.
> 
> I means when hc encounter QH, ehci->async, has H set to 1. HC stop
> traversing the qh list (HC disable CMD_ASE & CMD_RUN??).

No.  The host controller never disables CMD_ASE or CMD_RUN, except when
an error occurs.

>  And ehci_work
> havent't call at this time before ehci_urb_enqueue is comming(those
> QHs which is completed haven't deleted by scan_async called by
> ehci_work). At this time when ehci_urb_enqueue is execute, there are
> some undeleted QHs existing in the QH link list pointed by
> asynclistaddr register. Then qh_link_async want to add a new qh to
> link list, doesn't it need to restart the CMD_ASE & CMD_RUN for
> non-empty link list condition??

No, because CMD_ASE and CMD_RUN are still set.

> Does the condition that HC stop traversing the QH link list due to H=1
> QH is met will result in CMD_ASE & CMD_RUN disabled ??

No.  See section 4.8.3 in the EHCI spec; when this happens the
controller "simply stops traversal of the asynchronous schedule".  It
doesn't change any register bits.

> if doesn't, where is the point??

The point is to reduce the amount of PCI and memory bandwidth consumed 
by the controller when it doesn't have any work to do.

>  and how HC will be restarted after stopping??

Read section 4.8.4.

> Maybe my concept is wrong at this point.

Yes, your understanding is wrong.

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