On May 14, 2009, at 10:51 AM, Andrew Gallatin wrote: > Nitin Hande wrote: >> Andrew Gallatin wrote: > >>> When looking at this, I noticed mac_tx_serializer_mode(). Am I >>> reading >>> this right, in that is serializes a single queue? That seems >>> lacking, >>> compared to the nxge_serialize stuff it replaces. >> Yes. This part was done for nxge and as far as I remember recent >> performance of this scheme was very close to that of the previous >> scheme. I think Gopi can comment more on this. What part do you >> think is missing here ? > > Perhaps I'm missing something.. Doesn't nxge support multiple TX > rings? > If so, does the existing serialization serialize all traffic to a > single ring, or is mac_tx_serializer_mode() applied after > mac_tx_fanout_mode()? > > I had thought the original nxge serializer serialized each TX ring > separately in nxge. The fork I made of it for myri10ge certainly > works that way.
The serializer is only for use by the nxge driver which has an inefficient TX path locking implementation. We didn't have the resources to completely rewrite the nxge transmit path as part of the Crossbow project so we moved the serialization implementation in MAC for that driver. The serializer in MAC does serialization on a per- ring basis. The serializer should not be used by any other driver. You don't have to use the serializer to support multiple TX rings. Keep your TX path lean and mean, apply good design principles, e.g. avoid holding locks for too long on your data-path, and you should be fine. Nicolas. > > > > Drew > > > _______________________________________________ > crossbow-discuss mailing list > crossbow-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/crossbow-discuss -- Nicolas Droux - Solaris Kernel Networking - Sun Microsystems, Inc. nicolas.droux at sun.com - http://blogs.sun.com/droux
