aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/reassembly.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2018-03-31 12:58:58 -0700
committerDavid S. Miller <davem@davemloft.net>2018-03-31 23:25:40 -0400
commitbf66337140c64c27fa37222b7abca7e49d63fb57 (patch)
tree21a458948982fa21406bf356534516789d435661 /net/ipv6/reassembly.c
parentinet: frags: reorganize struct netns_frags (diff)
downloadlinux-dev-bf66337140c64c27fa37222b7abca7e49d63fb57.tar.xz
linux-dev-bf66337140c64c27fa37222b7abca7e49d63fb57.zip
inet: frags: get rid of ipfrag_skb_cb/FRAG_CB
ip_defrag uses skb->cb[] to store the fragment offset, and unfortunately this integer is currently in a different cache line than skb->next, meaning that we use two cache lines per skb when finding the insertion point. By aliasing skb->ip_defrag_offset and skb->dev, we pack all the fields in a single cache line and save precious memory bandwidth. Note that after the fast path added by Changli Gao in commit d6bebca92c66 ("fragment: add fast path for in-order fragments") this change wont help the fast path, since we still need to access prev->len (2nd cache line), but will show great benefits when slow path is entered, since we perform a linear scan of a potentially long list. Also, note that this potential long list is an attack vector, we might consider also using an rb-tree there eventually. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/reassembly.c')
0 files changed, 0 insertions, 0 deletions