net: move misc netdev_lock flavors to a separate header
authorJakub Kicinski <kuba@kernel.org>
Fri, 7 Mar 2025 18:30:06 +0000 (10:30 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 8 Mar 2025 17:06:50 +0000 (09:06 -0800)
Move the more esoteric helpers for netdev instance lock to
a dedicated header. This avoids growing netdevice.h to infinity
and makes rebuilding the kernel much faster (after touching
the header with the helpers).

The main netdev_lock() / netdev_unlock() functions are used
in static inlines in netdevice.h and will probably be used
most commonly, so keep them in netdevice.h.

Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Link: https://patch.msgid.link/20250307183006.2312761-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
51 files changed:
drivers/net/bonding/bond_main.c
drivers/net/dummy.c
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c
drivers/net/ethernet/intel/iavf/iavf_main.c
drivers/net/ethernet/microsoft/mana/mana_en.c
drivers/net/geneve.c
drivers/net/hamradio/bpqether.c
drivers/net/hyperv/netvsc_drv.c
drivers/net/ipvlan/ipvlan_main.c
drivers/net/loopback.c
drivers/net/macsec.c
drivers/net/macvlan.c
drivers/net/netdevsim/netdev.c
drivers/net/ppp/ppp_generic.c
drivers/net/team/team_core.c
drivers/net/veth.c
drivers/net/vrf.c
drivers/net/vxlan/vxlan_core.c
include/linux/netdevice.h
include/net/netdev_lock.h [new file with mode: 0644]
kernel/bpf/offload.c
net/8021q/vlan_dev.c
net/bluetooth/6lowpan.c
net/bridge/br_device.c
net/core/dev.c
net/core/dev.h
net/core/dev_api.c
net/core/dev_ioctl.c
net/core/net-sysfs.c
net/core/rtnetlink.c
net/dsa/conduit.c
net/ethtool/cabletest.c
net/ethtool/cmis_fw_update.c
net/ethtool/features.c
net/ethtool/ioctl.c
net/ethtool/module.c
net/ethtool/netlink.c
net/ethtool/phy.c
net/ethtool/rss.c
net/ethtool/tsinfo.c
net/ieee802154/6lowpan/core.c
net/ipv4/ip_tunnel.c
net/ipv6/ip6_gre.c
net/ipv6/ip6_tunnel.c
net/ipv6/ip6_vti.c
net/ipv6/sit.c
net/l2tp/l2tp_eth.c
net/sched/sch_api.c
net/xdp/xsk.c
net/xdp/xsk_buff_pool.c

index cf0b02720dd82e9ea4f7fbdeff44b5a450f6128c..6c95f478ab8056956e30a13f60df637483ed2e12 100644 (file)
@@ -90,6 +90,7 @@
 #include <net/tls.h>
 #endif
 #include <net/ip6_route.h>
+#include <net/netdev_lock.h>
 #include <net/xdp.h>
 
 #include "bonding_priv.h"
index 005d79975f3bd252c8aeeae2412cb9b56a0fc446..a4938c6a5ebb5a6de8be990b0809d09253a26c4d 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/moduleparam.h>
 #include <linux/rtnetlink.h>
 #include <linux/net_tstamp.h>
+#include <net/netdev_lock.h>
 #include <net/rtnetlink.h>
 #include <linux/u64_stats_sync.h>
 
index 1a1e6da777775854ad036c801520e8509fb97221..b09171110ec49bd06401aa8c035d7dfbf7ff6047 100644 (file)
@@ -54,6 +54,7 @@
 #include <net/pkt_cls.h>
 #include <net/page_pool/helpers.h>
 #include <linux/align.h>
+#include <net/netdev_lock.h>
 #include <net/netdev_queues.h>
 #include <net/netdev_rx_queue.h>
 #include <linux/pci-tph.h>
index 0caf6e9bccb8cc31f1ae22df2885f7aeef7464d1..cf2b3ad75c9b939c71ebea039f4c5bf25c4bce9e 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/bpf.h>
 #include <linux/bpf_trace.h>
 #include <linux/filter.h>
+#include <net/netdev_lock.h>
 #include <net/page_pool/helpers.h>
 #include "bnxt_hsi.h"
 #include "bnxt.h"
index 032e1a58af6f11d2dfef270fb2d2451ce9282bf8..6d7ba4d67a193346c50907558f3d83e2b130b251 100644 (file)
@@ -2,6 +2,7 @@
 /* Copyright(c) 2013 - 2018 Intel Corporation. */
 
 #include <linux/net/intel/libie/rx.h>
+#include <net/netdev_lock.h>
 
 #include "iavf.h"
 #include "iavf_ptp.h"
index 0411a1897f573097220439aac38c16b5958761ce..2d826077d38cdac7ebe9c355cf883b0d727eeca2 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <net/checksum.h>
 #include <net/ip6_checksum.h>
+#include <net/netdev_lock.h>
 #include <net/page_pool/helpers.h>
 #include <net/xdp.h>
 
index 2c65f867fd31d04e2316335a368cb8f2c4e34f05..66e38ce9cd1d32444e97fb7fb175c28c48864214 100644 (file)
@@ -18,6 +18,7 @@
 #include <net/rtnetlink.h>
 #include <net/geneve.h>
 #include <net/gro.h>
+#include <net/netdev_lock.h>
 #include <net/protocol.h>
 
 #define GENEVE_NETDEV_VER      "0.6"
index f6b0bfbbc753f6c69d47d9fdd3af0ebcabb21ead..0e0fe32d2da4e361f0d3bee0703e8e6e27c6627b 100644 (file)
@@ -77,6 +77,7 @@
 
 #include <net/ip.h>
 #include <net/arp.h>
+#include <net/netdev_lock.h>
 #include <net/net_namespace.h>
 
 #include <linux/bpqether.h>
index 9c6501bf27bde448e28fcc4c3f6cfdc81ddc3f2b..c51b318b8a72e483ca9dd20b66123f3c2603c95f 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/bpf.h>
 
 #include <net/arp.h>
+#include <net/netdev_lock.h>
 #include <net/route.h>
 #include <net/sock.h>
 #include <net/pkt_sched.h>
index b56144ca2fded21611724e86526c579d021d9581..0ed2fd833a5db7c76ede7a9ae096815033220880 100644 (file)
@@ -3,6 +3,7 @@
  */
 
 #include <linux/ethtool.h>
+#include <net/netdev_lock.h>
 
 #include "ipvlan.h"
 
index 201fddcd3b1e86587a2a69408644610d4f74eb70..1fb6ce6843ade8f5a30603a1691819dd14c4905b 100644 (file)
@@ -54,6 +54,7 @@
 #include <linux/percpu.h>
 #include <linux/net_tstamp.h>
 #include <net/net_namespace.h>
+#include <net/netdev_lock.h>
 #include <linux/u64_stats_sync.h>
 
 /* blackhole_netdev - a device used for dsts that are marked expired!
index 4de5d63fd577cd1c8cb58b0ddbf932ce8d24452f..3d315e30ee472549e46e90235fa850c0aabf85b8 100644 (file)
@@ -19,6 +19,7 @@
 #include <net/gro_cells.h>
 #include <net/macsec.h>
 #include <net/dst_metadata.h>
+#include <net/netdev_lock.h>
 #include <linux/phy.h>
 #include <linux/byteorder/generic.h>
 #include <linux/if_arp.h>
index 4e9d54be887c1cb255b697f3ea51a49b055049db..d0dfa6bca6cc2069b05816a01b5cc3f2f359cbab 100644 (file)
@@ -28,6 +28,7 @@
 #include <linux/if_macvlan.h>
 #include <linux/hash.h>
 #include <linux/workqueue.h>
+#include <net/netdev_lock.h>
 #include <net/rtnetlink.h>
 #include <net/xfrm.h>
 #include <linux/netpoll.h>
index 54d03b0628d223c16d07ea394663605a4e66cce3..d71fd2907cc80d2208a29411188c347351156120 100644 (file)
@@ -25,6 +25,7 @@
 #include <net/page_pool/helpers.h>
 #include <net/netlink.h>
 #include <net/net_shaper.h>
+#include <net/netdev_lock.h>
 #include <net/pkt_cls.h>
 #include <net/rtnetlink.h>
 #include <net/udp_tunnel.h>
index ca77661688c0c87587e02e48a3eedd19c43d2eaa..53463767cc43eb18fddaebe43aa88686db639ecf 100644 (file)
@@ -45,6 +45,7 @@
 #include <linux/slab.h>
 #include <linux/file.h>
 #include <linux/unaligned.h>
+#include <net/netdev_lock.h>
 #include <net/slhc_vj.h>
 #include <linux/atomic.h>
 #include <linux/refcount.h>
index fb917560d0a24fb5b909c01345421855f210a5f4..d8fc0c79745d33cd0beccad66e14984a8bc408d6 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/rtnetlink.h>
 #include <net/rtnetlink.h>
 #include <net/genetlink.h>
+#include <net/netdev_lock.h>
 #include <net/netlink.h>
 #include <net/sch_generic.h>
 #include <linux/if_team.h>
index 05f5eeef539f0427809b5eece79cc5db66f387ba..7bb53961c0eaf4de642d20e49c9e47770dc367dd 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <net/rtnetlink.h>
 #include <net/dst.h>
+#include <net/netdev_lock.h>
 #include <net/xfrm.h>
 #include <net/xdp.h>
 #include <linux/veth.h>
index 36cf6191335ea3b1309d3506dc5a561982e52cd2..7168b33adadb0dc799b8b7e3bea739ae95315218 100644 (file)
@@ -34,6 +34,7 @@
 #include <net/addrconf.h>
 #include <net/l3mdev.h>
 #include <net/fib_rules.h>
+#include <net/netdev_lock.h>
 #include <net/sch_generic.h>
 #include <net/netns/generic.h>
 #include <net/netfilter/nf_conntrack.h>
index 227d7f5a302a9046df253f46148f45d88fbd1a93..8c49e903cb3a19446c6ab1dc0a5f34f00cb50f8b 100644 (file)
@@ -25,6 +25,7 @@
 #include <net/inet_ecn.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/netdev_lock.h>
 #include <net/tun_proto.h>
 #include <net/vxlan.h>
 #include <net/nexthop.h>
index d206c9592b60fcefe4db46f0174f8f3b66f786d6..9a297757df7eba0673c95f608551de7705716abe 100644 (file)
@@ -2630,40 +2630,6 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev,
                f(dev, &dev->_tx[i], arg);
 }
 
-static inline int netdev_lock_cmp_fn(const struct lockdep_map *a,
-                                    const struct lockdep_map *b)
-{
-       /* Only lower devices currently grab the instance lock, so no
-        * real ordering issues can occur. In the near future, only
-        * hardware devices will grab instance lock which also does not
-        * involve any ordering. Suppress lockdep ordering warnings
-        * until (if) we start grabbing instance lock on pure SW
-        * devices (bond/team/veth/etc).
-        */
-       if (a == b)
-               return 0;
-       return -1;
-}
-
-#define netdev_lockdep_set_classes(dev)                                \
-{                                                              \
-       static struct lock_class_key qdisc_tx_busylock_key;     \
-       static struct lock_class_key qdisc_xmit_lock_key;       \
-       static struct lock_class_key dev_addr_list_lock_key;    \
-       static struct lock_class_key dev_instance_lock_key;     \
-       unsigned int i;                                         \
-                                                               \
-       (dev)->qdisc_tx_busylock = &qdisc_tx_busylock_key;      \
-       lockdep_set_class(&(dev)->addr_list_lock,               \
-                         &dev_addr_list_lock_key);             \
-       lockdep_set_class(&(dev)->lock,                         \
-                         &dev_instance_lock_key);              \
-       lock_set_cmp_fn(&dev->lock, netdev_lock_cmp_fn, NULL);  \
-       for (i = 0; i < (dev)->num_tx_queues; i++)              \
-               lockdep_set_class(&(dev)->_tx[i]._xmit_lock,    \
-                                 &qdisc_xmit_lock_key);        \
-}
-
 u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
                     struct net_device *sb_dev);
 struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
@@ -2765,56 +2731,11 @@ static inline void netdev_lock(struct net_device *dev)
        mutex_lock(&dev->lock);
 }
 
-static inline bool netdev_trylock(struct net_device *dev)
-{
-       return mutex_trylock(&dev->lock);
-}
-
 static inline void netdev_unlock(struct net_device *dev)
 {
        mutex_unlock(&dev->lock);
 }
-
-static inline void netdev_assert_locked(struct net_device *dev)
-{
-       lockdep_assert_held(&dev->lock);
-}
-
-static inline void netdev_assert_locked_or_invisible(struct net_device *dev)
-{
-       if (dev->reg_state == NETREG_REGISTERED ||
-           dev->reg_state == NETREG_UNREGISTERING)
-               netdev_assert_locked(dev);
-}
-
-static inline bool netdev_need_ops_lock(struct net_device *dev)
-{
-       bool ret = dev->request_ops_lock || !!dev->queue_mgmt_ops;
-
-#if IS_ENABLED(CONFIG_NET_SHAPER)
-       ret |= !!dev->netdev_ops->net_shaper_ops;
-#endif
-
-       return ret;
-}
-
-static inline void netdev_lock_ops(struct net_device *dev)
-{
-       if (netdev_need_ops_lock(dev))
-               netdev_lock(dev);
-}
-
-static inline void netdev_unlock_ops(struct net_device *dev)
-{
-       if (netdev_need_ops_lock(dev))
-               netdev_unlock(dev);
-}
-
-static inline void netdev_ops_assert_locked(struct net_device *dev)
-{
-       if (netdev_need_ops_lock(dev))
-               lockdep_assert_held(&dev->lock);
-}
+/* Additional netdev_lock()-related helpers are in net/netdev_lock.h */
 
 void netif_napi_set_irq_locked(struct napi_struct *napi, int irq);
 
diff --git a/include/net/netdev_lock.h b/include/net/netdev_lock.h
new file mode 100644 (file)
index 0000000..99631fb
--- /dev/null
@@ -0,0 +1,89 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef _NET_NETDEV_LOCK_H
+#define _NET_NETDEV_LOCK_H
+
+#include <linux/lockdep.h>
+#include <linux/netdevice.h>
+
+static inline bool netdev_trylock(struct net_device *dev)
+{
+       return mutex_trylock(&dev->lock);
+}
+
+static inline void netdev_assert_locked(struct net_device *dev)
+{
+       lockdep_assert_held(&dev->lock);
+}
+
+static inline void netdev_assert_locked_or_invisible(struct net_device *dev)
+{
+       if (dev->reg_state == NETREG_REGISTERED ||
+           dev->reg_state == NETREG_UNREGISTERING)
+               netdev_assert_locked(dev);
+}
+
+static inline bool netdev_need_ops_lock(struct net_device *dev)
+{
+       bool ret = dev->request_ops_lock || !!dev->queue_mgmt_ops;
+
+#if IS_ENABLED(CONFIG_NET_SHAPER)
+       ret |= !!dev->netdev_ops->net_shaper_ops;
+#endif
+
+       return ret;
+}
+
+static inline void netdev_lock_ops(struct net_device *dev)
+{
+       if (netdev_need_ops_lock(dev))
+               netdev_lock(dev);
+}
+
+static inline void netdev_unlock_ops(struct net_device *dev)
+{
+       if (netdev_need_ops_lock(dev))
+               netdev_unlock(dev);
+}
+
+static inline void netdev_ops_assert_locked(struct net_device *dev)
+{
+       if (netdev_need_ops_lock(dev))
+               lockdep_assert_held(&dev->lock);
+}
+
+static inline int netdev_lock_cmp_fn(const struct lockdep_map *a,
+                                    const struct lockdep_map *b)
+{
+       /* Only lower devices currently grab the instance lock, so no
+        * real ordering issues can occur. In the near future, only
+        * hardware devices will grab instance lock which also does not
+        * involve any ordering. Suppress lockdep ordering warnings
+        * until (if) we start grabbing instance lock on pure SW
+        * devices (bond/team/veth/etc).
+        */
+       if (a == b)
+               return 0;
+       return -1;
+}
+
+#define netdev_lockdep_set_classes(dev)                                \
+{                                                              \
+       static struct lock_class_key qdisc_tx_busylock_key;     \
+       static struct lock_class_key qdisc_xmit_lock_key;       \
+       static struct lock_class_key dev_addr_list_lock_key;    \
+       static struct lock_class_key dev_instance_lock_key;     \
+       unsigned int i;                                         \
+                                                               \
+       (dev)->qdisc_tx_busylock = &qdisc_tx_busylock_key;      \
+       lockdep_set_class(&(dev)->addr_list_lock,               \
+                         &dev_addr_list_lock_key);             \
+       lockdep_set_class(&(dev)->lock,                         \
+                         &dev_instance_lock_key);              \
+       lock_set_cmp_fn(&dev->lock, netdev_lock_cmp_fn, NULL);  \
+       for (i = 0; i < (dev)->num_tx_queues; i++)              \
+               lockdep_set_class(&(dev)->_tx[i]._xmit_lock,    \
+                                 &qdisc_xmit_lock_key);        \
+}
+
+#endif
index 4f707cfe7f103c8a480d534cddcc75e958f0bd57..42ae8d595c2c226d93d8d300082f7f0704d962dd 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/rhashtable.h>
 #include <linux/rtnetlink.h>
 #include <linux/rwsem.h>
+#include <net/netdev_lock.h>
 #include <net/xdp.h>
 
 /* Protects offdevs, members of bpf_offload_netdev and offload members
index ee328340071688e05b16881c8114db518e8d3180..770a4dcf7f634c81d667f83268f55b4faed1c111 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/phy.h>
 #include <net/arp.h>
 #include <net/macsec.h>
+#include <net/netdev_lock.h>
 
 #include "vlan.h"
 #include "vlanproc.h"
index 50cfec8ccac4f789fc1d4970878640dcbd8a4fac..1298c8685bad3afb78e5fe5439463e79783d6499 100644 (file)
@@ -13,6 +13,7 @@
 #include <net/ipv6.h>
 #include <net/ip6_route.h>
 #include <net/addrconf.h>
+#include <net/netdev_lock.h>
 #include <net/pkt_sched.h>
 
 #include <net/bluetooth/bluetooth.h>
index 9d8c72ed01aba3571527fa59a6c5f9874e467233..a818fdc22da9ad8c0d82bb61cfff167d7624e4ad 100644 (file)
@@ -16,6 +16,8 @@
 #include <linux/netfilter_bridge.h>
 
 #include <linux/uaccess.h>
+#include <net/netdev_lock.h>
+
 #include "br_private.h"
 
 #define COMMON_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA | \
index a0f75a1d1f5a7244bc82fab5e0545238550cfa16..1cb134ff7327047aa7572dd492469cdba3916db3 100644 (file)
 #include <linux/pm_runtime.h>
 #include <linux/prandom.h>
 #include <linux/once_lite.h>
+#include <net/netdev_lock.h>
 #include <net/netdev_rx_queue.h>
 #include <net/page_pool/types.h>
 #include <net/page_pool/helpers.h>
index b50ca645c086349810b6a707a41cb314d89bec75..0ddd3631acb01667831042c86e736d826264ccf4 100644 (file)
@@ -6,6 +6,7 @@
 #include <linux/types.h>
 #include <linux/rwsem.h>
 #include <linux/netdevice.h>
+#include <net/netdev_lock.h>
 
 struct net;
 struct netlink_ext_ack;
index 655a95fb7baa6dcd3674997ff9e3ebe30ab2d9b8..1f0e24849bc65f253c389ff4e553b01d235d4267 100644 (file)
@@ -1,5 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
+
 #include <linux/netdevice.h>
+#include <net/netdev_lock.h>
 
 #include "dev.h"
 
index 296e52d1395d66b5fe8be8271f795764897999a7..5471cf4fc98493923df56b2f5c579c79d9ccd7bc 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/wireless.h>
 #include <linux/if_bridge.h>
 #include <net/dsa_stubs.h>
+#include <net/netdev_lock.h>
 #include <net/wext.h>
 
 #include "dev.h"
index 02d1d40b47ae3eee5520004b4746093a754d315f..529a0f721268209c8d8740af2c2607321e6ff7af 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/of.h>
 #include <linux/of_net.h>
 #include <linux/cpu.h>
+#include <net/netdev_lock.h>
 #include <net/netdev_rx_queue.h>
 #include <net/rps.h>
 
index 88a352b02bcef06ac9e028ac90e555a9db44be16..90597bf84e3d395bed3bea5778b68ede017e3dff 100644 (file)
@@ -53,6 +53,7 @@
 #include <net/fib_rules.h>
 #include <net/rtnetlink.h>
 #include <net/net_namespace.h>
+#include <net/netdev_lock.h>
 #include <net/devlink.h>
 #if IS_ENABLED(CONFIG_IPV6)
 #include <net/addrconf.h>
index f21bb2551bed2831da8515d9ee5c3ff7957a5189..4ae255cfb23f8a022aa9653d83b8f125cb8b2f34 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/netdevice.h>
 #include <linux/netlink.h>
 #include <net/dsa.h>
+#include <net/netdev_lock.h>
 
 #include "conduit.h"
 #include "dsa.h"
index ddcba073321f0ed4a88647659c0dda54c4f14ee6..0364b8fb577bc3ade49d5937b176dc08c1a02dc5 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <linux/phy.h>
 #include <linux/ethtool_netlink.h>
+#include <net/netdev_lock.h>
 #include "netlink.h"
 #include "common.h"
 
index 946830af3e7cc46d79e39d1694edfb39e6c6693b..df5f344209c47bee0795a9c506e99f6c66c323da 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <linux/ethtool.h>
 #include <linux/firmware.h>
+#include <net/netdev_lock.h>
 
 #include "common.h"
 #include "module_fw.h"
index ccffd64d5a87997f60fff038a26b0cf99e1d43de..f2217983be2bdb59800849e2b6898bf9c7b73dc7 100644 (file)
@@ -1,5 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-only
 
+#include <net/netdev_lock.h>
+
 #include "netlink.h"
 #include "common.h"
 #include "bitset.h"
index 496a2774100c6d30dcf9710a46eb3e0ba95245e6..221639407c7245e4875e6853c4290404974a5c41 100644 (file)
@@ -31,6 +31,7 @@
 #include <net/ipv6.h>
 #include <net/xdp_sock_drv.h>
 #include <net/flow_offload.h>
+#include <net/netdev_lock.h>
 #include <linux/ethtool_netlink.h>
 #include "common.h"
 
index d3d2e135e45ebaf6cfec6a9a251f8e3f758e3c5e..4d4e0a82579a2b14b9f02fd7cb0edb7ca3990661 100644 (file)
@@ -4,6 +4,7 @@
 #include <linux/firmware.h>
 #include <linux/sfp.h>
 #include <net/devlink.h>
+#include <net/netdev_lock.h>
 
 #include "netlink.h"
 #include "common.h"
index 70834947f474cb724073e890d3d4f428e7d4e785..a163d40c6431b9b623e702f2318d26dc457fa458 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 
+#include <net/netdev_lock.h>
 #include <net/netdev_queues.h>
 #include <net/sock.h>
 #include <linux/ethtool_netlink.h>
index 1a6b725d1f146b670a063c101fb7c71da7c9eb09..1f590e8d75ed6a2bac20f0ba167be9a548fcda0a 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/phy.h>
 #include <linux/phy_link_topology.h>
 #include <linux/sfp.h>
+#include <net/netdev_lock.h>
 
 struct phy_req_info {
        struct ethnl_req_info           base;
index ec41d1d7eefe46170e3a682c53a1c4eafbbccabb..6d9b1769896ba1c1b8b0a53d31f315c61ea0938c 100644 (file)
@@ -1,5 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-only
 
+#include <net/netdev_lock.h>
+
 #include "netlink.h"
 #include "common.h"
 
index 73b6a89b8731680c3ed8e678f9cb8400943a0a30..32204cca24da303659a291b3de45db0102d0121f 100644 (file)
@@ -4,6 +4,7 @@
 #include <linux/phy.h>
 #include <linux/phy_link_topology.h>
 #include <linux/ptp_clock_kernel.h>
+#include <net/netdev_lock.h>
 
 #include "netlink.h"
 #include "common.h"
index 9a9da74b0a4fadbd26860b17bd94fd69aa1ab124..018929563c6bc3b3efc43f965dfefe2e94151074 100644 (file)
@@ -50,6 +50,7 @@
 #include <linux/if_arp.h>
 
 #include <net/ipv6.h>
+#include <net/netdev_lock.h>
 
 #include "6lowpan_i.h"
 
index 4b06dc7e04f2f1f4388c1cf2721e1d0b7f6bf220..1024f961ec9addf5376862986e099de3125303cf 100644 (file)
@@ -40,6 +40,7 @@
 #include <net/xfrm.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/netdev_lock.h>
 #include <net/rtnetlink.h>
 #include <net/udp.h>
 #include <net/dst_metadata.h>
index c6ebb6a6d3908e953fcf0eb00bb5370dfd7169f9..957ca98fa70f98f46cfbe88aecb594301e3f084c 100644 (file)
@@ -43,6 +43,7 @@
 #include <net/xfrm.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/netdev_lock.h>
 #include <net/rtnetlink.h>
 
 #include <net/ipv6.h>
index 170a6ac30889a6c9764743665b9f62874e597459..a04dd1bb4b195327845ec49253fd649edae869ef 100644 (file)
@@ -52,6 +52,7 @@
 #include <net/inet_ecn.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/netdev_lock.h>
 #include <net/dst_metadata.h>
 #include <net/inet_dscp.h>
 
index 83c055996fbb0d81d870c832b3571a91cd71a800..09ec4b0ad7dc669053f3cdbd2ae78937abba3df8 100644 (file)
@@ -45,6 +45,7 @@
 #include <net/xfrm.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/netdev_lock.h>
 #include <linux/etherdevice.h>
 
 #define IP6_VTI_HASH_SIZE_SHIFT  5
index 6f04703fe638653367cd76ac6125c911b08e8fef..9a0f32acb75009dcb914041ff8d9b8cf43c1b96f 100644 (file)
@@ -51,6 +51,7 @@
 #include <net/dsfield.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/netdev_lock.h>
 #include <net/inet_dscp.h>
 
 /*
index e836910734967197dc5309e4ae93c58baa7ecef7..cf0b66f4fb29b6c0337a5f90d940b078c86895a4 100644 (file)
@@ -25,6 +25,7 @@
 #include <net/xfrm.h>
 #include <net/net_namespace.h>
 #include <net/netns/generic.h>
+#include <net/netdev_lock.h>
 #include <linux/ip.h>
 #include <linux/ipv6.h>
 #include <linux/udp.h>
index f5101c2ffc664baf591a128e196cb230b29d13af..abace7665cfe6a0dd11857eeee2092d7127294e7 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/slab.h>
 #include <linux/hashtable.h>
 
+#include <net/netdev_lock.h>
 #include <net/net_namespace.h>
 #include <net/sock.h>
 #include <net/netlink.h>
index f864e5d70b40af831ebb4ca0a8f112f15876887b..e5d104ce7b82f4072ed796fdb56eaabeec9ec99e 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/vmalloc.h>
 #include <net/xdp_sock_drv.h>
 #include <net/busy_poll.h>
+#include <net/netdev_lock.h>
 #include <net/netdev_rx_queue.h>
 #include <net/xdp.h>
 
index 0e6ca568fdeeb9d62f207604212b95d1afdddbf4..14716ad3d7bc49eb3c2229f43f7cdb044e14b3f2 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 
 #include <linux/netdevice.h>
+#include <net/netdev_lock.h>
 #include <net/xsk_buff_pool.h>
 #include <net/xdp_sock.h>
 #include <net/xdp_sock_drv.h>