Hi! >>>>> "eFB" == ext Felipe Balbi writes: > On Thu, Dec 09, 2010 at 11:38:17AM +0200, Yauheni Kaliuta wrote: [...] > >I'm thinking of 2 ways how to imporove the situation: from the network > >layer and on the usb gadget layer to allow to make requests from a set of > >buffers (the host controllers go to the direction even in HW), especially > >when we have FIFO in gadget HW. > > > >Do you have any ideas about that? > Do you mean something like DMA chaining ? That would not work with > Inventra DMA least (which is a shame), Kind of. I'm thinking mostly about generic logic of chained buffer for request. If there is chained DMA, it can be used then, or it can be emulated in SW, it's possible to use DMA to submit only parts, PIO for others, it's possible to even make a flat buffer inside ... > I have also been thinking about a way of combining the requests, but > every time I think about it I remember socket layer doesn't let us reuse > the socket buffers :-( > If it did, _maybe_ we could allocate a dma pool (with dma_pool_create()) > of e.g. 16Kb, and have a bunch o skbuffs allocated from that pool, then > when pool if full, we send the entire pool to DMA ?!? > That would mean we would need at least 2 pools, one for RX and one for > TX. Other than that, I can't think of anything that doesn't involve > memcpy(). About network layer I'm thinking first of allocating of skbs with respect of bottom layer. Like we have an api to gadget driver to allocate usb request, network layer may have an api to network driver (and thats usbnet for us) to prepare skb how it's better for it. You are talking already more closer to the implementation details if I understand you right. Do my words sound logical somehow? -- WBR, Yauheni Kaliuta -- 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