Re: How many copies to get from NIC RX to user read()?

From: niv@us.ibm.com
Date: Wed Jul 10 2002 - 10:52:47 EST


> I could've sworn I heard the stack was single-copy
> on both the TX and RX sides. But, it doesn't look to
> me like it is. Rather, it looks like there is one copy
> in tcp_rcv_estabilshed() (via tcp_copy_to_iovec()), and a
> second copy in tcp_recvmsg() (which is called when the
> user calls read()). Both of these copies are, I believe,
> done by skb_copy_datagram_iovec().

tcp_recvmsg() only does the copy from the receive_queue
or the backlog queue. tcp_rcv_established() does the copy
directly into the iovec or queues it onto the receive_queue
or backlog queue for tcp_recvmsg() to complete the work. So
there arent two copies of the same data happening, just a
question of one or the other function doing the work depending
on whether there is currently a process doing a read or not..

hth,

thanks,
Nivedita

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jul 15 2002 - 22:00:17 EST