net: move xdp_prog field in RX cache lines
authorEric Dumazet <edumazet@google.com>
Tue, 25 Apr 2017 18:36:52 +0000 (11:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 25 Apr 2017 20:25:36 +0000 (16:25 -0400)
(struct net_device, xdp_prog) field should be moved in RX cache lines,
reducing latencies when a single packet is received on idle host,
since netif_elide_gro() needs it.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h

index 46d220c2bf92c9ce5e31beb2300838462ee89304..8c5c8cdc7b977250dab9cab2a508249eb3814e32 100644 (file)
@@ -1790,6 +1790,7 @@ struct net_device {
        unsigned int            real_num_rx_queues;
 #endif
 
+       struct bpf_prog __rcu   *xdp_prog;
        unsigned long           gro_flush_timeout;
        rx_handler_func_t __rcu *rx_handler;
        void __rcu              *rx_handler_data;
@@ -1905,7 +1906,6 @@ struct net_device {
        struct lock_class_key   *qdisc_tx_busylock;
        struct lock_class_key   *qdisc_running_key;
        bool                    proto_down;
-       struct bpf_prog __rcu   *xdp_prog;
 };
 #define to_net_dev(d) container_of(d, struct net_device, dev)