On Tuesday 03 July 2007, Mike Nuss wrote:
> David Brownell wrote:
> > Hmm.  Here's a theory.  The way that the current code unlinks
> > an ED is to set the SKIP bit *AND* remove the ED from the relevant
> > part of the schedule.
> > 
> > Maybe ... the hardware gets confused when the ED doesn't seem
> > to be on the relevant list.  Like maybe it expects it to stay
> > at the head of the ED list.  ISTR some silicon doesn't much
> > like to see null pointers written into the hardware registers,
> > and I know for a fact that the ed_deschedule logic was always
> > a bit racey.
> > 
> > That suggests that the safest route would be setting SKIP for
> > one frame (so all pending TDs get properly retired), and
> > only *THEN* taking it out of the queue.
> 
> At least in the case of our device driver, which reuses a single read
> URB per device, there should only be one outstanding TD at a time. So
> when ed_deschedule gets called, there would not be any TDs outstanding.
> This also puts a big hole in my theory, since the timing window I was
> imagining shouldn't exist in this case.

Is that also with only one outstanding bulk URB at a time?

If so the thought-experiment of walking through the code
until something odd appears should be straightforward ...


> For what it's worth, the sample code in the OHCI spec doesn't wait until
> the next SOF either when removing an ED from the schedule. But that
> doesn't necessarily reflect all real world situations ;) And since the
> TD queue never builds up, it doesn't seem like the type of use the spec
> was expecting.

Depends what you mean by "expecting".  Certainly the
hardware must operate with whatever queue lengths are
provided.  But it's likey that examples focussed more
on typical cases than boundary conditions.

- Dave

 
> The ED (de)scheduling code is completely unknown to me at this point.
> I'll get familiar with it.
> 
> Mike
> 



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to