On Mon, 2007-08-20 at 07:03 -0700, Dor Laor wrote: > >> > 2) We either need huge descriptors or some chaining > >mechanism to > >> > handle scatter-gather. > >> > > >> > >> Or, my preference, have a small sglist in the descriptor; > > > > > >Define "small" ;) > > > >There a certainly patterns that cannot/will-not take advantage of SG > >(for instance, your typical network rx path), and therefore the sg > >entries are wasted in some cases. Since they need to be (IMHO) u64, > >they suck down at least 8 bytes a piece. Because of this I elected to > >use the model of one pointer per descriptor, with an external > descriptor > >for SG. What are your thoughts on this? > > Using Rusty's code there is no waste. > Each descriptor has a flag (head|next). Next flag stands for pointer to > the > next descriptor with u32 next index. So the waste is 4 bytes. > Sg descriptors are chained on the same descriptor ring. Right, so he is using a chaining mechanism and I was using a single-pointer + external-descriptor mechanism. (Actually you can chain with IOQ too if you want but I chose to implement the IOQNET example with external-descriptors). I'm not sure if either way is particularly better than the other. The important thing (IMO) is that either way you avoid waste for the (not so uncommon) non-sg case. You still owe me some code, BTW ;) _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization