cvs commit: src/sys/dev/mxge eth_z8e.dat.gz.uu ethp_z8e.dat.gz.uu if_mxge.c if_mxge_var.h mxge_lro.c mxge_mcp.h

Andrew Gallatin gallatin at
Mon May 21 18:49:02 UTC 2007

Andrew Gallatin [gallatin at] wrote:
>   - Switch the driver from chaining MJUMPAGESIZE clusters to using
>     MJUM9BYTES clusters to avoid mbuf chaining overheads.  Due to this
>     change, people running obsolete f/w images will be limited to an MTU of
>     PAGE_SIZE - 16.

This takes mxge jumbo frame receive performance from 9.3Gb/s to
line rate on high-end machines (dual dual-core woodcrests), and from
~6.9Gb/s to ~8.2Gb/s on low end machines (2.0GHz athlon64 x2).

>   - Add (disabled by default) support for Large Receive Offload.

For the curious, LRO is analagous to a receive side version of TSO.
The NIC (or driver) merges several consecutive segments from the same
connection, fixing up checksums, etc.  Rather than up to 45 separate
1500 byte frames (meaning up to 45 trips through the network stack),
the driver merges them into one 65212 byte frame.

When enabled (and the overlength frame check in ether_input defeated)
LRO roughly doubles standard frame performance on anything I've tried.


More information about the cvs-src mailing list