• Jesse Brandeburg's avatar
    e1000: implement jumbo receive with partial descriptors · edbbb3ca
    Jesse Brandeburg authored
    This is code extremely similar to what is committed in e1000e
    already.
    
    e1000 will no longer request 32kB slab buffers to support jumbo
    frames on PCI/PCI-X adapters.  This will significantly reduce the
    likelyhood of order:3 allocation failures.
    
    This new code adds support for using pages as receive buffers,
    and the driver will chain multiple pages together to build a
    jumbo frame for OS consumption.
    
    The hardware takes a power of two buffer size and will
    dump as much data as it can receive into 1 or more buffers.
    
    The benefits of applying this are
    1) stop akpm's dissing :-) of this lame e1000 behavior [1]
    2) more efficient memory allocation (half) when using jumbo
       frames, which will also allow for much better socket utilization
       with jumbos since the socket is charged for the full allocation
       of each receive buffer, regardless of how much is used.
    3) this was a feature request by a customer
    4) copybreak for small packets < 256 bytes still applies
    
    [1] http://lkml.org/lkml/2008/7/10/68
        http://article.gmane.org/gmane.linux.network/130986Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    CC: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    edbbb3ca
e1000_main.c 146 KB