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