There are three for TCP loopback unless someone has fiddled recently. We
copy
user->sk_buff [with csum]
sk_buff to sk_buff
sk_buff->user [skip csum]
While it seems a really dumb thing to do it makes sense as there may
be retransmissions and thus the receiver cannot go using the queue pointers
of the senders buffer copy. Its a bad case solely applicable to loopback,
and if we are going to optimise loopback tcp we should do the solaris trick
and dump everything. In the mean time thats what AF_UNIX was invented for.
Alan