Messages in this thread | | | Date | Wed, 10 Jul 2002 11:52:47 -0400 | From | niv@us ... | Subject | Re: How many copies to get from NIC RX to user read()? |
| |
> 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/
| |