tcp_copy_to_page

From: David Oxley (googlenews2_at_curzon-dax.co.uk)
Date: 07/26/04


Date: 25 Jul 2004 15:25:45 -0700

Hi..

Looking at tcp_sendmsg() in 2.4.21. A few lines into the function, we
have:

  /* Where to copy to? */
  if (skb_tailroom(skb) > 0) {
     // Do something involving skb_add_data()
  } else {
     // Do something involving tcp_copy_to_page()
  }

My question is: under what circumstances is skb_tailroom not > 0 and
the second branch (ie the one using tcp_copy_to_page) is taken? My
experience/knowledge of the kernel isn't good enough to tell me when
there might not be space in the skb head.

I've [naively] done various experiments with printk 's in each branch,
and I've never seen the second branch taken.

Just curious...
David