[lkml]   [1999]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: zero-copy TCP fileserving
       Date:   Fri, 24 Sep 1999 09:45:04 -0700
    From: Pete Wyckoff <>

    I added small modifications a while back to 2.2.3 to use this, with
    a packet engines gigE card. The driver sets a bit in the dev
    structure saying it knows how to do tx checksum, then the IP output
    path notices and does only the pseudo header. Hardware adds in the
    packet body checksum.

    The impact on bandwidth was, however, minimal. At least for 500
    MHz alpha machines.

    Because the csum_partial_copy_from_user done in the TCP transmit path
    gets the checksum at zero cost. Just eliminating the checksum is
    going to buy little if anything (in fact on some cpus it's going to
    cost more to "avoid" the csum part of the copy), the real gain is
    avoiding the copy as well.

    You'd need to, in tcp sendmsg:

    1) Lock down the data buffer
    2) Add support to the skb's for iovecs
    3) Put the TCP/IP/HW headers in the first iovec
    4) Hook up the user data in subsequent iovecs

    Then the driver can csum the entire packet, header and all, and the
    cpu touches none of the actual data portion.

    This is the whole point of "zero-copy" TCP, or did I miss something in
    the changes you did?

    David S. Miller

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:54    [W:0.019 / U:14.992 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site