tun: compute the RFS hash only if needed.
authorPaolo Abeni <pabeni@redhat.com>
Wed, 7 Nov 2018 09:34:36 +0000 (10:34 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Nov 2018 06:22:16 +0000 (22:22 -0800)
The tun XDP sendmsg code path, unconditionally computes the symmetric
hash of each packet for RFS's sake, even when we could skip it. e.g.
when the device has a single queue.

This change adds the check already in-place for the skb sendmsg path
to avoid unneeded hashing.

The above gives small, but measurable, performance gain for VM xmit
path when zerocopy is not enabled.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c

index 060135ceaf0e1a76615b2e6cd6830d42ac8becdf..a65779c6d72ff05a7f2273750464cc0f54b04d02 100644 (file)
@@ -2448,7 +2448,8 @@ build:
                        goto out;
        }
 
-       if (!rcu_dereference(tun->steering_prog))
+       if (!rcu_dereference(tun->steering_prog) && tun->numqueues > 1 &&
+           !tfile->detached)
                rxhash = __skb_get_hash_symmetric(skb);
 
        netif_receive_skb(skb);