Commit 993498e5 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

net-device: move gso_partial_features to net_device_read_tx

dev->gso_partial_features is read from tx fast path for GSO packets.

Move it to appropriate section to avoid a cache line miss.

Fixes: 43a71cd6 ("net-device: reorganize net_device fast path variables")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: Coco Li <lixiaoyan@google.com>
Cc: David Ahern <dsahern@kernel.org>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 07938d77
...@@ -38,7 +38,7 @@ netdev_features_t wanted_features ...@@ -38,7 +38,7 @@ netdev_features_t wanted_features
netdev_features_t vlan_features netdev_features_t vlan_features
netdev_features_t hw_enc_features - - netif_skb_features netdev_features_t hw_enc_features - - netif_skb_features
netdev_features_t mpls_features netdev_features_t mpls_features
netdev_features_t gso_partial_features netdev_features_t gso_partial_features read_mostly gso_features_check
unsigned_int min_mtu unsigned_int min_mtu
unsigned_int max_mtu unsigned_int max_mtu
unsigned_short type unsigned_short type
......
...@@ -2115,6 +2115,7 @@ struct net_device { ...@@ -2115,6 +2115,7 @@ struct net_device {
const struct net_device_ops *netdev_ops; const struct net_device_ops *netdev_ops;
const struct header_ops *header_ops; const struct header_ops *header_ops;
struct netdev_queue *_tx; struct netdev_queue *_tx;
netdev_features_t gso_partial_features;
unsigned int real_num_tx_queues; unsigned int real_num_tx_queues;
unsigned int gso_max_size; unsigned int gso_max_size;
unsigned int gso_ipv4_max_size; unsigned int gso_ipv4_max_size;
...@@ -2211,7 +2212,6 @@ struct net_device { ...@@ -2211,7 +2212,6 @@ struct net_device {
netdev_features_t vlan_features; netdev_features_t vlan_features;
netdev_features_t hw_enc_features; netdev_features_t hw_enc_features;
netdev_features_t mpls_features; netdev_features_t mpls_features;
netdev_features_t gso_partial_features;
unsigned int min_mtu; unsigned int min_mtu;
unsigned int max_mtu; unsigned int max_mtu;
......
...@@ -11629,6 +11629,7 @@ static void __init net_dev_struct_check(void) ...@@ -11629,6 +11629,7 @@ static void __init net_dev_struct_check(void)
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, gso_max_size); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, gso_max_size);
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, gso_ipv4_max_size); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, gso_ipv4_max_size);
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, gso_max_segs); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, gso_max_segs);
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, gso_partial_features);
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, num_tc); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, num_tc);
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, mtu); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, mtu);
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, needed_headroom); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, needed_headroom);
...@@ -11642,7 +11643,7 @@ static void __init net_dev_struct_check(void) ...@@ -11642,7 +11643,7 @@ static void __init net_dev_struct_check(void)
#ifdef CONFIG_NET_XGRESS #ifdef CONFIG_NET_XGRESS
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, tcx_egress); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_tx, tcx_egress);
#endif #endif
CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_tx, 152); CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_tx, 160);
/* TXRX read-mostly hotpath */ /* TXRX read-mostly hotpath */
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, flags); CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment