From: Paolo Abeni Date: Wed, 21 Jun 2017 08:24:40 +0000 (+0200) Subject: udp: prefetch rmem_alloc in udp_queue_rcv_skb() X-Git-Tag: v4.13-rc1~157^2~125 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=dd99e425be23;p=karo-tx-linux.git udp: prefetch rmem_alloc in udp_queue_rcv_skb() On UDP packets processing, if the BH is the bottle-neck, it always sees a cache miss while updating rmem_alloc; try to avoid it prefetching the value as soon as we have the socket available. Performances under flood with multiple NIC rx queues used are unaffected, but when a single NIC rx queue is in use, this gives ~10% performance improvement. Signed-off-by: Paolo Abeni Signed-off-by: David S. Miller --- diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index f3450f092d71..067a607917f9 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1949,6 +1949,7 @@ static int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) } } + prefetch(&sk->sk_rmem_alloc); if (rcu_access_pointer(sk->sk_filter) && udp_lib_checksum_complete(skb)) goto csum_error;