Messages in this thread | | | Subject | RE: Scatter-gather list constraints | Date | Thu, 26 Jun 2008 09:43:51 -0700 | From | "Perez-Gonzalez, Inaky" <> |
| |
>From: Alan Stern [mailto:stern@rowland.harvard.edu] > >> >> I suppose we could add a field to struct urb and add a flag >> indicating >> >> whether the controller driver supports S-G lists. >> > >> >This is what I was thinking. >> >> That would simplify a *LOT* of WUSB wire-adapter code which now is a >> horrible kludge. > >In what way would it simplify the code? > >Note that usbcore already contains a scatter-gather library. >(Unfortunately the library is limited in usefulness because it needs to >run in process context.) > >Alan Stern
For WA, when we get a buffer to be sent from a URB, it has to be split in chunks, each chunk has a header added. So we end up with a list of chunks, most of them quite small. Each requires a single URB to send. resources galore.
If we could queue all those, the overhead would be reduced to allocating the headers (possibly in a continuous array) and the sg "descriptors" to describe the whole thing.
However, the alignment stuff somebody mentioned in another email in this thread might cause problems.
At the end it might not be all that doable (I might be missing some subtle isssues), but it is well worth a look.
>Note that usbcore already contains a scatter-gather library. >(Unfortunately the library is limited in usefulness because it needs to >run in process context.)
And the overhead of one URB per sg "node" kills it's usability for WAs.
| |