Andrew Gallatin wrote:
> Hi,
>
> Can somebody shed some light on how crossbow hashes outgoing
> packets to different transmit rings (not ring groups)?
>
> My 10GbE driver has multiple rings (and a single group).  Each
> transmit ring shares an interrupt with a corresponding receive
> ring.  We call a set of 1 TX ring, 1 RX ring, and interrupt handler
> state a "slice".  Transmit completions are handled from the interrupt
> handler.   On OSes which support multiple transmit routes,
> we've found that ensuring that a particular connection is always
> hashed to the same slice by the host and the NIC helps quite a bit
> with performance (improves CPU locality, reduces cache misses, decreases
> power consumption).
>
> Some OSes (like FreeBSD) allow a driver to assist in tagging a
> connection so as to ensure that it is easy to hash
> traffic for the same connection into the same slice in the host
> and the NIC.  Others (Linux, S10) allow the driver to hash the
> outgoing packets to provide this locality.
>
> So.. Where is the transmit hashing done in crossbow?  Is it tunable?
> Is there a hook where I can do provide a hash routine (like Linux)?
> Can I tag packets (like FreeBSD)?  Is it at least something standard
> like Toeplitz?

If your driver has advertised multiple tx rings, then look for 
mac_tx_fanout_mode() which in turn computes the hash on fanout hint 
passed from ip. Providing hooks for additional hash routines has been 
suggested.

Nitin

>
> Drew
> _______________________________________________
> crossbow-discuss mailing list
> crossbow-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/crossbow-discuss


Reply via email to