]> git.baikalelectronics.ru Git - kernel.git/commit
udp: try to avoid 2 cache miss on dequeue
authorPaolo Abeni <pabeni@redhat.com>
Mon, 12 Jun 2017 09:23:43 +0000 (11:23 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Jun 2017 14:01:29 +0000 (10:01 -0400)
commit7bf372f23f16923aded55a355cff61431ab352e3
tree0378a13224c5045bedeee8a4d0b57e579e45de46
parent255370ee4ad1c1a36208277a53cd53d639af58e0
udp: try to avoid 2 cache miss on dequeue

when udp_recvmsg() is executed, on x86_64 and other archs, most skb
fields are on cold cachelines.
If the skb are linear and the kernel don't need to compute the udp
csum, only a handful of skb fields are required by udp_recvmsg().
Since we already use skb->dev_scratch to cache hot data, and
there are 32 bits unused on 64 bit archs, use such field to cache
as much data as we can, and try to prefetch on dequeue the relevant
fields that are left out.

This can save up to 2 cache miss per packet.

v1 -> v2:
  - changed udp_dev_scratch fields types to u{32,16} variant,
    replaced bitfiled with bool

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/udp.c