Files
linux-st/include/linux
Eric Dumazet b193722731 net: reorganize sk_buff for faster __copy_skb_header()
With proliferation of bit fields in sk_buff, __copy_skb_header() became
quite expensive, showing as the most expensive function in a GSO
workload.

__copy_skb_header() performance is also critical for non GSO TCP
operations, as it is used from skb_clone()

This patch carefully moves all the fields that were not copied in a
separate zone : cloned, nohdr, fclone, peeked, head_frag, xmit_more

Then I moved all other fields and all other copied fields in a section
delimited by headers_start[0]/headers_end[0] section so that we
can use a single memcpy() call, inlined by compiler using long
word load/stores.

I also tried to make all copies in the natural orders of sk_buff,
to help hardware prefetching.

I made sure sk_buff size did not change.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-09-29 12:27:20 -04:00
..
2013-07-30 11:53:12 -04:00
2005-04-16 15:20:36 -07:00
2012-10-08 13:50:20 +10:30
2009-04-01 08:59:23 -07:00
2011-03-11 14:25:50 +00:00
2008-06-06 11:29:10 -07:00
2014-09-26 15:05:15 -04:00
2009-11-20 20:13:39 +01:00
2009-11-20 20:13:39 +01:00
2013-11-15 09:32:21 +09:00
2012-01-03 22:54:57 -05:00
2012-02-20 19:46:36 +11:00
2008-01-28 23:21:18 +01:00
2014-08-22 13:56:47 -07:00
2014-04-01 23:19:14 -04:00
2014-09-26 15:05:15 -04:00
2013-08-22 22:13:54 -07:00
2009-06-18 13:04:05 -07:00
2014-05-20 10:30:40 +09:00
2007-07-10 00:35:17 -04:00
2010-10-25 14:11:37 -07:00
2010-02-09 11:13:56 +01:00
2010-10-12 16:53:37 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2014-08-19 10:19:39 -05:00
2014-06-02 14:56:01 -07:00
2005-04-16 15:20:36 -07:00
2010-12-09 20:17:07 -08:00
2012-05-31 17:49:32 -07:00
2013-04-30 17:04:06 -07:00
2013-12-11 15:52:34 +01:00
2013-12-26 13:29:35 -05:00
2014-07-17 22:07:37 +02:00
2012-12-11 17:22:27 -08:00
2014-04-07 10:59:19 -07:00
2014-07-09 14:58:37 +01:00
2011-11-02 16:07:02 -07:00
2011-03-31 11:26:23 -03:00
2014-06-04 16:54:21 -07:00
2010-05-11 10:09:47 +02:00
2014-09-13 12:30:26 -04:00
2013-06-17 16:38:57 -07:00
2013-09-10 18:56:32 -04:00
2014-08-06 13:03:44 +02:00
2014-02-15 11:55:28 -08:00
2013-04-30 15:50:12 +05:30
2014-08-08 15:57:24 -07:00
2014-08-22 21:28:02 -07:00
2012-08-21 16:28:31 +02:00
2012-10-09 16:22:32 +09:00
2010-11-29 08:55:25 +11:00
2014-09-16 15:02:55 -06:00
2014-04-07 16:35:53 -07:00
2014-06-04 16:53:57 -07:00
2014-01-30 16:56:55 -08:00