提交 8ce120f1 编写于 作者: E Eric Dumazet 提交者: David S. Miller

net: better pcpu data alignment

Tunnels can force an alignment of their percpu data to reduce number of
cache lines used in fast path, or read in .ndo_get_stats()

percpu_alloc() is a very fine grained allocator, so any small hole will
be used anyway.
Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 2bc8ca40
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
struct veth_net_stats { struct veth_net_stats {
u64 rx_packets; u64 rx_packets;
u64 tx_packets;
u64 rx_bytes; u64 rx_bytes;
u64 tx_packets;
u64 tx_bytes; u64 tx_bytes;
u64 rx_dropped; u64 rx_dropped;
struct u64_stats_sync syncp; struct u64_stats_sync syncp;
......
...@@ -171,7 +171,7 @@ struct pcpu_tstats { ...@@ -171,7 +171,7 @@ struct pcpu_tstats {
unsigned long rx_bytes; unsigned long rx_bytes;
unsigned long tx_packets; unsigned long tx_packets;
unsigned long tx_bytes; unsigned long tx_bytes;
}; } __attribute__((aligned(4*sizeof(unsigned long))));
static struct net_device_stats *ipgre_get_stats(struct net_device *dev) static struct net_device_stats *ipgre_get_stats(struct net_device *dev)
{ {
......
...@@ -148,7 +148,7 @@ struct pcpu_tstats { ...@@ -148,7 +148,7 @@ struct pcpu_tstats {
unsigned long rx_bytes; unsigned long rx_bytes;
unsigned long tx_packets; unsigned long tx_packets;
unsigned long tx_bytes; unsigned long tx_bytes;
}; } __attribute__((aligned(4*sizeof(unsigned long))));
static struct net_device_stats *ipip_get_stats(struct net_device *dev) static struct net_device_stats *ipip_get_stats(struct net_device *dev)
{ {
......
...@@ -93,7 +93,7 @@ struct pcpu_tstats { ...@@ -93,7 +93,7 @@ struct pcpu_tstats {
unsigned long rx_bytes; unsigned long rx_bytes;
unsigned long tx_packets; unsigned long tx_packets;
unsigned long tx_bytes; unsigned long tx_bytes;
}; } __attribute__((aligned(4*sizeof(unsigned long))));
static struct net_device_stats *ip6_get_stats(struct net_device *dev) static struct net_device_stats *ip6_get_stats(struct net_device *dev)
{ {
......
...@@ -91,7 +91,7 @@ struct pcpu_tstats { ...@@ -91,7 +91,7 @@ struct pcpu_tstats {
unsigned long rx_bytes; unsigned long rx_bytes;
unsigned long tx_packets; unsigned long tx_packets;
unsigned long tx_bytes; unsigned long tx_bytes;
}; } __attribute__((aligned(4*sizeof(unsigned long))));
static struct net_device_stats *ipip6_get_stats(struct net_device *dev) static struct net_device_stats *ipip6_get_stats(struct net_device *dev)
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册