]> git.itanic.dy.fi Git - linux-stable/commitdiff
net: move dev->state into net_device_read_txrx group
authorEric Dumazet <edumazet@google.com>
Thu, 14 Mar 2024 20:08:45 +0000 (20:08 +0000)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:17:35 +0000 (18:17 -0400)
[ Upstream commit f6e0a4984c2e7244689ea87b62b433bed9d07e94 ]

dev->state can be read in rx and tx fast paths.

netif_running() which needs dev->state is called from
- enqueue_to_backlog() [RX path]
- __dev_direct_xmit()  [TX path]

Fixes: 43a71cd66b9c ("net-device: reorganize net_device fast path variables")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Coco Li <lixiaoyan@google.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20240314200845.3050179-1-edumazet@google.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Documentation/networking/net_cachelines/net_device.rst
include/linux/netdevice.h
net/core/dev.c

index dceb49d56a91158232543e920c7ed23bed74106e..70c4fb9d4e5ce0feb0d82578b878da3dbd00a7fb 100644 (file)
@@ -13,7 +13,7 @@ struct_dev_ifalias*                 ifalias
 unsigned_long                       mem_end                                                         
 unsigned_long                       mem_start                                                       
 unsigned_long                       base_addr                                                       
-unsigned_long                       state                                                           
+unsigned_long                       state                   read_mostly         read_mostly         netif_running(dev)
 struct_list_head                    dev_list                                                        
 struct_list_head                    napi_list                                                       
 struct_list_head                    unreg_list                                                      
index 78a09af89e39b7a43ce211cbbf17e7fe035d36bb..dba428b3a87a5ba881fd6930758f0b75c34a83f6 100644 (file)
@@ -2144,6 +2144,7 @@ struct net_device {
                struct pcpu_sw_netstats __percpu        *tstats;
                struct pcpu_dstats __percpu             *dstats;
        };
+       unsigned long           state;
        unsigned int            flags;
        unsigned short          hard_header_len;
        netdev_features_t       features;
@@ -2189,7 +2190,6 @@ struct net_device {
         *      part of the usual set specified in Space.c.
         */
 
-       unsigned long           state;
 
        struct list_head        dev_list;
        struct list_head        napi_list;
index f56f81e587236a6b2fa89bed54229c8a95b990c8..439419d912eb00419507a95cd5170d026ff3e08f 100644 (file)
@@ -11631,11 +11631,12 @@ static void __init net_dev_struct_check(void)
 
        /* TXRX read-mostly hotpath */
        CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, lstats);
+       CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, state);
        CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, flags);
        CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, hard_header_len);
        CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, features);
        CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, ip6_ptr);
-       CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_txrx, 38);
+       CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_txrx, 46);
 
        /* RX read-mostly hotpath */
        CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_rx, ptype_specific);