Re: Help needed for EHCI problem: removing an active bulk-in QH

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

 



On Mon, 2 Nov 2015, Peter Chen wrote:

> Hi Alan,
> 
> After a discussion with IC engineer, a brief idea like below:
> 
> - Delete the QH from the asynclist directly, Issue the first IAA
>   routine, this is we do now.
> - During the first IAA interrupt, judge if asynclistaddr is next address of
>   the QH we want to remove, if it does not, issue the second IAA
>   routine, else, we consider the controller will not process the removed
>   QH any more, so it is safe to remove.
> - If the controller still handles the QH previous than the one we want to
>   remove , issue IAA again.

I don't understand this completely.  It sounds like you're saying:

	Find qh2 such that qh2->qh_next == &qh.

	Keep doing IAA interrupts until (asynclistaddr != qh2->qh_dma &&
			asynclistaddr != qh->qh_dma).

Is that what you mean?  It doesn't sound right.  Consider the case 
where the async list contains only two QHs: qh2 and qh.  Then 
asynclistaddr will always point to one or the other.

What about this instead?

	Keep doing IAA interrupts until (asynclistaddr != qh->qh_dma).

	Then do one more IAA interrupt.

That seems safer.

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