hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/include/linux/netdevice.h
....@@ -1,3 +1,4 @@
1
+/* SPDX-License-Identifier: GPL-2.0-or-later */
12 /*
23 * INET An implementation of the TCP/IP protocol suite for the LINUX
34 * operating system. INET is implemented using the BSD Socket
....@@ -14,11 +15,6 @@
1415 * Alan Cox, <alan@lxorguk.ukuu.org.uk>
1516 * Bjorn Ekwall. <bj0rn@blox.se>
1617 * Pekka Riikonen <priikone@poseidon.pspt.fi>
17
- *
18
- * This program is free software; you can redistribute it and/or
19
- * modify it under the terms of the GNU General Public License
20
- * as published by the Free Software Foundation; either version
21
- * 2 of the License, or (at your option) any later version.
2218 *
2319 * Moved to /usr/include/linux for NET3
2420 */
....@@ -58,6 +54,9 @@
5854 struct device;
5955 struct phy_device;
6056 struct dsa_port;
57
+struct ip_tunnel_parm;
58
+struct macsec_context;
59
+struct macsec_ops;
6160
6261 struct sfp_bus;
6362 /* 802.11 specific */
....@@ -67,15 +66,20 @@
6766 struct mpls_dev;
6867 /* UDP Tunnel offloads */
6968 struct udp_tunnel_info;
69
+struct udp_tunnel_nic_info;
70
+struct udp_tunnel_nic;
7071 struct bpf_prog;
7172 struct xdp_buff;
7273
74
+void synchronize_net(void);
7375 void netdev_set_default_ethtool_ops(struct net_device *dev,
7476 const struct ethtool_ops *ops);
7577
7678 /* Backlog congestion levels */
7779 #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */
7880 #define NET_RX_DROP 1 /* packet dropped */
81
+
82
+#define MAX_NEST_DEV 8
7983
8084 /*
8185 * Transmit return codes: transmit return codes originate from three different
....@@ -195,8 +199,8 @@
195199
196200 #ifdef CONFIG_RPS
197201 #include <linux/static_key.h>
198
-extern struct static_key rps_needed;
199
-extern struct static_key rfs_needed;
202
+extern struct static_key_false rps_needed;
203
+extern struct static_key_false rfs_needed;
200204 #endif
201205
202206 struct neighbour;
....@@ -209,9 +213,8 @@
209213 unsigned char type;
210214 #define NETDEV_HW_ADDR_T_LAN 1
211215 #define NETDEV_HW_ADDR_T_SAN 2
212
-#define NETDEV_HW_ADDR_T_SLAVE 3
213
-#define NETDEV_HW_ADDR_T_UNICAST 4
214
-#define NETDEV_HW_ADDR_T_MULTICAST 5
216
+#define NETDEV_HW_ADDR_T_UNICAST 3
217
+#define NETDEV_HW_ADDR_T_MULTICAST 4
215218 bool global_use;
216219 int sync_cnt;
217220 int refcount;
....@@ -261,9 +264,11 @@
261264 * relationship HH alignment <= LL alignment.
262265 */
263266 #define LL_RESERVED_SPACE(dev) \
264
- ((((dev)->hard_header_len+(dev)->needed_headroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
267
+ ((((dev)->hard_header_len + READ_ONCE((dev)->needed_headroom)) \
268
+ & ~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
265269 #define LL_RESERVED_SPACE_EXTRA(dev,extra) \
266
- ((((dev)->hard_header_len+(dev)->needed_headroom+(extra))&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
270
+ ((((dev)->hard_header_len + READ_ONCE((dev)->needed_headroom) + (extra)) \
271
+ & ~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
267272
268273 struct header_ops {
269274 int (*create) (struct sk_buff *skb, struct net_device *dev,
....@@ -275,6 +280,7 @@
275280 const struct net_device *dev,
276281 const unsigned char *haddr);
277282 bool (*validate)(const char *ll_header, unsigned int len);
283
+ __be16 (*parse_protocol)(const struct sk_buff *skb);
278284
279285 ANDROID_KABI_RESERVE(1);
280286 ANDROID_KABI_RESERVE(2);
....@@ -291,6 +297,7 @@
291297 __LINK_STATE_NOCARRIER,
292298 __LINK_STATE_LINKWATCH_PENDING,
293299 __LINK_STATE_DORMANT,
300
+ __LINK_STATE_TESTING,
294301 };
295302
296303
....@@ -331,6 +338,7 @@
331338
332339 unsigned long state;
333340 int weight;
341
+ int defer_hard_irqs_count;
334342 unsigned long gro_bitmask;
335343 int (*poll)(struct napi_struct *, int);
336344 #ifdef CONFIG_NETPOLL
....@@ -339,6 +347,8 @@
339347 struct net_device *dev;
340348 struct gro_list gro_hash[GRO_HASH_BUCKETS];
341349 struct sk_buff *skb;
350
+ struct list_head rx_list; /* Pending GRO_NORMAL skbs */
351
+ int rx_count; /* length of rx_list */
342352 struct hrtimer timer;
343353 struct list_head dev_list;
344354 struct hlist_node napi_hash_node;
....@@ -355,7 +365,7 @@
355365 NAPI_STATE_MISSED, /* reschedule a napi */
356366 NAPI_STATE_DISABLE, /* Disable pending */
357367 NAPI_STATE_NPSVC, /* Netpoll - don't dequeue from poll_list */
358
- NAPI_STATE_HASHED, /* In NAPI hash (busy polling possible) */
368
+ NAPI_STATE_LISTED, /* NAPI added to system lists */
359369 NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
360370 NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
361371 };
....@@ -365,7 +375,7 @@
365375 NAPIF_STATE_MISSED = BIT(NAPI_STATE_MISSED),
366376 NAPIF_STATE_DISABLE = BIT(NAPI_STATE_DISABLE),
367377 NAPIF_STATE_NPSVC = BIT(NAPI_STATE_NPSVC),
368
- NAPIF_STATE_HASHED = BIT(NAPI_STATE_HASHED),
378
+ NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED),
369379 NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
370380 NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
371381 };
....@@ -431,19 +441,7 @@
431441 typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);
432442
433443 void __napi_schedule(struct napi_struct *n);
434
-
435
-/*
436
- * When PREEMPT_RT_FULL is defined, all device interrupt handlers
437
- * run as threads, and they can also be preempted (without PREEMPT_RT
438
- * interrupt threads can not be preempted). Which means that calling
439
- * __napi_schedule_irqoff() from an interrupt handler can be preempted
440
- * and can corrupt the napi->poll_list.
441
- */
442
-#ifdef CONFIG_PREEMPT_RT_FULL
443
-#define __napi_schedule_irqoff(n) __napi_schedule(n)
444
-#else
445444 void __napi_schedule_irqoff(struct napi_struct *n);
446
-#endif
447445
448446 static inline bool napi_disable_pending(struct napi_struct *n)
449447 {
....@@ -502,20 +500,6 @@
502500 }
503501
504502 /**
505
- * napi_hash_del - remove a NAPI from global table
506
- * @napi: NAPI context
507
- *
508
- * Warning: caller must observe RCU grace period
509
- * before freeing memory containing @napi, if
510
- * this function returns true.
511
- * Note: core networking stack automatically calls it
512
- * from netif_napi_del().
513
- * Drivers might want to call this helper to combine all
514
- * the needed RCU grace periods into a single one.
515
- */
516
-bool napi_hash_del(struct napi_struct *napi);
517
-
518
-/**
519503 * napi_disable - prevent NAPI from scheduling
520504 * @n: NAPI context
521505 *
....@@ -554,6 +538,32 @@
554538 msleep(1);
555539 else
556540 barrier();
541
+}
542
+
543
+/**
544
+ * napi_if_scheduled_mark_missed - if napi is running, set the
545
+ * NAPIF_STATE_MISSED
546
+ * @n: NAPI context
547
+ *
548
+ * If napi is running, set the NAPIF_STATE_MISSED, and return true if
549
+ * NAPI is scheduled.
550
+ **/
551
+static inline bool napi_if_scheduled_mark_missed(struct napi_struct *n)
552
+{
553
+ unsigned long val, new;
554
+
555
+ do {
556
+ val = READ_ONCE(n->state);
557
+ if (val & NAPIF_STATE_DISABLE)
558
+ return true;
559
+
560
+ if (!(val & NAPIF_STATE_SCHED))
561
+ return false;
562
+
563
+ new = val | NAPIF_STATE_MISSED;
564
+ } while (cmpxchg(&n->state, val, new) != val);
565
+
566
+ return true;
557567 }
558568
559569 enum netdev_queue_state_t {
....@@ -604,15 +614,14 @@
604614
605615 /* Subordinate device that the queue has been assigned to */
606616 struct net_device *sb_dev;
617
+#ifdef CONFIG_XDP_SOCKETS
618
+ struct xsk_buff_pool *pool;
619
+#endif
607620 /*
608621 * write-mostly part
609622 */
610623 spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
611
-#ifdef CONFIG_PREEMPT_RT_FULL
612
- struct task_struct *xmit_lock_owner;
613
-#else
614624 int xmit_lock_owner;
615
-#endif
616625 /*
617626 * Time (in jiffies) of last Tx
618627 */
....@@ -631,12 +640,32 @@
631640 } ____cacheline_aligned_in_smp;
632641
633642 extern int sysctl_fb_tunnels_only_for_init_net;
643
+extern int sysctl_devconf_inherit_init_net;
634644
645
+/*
646
+ * sysctl_fb_tunnels_only_for_init_net == 0 : For all netns
647
+ * == 1 : For initns only
648
+ * == 2 : For none.
649
+ */
635650 static inline bool net_has_fallback_tunnels(const struct net *net)
636651 {
637
- return net == &init_net ||
638
- !IS_ENABLED(CONFIG_SYSCTL) ||
639
- !sysctl_fb_tunnels_only_for_init_net;
652
+#if IS_ENABLED(CONFIG_SYSCTL)
653
+ int fb_tunnels_only_for_init_net = READ_ONCE(sysctl_fb_tunnels_only_for_init_net);
654
+
655
+ return !fb_tunnels_only_for_init_net ||
656
+ (net_eq(net, &init_net) && fb_tunnels_only_for_init_net == 1);
657
+#else
658
+ return true;
659
+#endif
660
+}
661
+
662
+static inline int net_inherit_devconf(void)
663
+{
664
+#if IS_ENABLED(CONFIG_SYSCTL)
665
+ return READ_ONCE(sysctl_devconf_inherit_init_net);
666
+#else
667
+ return 0;
668
+#endif
640669 }
641670
642671 static inline int netdev_queue_numa_node_read(const struct netdev_queue *q)
....@@ -663,7 +692,7 @@
663692 struct rps_map {
664693 unsigned int len;
665694 struct rcu_head rcu;
666
- u16 cpus[0];
695
+ u16 cpus[];
667696 };
668697 #define RPS_MAP_SIZE(_num) (sizeof(struct rps_map) + ((_num) * sizeof(u16)))
669698
....@@ -685,7 +714,7 @@
685714 struct rps_dev_flow_table {
686715 unsigned int mask;
687716 struct rcu_head rcu;
688
- struct rps_dev_flow flows[0];
717
+ struct rps_dev_flow flows[];
689718 };
690719 #define RPS_DEV_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_dev_flow_table) + \
691720 ((_num) * sizeof(struct rps_dev_flow)))
....@@ -703,7 +732,7 @@
703732 struct rps_sock_flow_table {
704733 u32 mask;
705734
706
- u32 ents[0] ____cacheline_aligned_in_smp;
735
+ u32 ents[] ____cacheline_aligned_in_smp;
707736 };
708737 #define RPS_SOCK_FLOW_TABLE_SIZE(_num) (offsetof(struct rps_sock_flow_table, ents[_num]))
709738
....@@ -722,8 +751,11 @@
722751 /* We only give a hint, preemption can change CPU under us */
723752 val |= raw_smp_processor_id();
724753
725
- if (table->ents[index] != val)
726
- table->ents[index] = val;
754
+ /* The following WRITE_ONCE() is paired with the READ_ONCE()
755
+ * here, and another one in get_rps_cpu().
756
+ */
757
+ if (READ_ONCE(table->ents[index]) != val)
758
+ WRITE_ONCE(table->ents[index], val);
727759 }
728760 }
729761
....@@ -742,6 +774,9 @@
742774 struct kobject kobj;
743775 struct net_device *dev;
744776 struct xdp_rxq_info xdp_rxq;
777
+#ifdef CONFIG_XDP_SOCKETS
778
+ struct xsk_buff_pool *pool;
779
+#endif
745780
746781 ANDROID_KABI_RESERVE(1);
747782 ANDROID_KABI_RESERVE(2);
....@@ -768,7 +803,7 @@
768803 unsigned int len;
769804 unsigned int alloc_len;
770805 struct rcu_head rcu;
771
- u16 queues[0];
806
+ u16 queues[];
772807 };
773808 #define XPS_MAP_SIZE(_num) (sizeof(struct xps_map) + ((_num) * sizeof(u16)))
774809 #define XPS_MIN_MAP_ALLOC ((L1_CACHE_ALIGN(offsetof(struct xps_map, queues[1])) \
....@@ -779,7 +814,7 @@
779814 */
780815 struct xps_dev_maps {
781816 struct rcu_head rcu;
782
- struct xps_map __rcu *attr_map[0]; /* Either CPUs map or RXQs map */
817
+ struct xps_map __rcu *attr_map[]; /* Either CPUs map or RXQs map */
783818 };
784819
785820 #define XPS_CPU_DEV_MAPS_SIZE(_tcs) (sizeof(struct xps_dev_maps) + \
....@@ -848,6 +883,13 @@
848883 TC_SETUP_QDISC_PRIO,
849884 TC_SETUP_QDISC_MQ,
850885 TC_SETUP_QDISC_ETF,
886
+ TC_SETUP_ROOT_QDISC,
887
+ TC_SETUP_QDISC_GRED,
888
+ TC_SETUP_QDISC_TAPRIO,
889
+ TC_SETUP_FT,
890
+ TC_SETUP_QDISC_ETS,
891
+ TC_SETUP_QDISC_TBF,
892
+ TC_SETUP_QDISC_FIFO,
851893 };
852894
853895 /* These structures hold the attributes of bpf state that are being passed
....@@ -863,21 +905,29 @@
863905 */
864906 XDP_SETUP_PROG,
865907 XDP_SETUP_PROG_HW,
866
- XDP_QUERY_PROG,
867
- XDP_QUERY_PROG_HW,
868908 /* BPF program for offload callbacks, invoked at program load time. */
869
- BPF_OFFLOAD_VERIFIER_PREP,
870
- BPF_OFFLOAD_TRANSLATE,
871
- BPF_OFFLOAD_DESTROY,
872909 BPF_OFFLOAD_MAP_ALLOC,
873910 BPF_OFFLOAD_MAP_FREE,
874
- XDP_QUERY_XSK_UMEM,
875
- XDP_SETUP_XSK_UMEM,
911
+ XDP_SETUP_XSK_POOL,
876912 };
877913
878914 struct bpf_prog_offload_ops;
879915 struct netlink_ext_ack;
880916 struct xdp_umem;
917
+struct xdp_dev_bulk_queue;
918
+struct bpf_xdp_link;
919
+
920
+enum bpf_xdp_mode {
921
+ XDP_MODE_SKB = 0,
922
+ XDP_MODE_DRV = 1,
923
+ XDP_MODE_HW = 2,
924
+ __MAX_XDP_MODE
925
+};
926
+
927
+struct bpf_xdp_entity {
928
+ struct bpf_prog *prog;
929
+ struct bpf_xdp_link *link;
930
+};
881931
882932 struct netdev_bpf {
883933 enum bpf_netdev_command command;
....@@ -888,32 +938,21 @@
888938 struct bpf_prog *prog;
889939 struct netlink_ext_ack *extack;
890940 };
891
- /* XDP_QUERY_PROG, XDP_QUERY_PROG_HW */
892
- struct {
893
- u32 prog_id;
894
- /* flags with which program was installed */
895
- u32 prog_flags;
896
- };
897
- /* BPF_OFFLOAD_VERIFIER_PREP */
898
- struct {
899
- struct bpf_prog *prog;
900
- const struct bpf_prog_offload_ops *ops; /* callee set */
901
- } verifier;
902
- /* BPF_OFFLOAD_TRANSLATE, BPF_OFFLOAD_DESTROY */
903
- struct {
904
- struct bpf_prog *prog;
905
- } offload;
906941 /* BPF_OFFLOAD_MAP_ALLOC, BPF_OFFLOAD_MAP_FREE */
907942 struct {
908943 struct bpf_offloaded_map *offmap;
909944 };
910
- /* XDP_QUERY_XSK_UMEM, XDP_SETUP_XSK_UMEM */
945
+ /* XDP_SETUP_XSK_POOL */
911946 struct {
912
- struct xdp_umem *umem; /* out for query*/
913
- u16 queue_id; /* in for query */
947
+ struct xsk_buff_pool *pool;
948
+ u16 queue_id;
914949 } xsk;
915950 };
916951 };
952
+
953
+/* Flags for ndo_xsk_wakeup. */
954
+#define XDP_WAKEUP_RX (1 << 0)
955
+#define XDP_WAKEUP_TX (1 << 1)
917956
918957 #ifdef CONFIG_XFRM_OFFLOAD
919958 struct xfrmdev_ops {
....@@ -931,35 +970,27 @@
931970 };
932971 #endif
933972
934
-#if IS_ENABLED(CONFIG_TLS_DEVICE)
935
-enum tls_offload_ctx_dir {
936
- TLS_OFFLOAD_CTX_DIR_RX,
937
- TLS_OFFLOAD_CTX_DIR_TX,
938
-};
939
-
940
-struct tls_crypto_info;
941
-struct tls_context;
942
-
943
-struct tlsdev_ops {
944
- int (*tls_dev_add)(struct net_device *netdev, struct sock *sk,
945
- enum tls_offload_ctx_dir direction,
946
- struct tls_crypto_info *crypto_info,
947
- u32 start_offload_tcp_sn);
948
- void (*tls_dev_del)(struct net_device *netdev,
949
- struct tls_context *ctx,
950
- enum tls_offload_ctx_dir direction);
951
- void (*tls_dev_resync_rx)(struct net_device *netdev,
952
- struct sock *sk, u32 seq, u64 rcd_sn);
953
- ANDROID_KABI_RESERVE(1);
954
- ANDROID_KABI_RESERVE(2);
955
- ANDROID_KABI_RESERVE(3);
956
- ANDROID_KABI_RESERVE(4);
957
-};
958
-#endif
959
-
960973 struct dev_ifalias {
961974 struct rcu_head rcuhead;
962975 char ifalias[];
976
+};
977
+
978
+struct devlink;
979
+struct tlsdev_ops;
980
+
981
+struct netdev_name_node {
982
+ struct hlist_node hlist;
983
+ struct list_head list;
984
+ struct net_device *dev;
985
+ const char *name;
986
+};
987
+
988
+int netdev_name_node_alt_create(struct net_device *dev, const char *name);
989
+int netdev_name_node_alt_destroy(struct net_device *dev, const char *name);
990
+
991
+struct netdev_net_notifier {
992
+ struct list_head list;
993
+ struct notifier_block *nb;
963994 };
964995
965996 /*
....@@ -1005,8 +1036,7 @@
10051036 * those the driver believes to be appropriate.
10061037 *
10071038 * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb,
1008
- * struct net_device *sb_dev,
1009
- * select_queue_fallback_t fallback);
1039
+ * struct net_device *sb_dev);
10101040 * Called to decide which queue to use when device supports multiple
10111041 * transmit queues.
10121042 *
....@@ -1041,7 +1071,7 @@
10411071 * Called when a user wants to change the Maximum Transfer Unit
10421072 * of a device.
10431073 *
1044
- * void (*ndo_tx_timeout)(struct net_device *dev);
1074
+ * void (*ndo_tx_timeout)(struct net_device *dev, unsigned int txqueue);
10451075 * Callback used when the transmitter has not made any progress
10461076 * for dev->watchdog ticks.
10471077 *
....@@ -1160,6 +1190,12 @@
11601190 * int (*ndo_del_slave)(struct net_device *dev, struct net_device *slave_dev);
11611191 * Called to release previously enslaved netdev.
11621192 *
1193
+ * struct net_device *(*ndo_get_xmit_slave)(struct net_device *dev,
1194
+ * struct sk_buff *skb,
1195
+ * bool all_slaves);
1196
+ * Get the xmit slave of master device. If all_slaves is true, function
1197
+ * assume all the slaves can transmit.
1198
+ *
11631199 * Feature/offload setting functions.
11641200 * netdev_features_t (*ndo_fix_features)(struct net_device *dev,
11651201 * netdev_features_t features);
....@@ -1174,7 +1210,8 @@
11741210 *
11751211 * int (*ndo_fdb_add)(struct ndmsg *ndm, struct nlattr *tb[],
11761212 * struct net_device *dev,
1177
- * const unsigned char *addr, u16 vid, u16 flags)
1213
+ * const unsigned char *addr, u16 vid, u16 flags,
1214
+ * struct netlink_ext_ack *extack);
11781215 * Adds an FDB entry to dev for addr.
11791216 * int (*ndo_fdb_del)(struct ndmsg *ndm, struct nlattr *tb[],
11801217 * struct net_device *dev,
....@@ -1187,7 +1224,7 @@
11871224 * entries to skb and update idx with the number of entries.
11881225 *
11891226 * int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh,
1190
- * u16 flags)
1227
+ * u16 flags, struct netlink_ext_ack *extack)
11911228 * int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq,
11921229 * struct net_device *dev, u32 filter_mask,
11931230 * int nlflags)
....@@ -1207,6 +1244,10 @@
12071244 * Called to get ID of physical port of this device. If driver does
12081245 * not implement this, it is assumed that the hw is not able to have
12091246 * multiple net devices on single physical port.
1247
+ *
1248
+ * int (*ndo_get_port_parent_id)(struct net_device *dev,
1249
+ * struct netdev_phys_item_id *ppid)
1250
+ * Called to get the parent ID of the physical port of this device.
12101251 *
12111252 * void (*ndo_udp_tunnel_add)(struct net_device *dev,
12121253 * struct udp_tunnel_info *ti);
....@@ -1265,6 +1306,22 @@
12651306 * that got dropped are freed/returned via xdp_return_frame().
12661307 * Returns negative number, means general error invoking ndo, meaning
12671308 * no frames were xmit'ed and core-caller will free all frames.
1309
+ * int (*ndo_xsk_wakeup)(struct net_device *dev, u32 queue_id, u32 flags);
1310
+ * This function is used to wake up the softirq, ksoftirqd or kthread
1311
+ * responsible for sending and/or receiving packets on a specific
1312
+ * queue id bound to an AF_XDP socket. The flags field specifies if
1313
+ * only RX, only Tx, or both should be woken up using the flags
1314
+ * XDP_WAKEUP_RX and XDP_WAKEUP_TX.
1315
+ * struct devlink_port *(*ndo_get_devlink_port)(struct net_device *dev);
1316
+ * Get devlink port instance associated with a given netdev.
1317
+ * Called with a reference on the netdevice and devlink locks only,
1318
+ * rtnl_lock is not held.
1319
+ * int (*ndo_tunnel_ctl)(struct net_device *dev, struct ip_tunnel_parm *p,
1320
+ * int cmd);
1321
+ * Add, change, delete or get information on an IPv4 tunnel.
1322
+ * struct net_device *(*ndo_get_peer_dev)(struct net_device *dev);
1323
+ * If a device is paired with a peer device, return the peer instance.
1324
+ * The caller must be under RCU read context.
12681325 */
12691326 struct net_device_ops {
12701327 int (*ndo_init)(struct net_device *dev);
....@@ -1278,8 +1335,7 @@
12781335 netdev_features_t features);
12791336 u16 (*ndo_select_queue)(struct net_device *dev,
12801337 struct sk_buff *skb,
1281
- struct net_device *sb_dev,
1282
- select_queue_fallback_t fallback);
1338
+ struct net_device *sb_dev);
12831339 void (*ndo_change_rx_flags)(struct net_device *dev,
12841340 int flags);
12851341 void (*ndo_set_rx_mode)(struct net_device *dev);
....@@ -1294,7 +1350,8 @@
12941350 int new_mtu);
12951351 int (*ndo_neigh_setup)(struct net_device *dev,
12961352 struct neigh_parms *);
1297
- void (*ndo_tx_timeout) (struct net_device *dev);
1353
+ void (*ndo_tx_timeout) (struct net_device *dev,
1354
+ unsigned int txqueue);
12981355
12991356 void (*ndo_get_stats64)(struct net_device *dev,
13001357 struct rtnl_link_stats64 *storage);
....@@ -1340,6 +1397,10 @@
13401397 struct nlattr *port[]);
13411398 int (*ndo_get_vf_port)(struct net_device *dev,
13421399 int vf, struct sk_buff *skb);
1400
+ int (*ndo_get_vf_guid)(struct net_device *dev,
1401
+ int vf,
1402
+ struct ifla_vf_guid *node_guid,
1403
+ struct ifla_vf_guid *port_guid);
13431404 int (*ndo_set_vf_guid)(struct net_device *dev,
13441405 int vf, u64 guid,
13451406 int guid_type);
....@@ -1384,6 +1445,9 @@
13841445 struct netlink_ext_ack *extack);
13851446 int (*ndo_del_slave)(struct net_device *dev,
13861447 struct net_device *slave_dev);
1448
+ struct net_device* (*ndo_get_xmit_slave)(struct net_device *dev,
1449
+ struct sk_buff *skb,
1450
+ bool all_slaves);
13871451 netdev_features_t (*ndo_fix_features)(struct net_device *dev,
13881452 netdev_features_t features);
13891453 int (*ndo_set_features)(struct net_device *dev,
....@@ -1398,7 +1462,8 @@
13981462 struct net_device *dev,
13991463 const unsigned char *addr,
14001464 u16 vid,
1401
- u16 flags);
1465
+ u16 flags,
1466
+ struct netlink_ext_ack *extack);
14021467 int (*ndo_fdb_del)(struct ndmsg *ndm,
14031468 struct nlattr *tb[],
14041469 struct net_device *dev,
....@@ -1409,10 +1474,16 @@
14091474 struct net_device *dev,
14101475 struct net_device *filter_dev,
14111476 int *idx);
1412
-
1477
+ int (*ndo_fdb_get)(struct sk_buff *skb,
1478
+ struct nlattr *tb[],
1479
+ struct net_device *dev,
1480
+ const unsigned char *addr,
1481
+ u16 vid, u32 portid, u32 seq,
1482
+ struct netlink_ext_ack *extack);
14131483 int (*ndo_bridge_setlink)(struct net_device *dev,
14141484 struct nlmsghdr *nlh,
1415
- u16 flags);
1485
+ u16 flags,
1486
+ struct netlink_ext_ack *extack);
14161487 int (*ndo_bridge_getlink)(struct sk_buff *skb,
14171488 u32 pid, u32 seq,
14181489 struct net_device *dev,
....@@ -1425,6 +1496,8 @@
14251496 bool new_carrier);
14261497 int (*ndo_get_phys_port_id)(struct net_device *dev,
14271498 struct netdev_phys_item_id *ppid);
1499
+ int (*ndo_get_port_parent_id)(struct net_device *dev,
1500
+ struct netdev_phys_item_id *ppid);
14281501 int (*ndo_get_phys_port_name)(struct net_device *dev,
14291502 char *name, size_t len);
14301503 void (*ndo_udp_tunnel_add)(struct net_device *dev,
....@@ -1436,7 +1509,6 @@
14361509 void (*ndo_dfwd_del_station)(struct net_device *pdev,
14371510 void *priv);
14381511
1439
- int (*ndo_get_lock_subclass)(struct net_device *dev);
14401512 int (*ndo_set_tx_maxrate)(struct net_device *dev,
14411513 int queue_index,
14421514 u32 maxrate);
....@@ -1452,8 +1524,12 @@
14521524 int (*ndo_xdp_xmit)(struct net_device *dev, int n,
14531525 struct xdp_frame **xdp,
14541526 u32 flags);
1455
- int (*ndo_xsk_async_xmit)(struct net_device *dev,
1456
- u32 queue_id);
1527
+ int (*ndo_xsk_wakeup)(struct net_device *dev,
1528
+ u32 queue_id, u32 flags);
1529
+ struct devlink_port * (*ndo_get_devlink_port)(struct net_device *dev);
1530
+ int (*ndo_tunnel_ctl)(struct net_device *dev,
1531
+ struct ip_tunnel_parm *p, int cmd);
1532
+ struct net_device * (*ndo_get_peer_dev)(struct net_device *dev);
14571533
14581534 ANDROID_KABI_RESERVE(1);
14591535 ANDROID_KABI_RESERVE(2);
....@@ -1576,6 +1652,12 @@
15761652 #define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
15771653 #define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
15781654
1655
+/* Specifies the type of the struct net_device::ml_priv pointer */
1656
+enum netdev_ml_priv_type {
1657
+ ML_PRIV_NONE,
1658
+ ML_PRIV_CAN,
1659
+};
1660
+
15791661 /**
15801662 * struct net_device - The DEVICE structure.
15811663 *
....@@ -1587,7 +1669,7 @@
15871669 * (i.e. as seen by users in the "Space.c" file). It is the name
15881670 * of the interface.
15891671 *
1590
- * @name_hlist: Device name hash chain, please keep it close to name[]
1672
+ * @name_node: Name hashlist node
15911673 * @ifalias: SNMP alias
15921674 * @mem_end: Shared memory end
15931675 * @mem_start: Shared memory start
....@@ -1616,6 +1698,7 @@
16161698 * and drivers will need to set them appropriately.
16171699 *
16181700 * @mpls_features: Mask of features inheritable by MPLS
1701
+ * @gso_partial_features: value(s) from NETIF_F_GSO\*
16191702 *
16201703 * @ifindex: interface index
16211704 * @group: The group the device belongs to
....@@ -1640,8 +1723,11 @@
16401723 * @netdev_ops: Includes several pointers to callbacks,
16411724 * if one wants to override the ndo_*() functions
16421725 * @ethtool_ops: Management operations
1726
+ * @l3mdev_ops: Layer 3 master device operations
16431727 * @ndisc_ops: Includes callbacks for different IPv6 neighbour
16441728 * discovery handling. Necessary for e.g. 6LoWPAN.
1729
+ * @xfrmdev_ops: Transformation offload operations
1730
+ * @tlsdev_ops: Transport Layer Security offload operations
16451731 * @header_ops: Includes callbacks for creating,parsing,caching,etc
16461732 * of Layer 2 headers.
16471733 *
....@@ -1680,6 +1766,7 @@
16801766 * @dev_port: Used to differentiate devices that share
16811767 * the same function
16821768 * @addr_list_lock: XXX: need comments on this one
1769
+ * @name_assign_type: network interface name assignment type
16831770 * @uc_promisc: Counter that indicates promiscuous mode
16841771 * has been enabled due to the need to listen to
16851772 * additional unicast addresses in a device that
....@@ -1698,10 +1785,12 @@
16981785 * @tipc_ptr: TIPC specific data
16991786 * @atalk_ptr: AppleTalk link
17001787 * @ip_ptr: IPv4 specific data
1701
- * @dn_ptr: DECnet specific data
17021788 * @ip6_ptr: IPv6 specific data
17031789 * @ax25_ptr: AX.25 specific data
17041790 * @ieee80211_ptr: IEEE 802.11 specific data, assign before registering
1791
+ * @ieee802154_ptr: IEEE 802.15.4 low-rate Wireless Personal Area Network
1792
+ * device struct
1793
+ * @mpls_ptr: mpls_dev struct pointer
17051794 *
17061795 * @dev_addr: Hw address (before bcast,
17071796 * because most packets are unicast)
....@@ -1710,12 +1799,17 @@
17101799 * @num_rx_queues: Number of RX queues
17111800 * allocated at register_netdev() time
17121801 * @real_num_rx_queues: Number of RX queues currently active in device
1802
+ * @xdp_prog: XDP sockets filter program pointer
1803
+ * @gro_flush_timeout: timeout for GRO layer in NAPI
1804
+ * @napi_defer_hard_irqs: If not zero, provides a counter that would
1805
+ * allow to avoid NIC hard IRQ, on busy queues.
17131806 *
17141807 * @rx_handler: handler for received packets
17151808 * @rx_handler_data: XXX: need comments on this one
17161809 * @miniq_ingress: ingress/clsact qdisc specific data for
17171810 * ingress processing
17181811 * @ingress_queue: XXX: need comments on this one
1812
+ * @nf_hooks_ingress: netfilter hooks executed for ingress packets
17191813 * @broadcast: hw bcast address
17201814 *
17211815 * @rx_cpu_rmap: CPU reverse-mapping for RX completion interrupts,
....@@ -1730,14 +1824,19 @@
17301824 * @qdisc: Root qdisc from userspace point of view
17311825 * @tx_queue_len: Max frames per queue allowed
17321826 * @tx_global_lock: XXX: need comments on this one
1827
+ * @xdp_bulkq: XDP device bulk queue
1828
+ * @xps_cpus_map: all CPUs map for XPS device
1829
+ * @xps_rxqs_map: all RXQs map for XPS device
17331830 *
17341831 * @xps_maps: XXX: need comments on this one
17351832 * @miniq_egress: clsact qdisc specific data for
17361833 * egress processing
1834
+ * @qdisc_hash: qdisc hash table
17371835 * @watchdog_timeo: Represents the timeout that is used by
17381836 * the watchdog (see dev_watchdog())
17391837 * @watchdog_timer: List of timers
17401838 *
1839
+ * @proto_down_reason: reason a netdev interface is held down
17411840 * @pcpu_refcnt: Number of references to this device
17421841 * @todo_list: Delayed register/unregister
17431842 * @link_watch_list: XXX: need comments on this one
....@@ -1753,6 +1852,7 @@
17531852 * @nd_net: Network namespace this network device is inside
17541853 *
17551854 * @ml_priv: Mid-layer private
1855
+ * @ml_priv_type: Mid-layer private type
17561856 * @lstats: Loopback statistics
17571857 * @tstats: Tunnel statistics
17581858 * @dstats: Dummy statistics
....@@ -1793,13 +1893,29 @@
17931893 *
17941894 * @wol_enabled: Wake-on-LAN is enabled
17951895 *
1896
+ * @net_notifier_list: List of per-net netdev notifier block
1897
+ * that follow this device when it is moved
1898
+ * to another network namespace.
1899
+ *
1900
+ * @macsec_ops: MACsec offloading ops
1901
+ *
1902
+ * @udp_tunnel_nic_info: static structure describing the UDP tunnel
1903
+ * offload capabilities of the device
1904
+ * @udp_tunnel_nic: UDP tunnel offload state
1905
+ * @xdp_state: stores info on attached XDP BPF programs
1906
+ *
1907
+ * @nested_level: Used as as a parameter of spin_lock_nested() of
1908
+ * dev->addr_list_lock.
1909
+ * @unlink_list: As netif_addr_lock() can be called recursively,
1910
+ * keep a list of interfaces to be deleted.
1911
+ *
17961912 * FIXME: cleanup struct net_device such that network protocol info
17971913 * moves out.
17981914 */
17991915
18001916 struct net_device {
18011917 char name[IFNAMSIZ];
1802
- struct hlist_node name_hlist;
1918
+ struct netdev_name_node *name_node;
18031919 struct dev_ifalias __rcu *ifalias;
18041920 /*
18051921 * I/O specific fields
....@@ -1857,9 +1973,6 @@
18571973 #endif
18581974 const struct net_device_ops *netdev_ops;
18591975 const struct ethtool_ops *ethtool_ops;
1860
-#ifdef CONFIG_NET_SWITCHDEV
1861
- const struct switchdev_ops *switchdev_ops;
1862
-#endif
18631976 #ifdef CONFIG_NET_L3_MASTER_DEV
18641977 const struct l3mdev_ops *l3mdev_ops;
18651978 #endif
....@@ -1900,6 +2013,7 @@
19002013 unsigned short type;
19012014 unsigned short hard_header_len;
19022015 unsigned char min_header_len;
2016
+ unsigned char name_assign_type;
19032017
19042018 unsigned short needed_headroom;
19052019 unsigned short needed_tailroom;
....@@ -1910,12 +2024,12 @@
19102024 unsigned char addr_len;
19112025 unsigned char upper_level;
19122026 unsigned char lower_level;
2027
+
19132028 unsigned short neigh_priv_len;
19142029 unsigned short dev_id;
19152030 unsigned short dev_port;
19162031 spinlock_t addr_list_lock;
1917
- unsigned char name_assign_type;
1918
- bool uc_promisc;
2032
+
19192033 struct netdev_hw_addr_list uc;
19202034 struct netdev_hw_addr_list mc;
19212035 struct netdev_hw_addr_list dev_addrs;
....@@ -1923,8 +2037,15 @@
19232037 #ifdef CONFIG_SYSFS
19242038 struct kset *queues_kset;
19252039 #endif
2040
+#ifdef CONFIG_LOCKDEP
2041
+ struct list_head unlink_list;
2042
+#endif
19262043 unsigned int promiscuity;
19272044 unsigned int allmulti;
2045
+ bool uc_promisc;
2046
+#ifdef CONFIG_LOCKDEP
2047
+ unsigned char nested_level;
2048
+#endif
19282049
19292050
19302051 /* Protocol-specific pointers */
....@@ -1942,9 +2063,6 @@
19422063 void *atalk_ptr;
19432064 #endif
19442065 struct in_device __rcu *ip_ptr;
1945
-#if IS_ENABLED(CONFIG_DECNET)
1946
- struct dn_dev __rcu *dn_ptr;
1947
-#endif
19482066 struct inet6_dev __rcu *ip6_ptr;
19492067 #if IS_ENABLED(CONFIG_AX25)
19502068 void *ax25_ptr;
....@@ -1967,6 +2085,7 @@
19672085
19682086 struct bpf_prog __rcu *xdp_prog;
19692087 unsigned long gro_flush_timeout;
2088
+ int napi_defer_hard_irqs;
19702089 rx_handler_func_t __rcu *rx_handler;
19712090 void __rcu *rx_handler_data;
19722091
....@@ -1990,13 +2109,11 @@
19902109 struct netdev_queue *_tx ____cacheline_aligned_in_smp;
19912110 unsigned int num_tx_queues;
19922111 unsigned int real_num_tx_queues;
1993
- struct Qdisc *qdisc;
1994
-#ifdef CONFIG_NET_SCHED
1995
- DECLARE_HASHTABLE (qdisc_hash, 4);
1996
-#endif
2112
+ struct Qdisc __rcu *qdisc;
19972113 unsigned int tx_queue_len;
19982114 spinlock_t tx_global_lock;
1999
- int watchdog_timeo;
2115
+
2116
+ struct xdp_dev_bulk_queue __percpu *xdp_bulkq;
20002117
20012118 #ifdef CONFIG_XPS
20022119 struct xps_dev_maps __rcu *xps_cpus_map;
....@@ -2006,11 +2123,17 @@
20062123 struct mini_Qdisc __rcu *miniq_egress;
20072124 #endif
20082125
2126
+#ifdef CONFIG_NET_SCHED
2127
+ DECLARE_HASHTABLE (qdisc_hash, 4);
2128
+#endif
20092129 /* These may be needed for future network-power-down code. */
20102130 struct timer_list watchdog_timer;
2131
+ int watchdog_timeo;
20112132
2012
- int __percpu *pcpu_refcnt;
2133
+ u32 proto_down_reason;
2134
+
20132135 struct list_head todo_list;
2136
+ int __percpu *pcpu_refcnt;
20142137
20152138 struct list_head link_watch_list;
20162139
....@@ -2039,12 +2162,13 @@
20392162 possible_net_t nd_net;
20402163
20412164 /* mid-layer private */
2165
+ void *ml_priv;
2166
+ enum netdev_ml_priv_type ml_priv_type;
2167
+
20422168 union {
2043
- void *ml_priv;
20442169 struct pcpu_lstats __percpu *lstats;
20452170 struct pcpu_sw_netstats __percpu *tstats;
20462171 struct pcpu_dstats __percpu *dstats;
2047
- struct pcpu_vstats __percpu *vstats;
20482172 };
20492173
20502174 #if IS_ENABLED(CONFIG_GARP)
....@@ -2086,6 +2210,18 @@
20862210 bool proto_down;
20872211 unsigned wol_enabled:1;
20882212
2213
+ struct list_head net_notifier_list;
2214
+
2215
+#if IS_ENABLED(CONFIG_MACSEC)
2216
+ /* MACsec management functions */
2217
+ const struct macsec_ops *macsec_ops;
2218
+#endif
2219
+ const struct udp_tunnel_nic_info *udp_tunnel_nic_info;
2220
+ struct udp_tunnel_nic *udp_tunnel_nic;
2221
+
2222
+ /* protected by rtnl_lock */
2223
+ struct bpf_xdp_entity xdp_state[__MAX_XDP_MODE];
2224
+
20892225 ANDROID_KABI_RESERVE(1);
20902226 ANDROID_KABI_RESERVE(2);
20912227 ANDROID_KABI_RESERVE(3);
....@@ -2094,7 +2230,6 @@
20942230 ANDROID_KABI_RESERVE(6);
20952231 ANDROID_KABI_RESERVE(7);
20962232 ANDROID_KABI_RESERVE(8);
2097
-
20982233 };
20992234 #define to_net_dev(d) container_of(d, struct net_device, dev)
21002235
....@@ -2132,6 +2267,22 @@
21322267 int netdev_get_num_tc(struct net_device *dev)
21332268 {
21342269 return dev->num_tc;
2270
+}
2271
+
2272
+static inline void net_prefetch(void *p)
2273
+{
2274
+ prefetch(p);
2275
+#if L1_CACHE_BYTES < 128
2276
+ prefetch((u8 *)p + L1_CACHE_BYTES);
2277
+#endif
2278
+}
2279
+
2280
+static inline void net_prefetchw(void *p)
2281
+{
2282
+ prefetchw(p);
2283
+#if L1_CACHE_BYTES < 128
2284
+ prefetchw((u8 *)p + L1_CACHE_BYTES);
2285
+#endif
21352286 }
21362287
21372288 void netdev_unbind_sb_channel(struct net_device *dev,
....@@ -2181,15 +2332,17 @@
21812332 (dev)->qdisc_tx_busylock = &qdisc_tx_busylock_key; \
21822333 (dev)->qdisc_running_key = &qdisc_running_key; \
21832334 lockdep_set_class(&(dev)->addr_list_lock, \
2184
- &dev_addr_list_lock_key); \
2335
+ &dev_addr_list_lock_key); \
21852336 for (i = 0; i < (dev)->num_tx_queues; i++) \
21862337 lockdep_set_class(&(dev)->_tx[i]._xmit_lock, \
21872338 &qdisc_xmit_lock_key); \
21882339 }
21892340
2190
-struct netdev_queue *netdev_pick_tx(struct net_device *dev,
2191
- struct sk_buff *skb,
2192
- struct net_device *sb_dev);
2341
+u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
2342
+ struct net_device *sb_dev);
2343
+struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
2344
+ struct sk_buff *skb,
2345
+ struct net_device *sb_dev);
21932346
21942347 /* returns the headroom that the master device needs to take in account
21952348 * when forwarding to this dev
....@@ -2209,6 +2362,29 @@
22092362 static inline void netdev_reset_rx_headroom(struct net_device *dev)
22102363 {
22112364 netdev_set_rx_headroom(dev, -1);
2365
+}
2366
+
2367
+static inline void *netdev_get_ml_priv(struct net_device *dev,
2368
+ enum netdev_ml_priv_type type)
2369
+{
2370
+ if (dev->ml_priv_type != type)
2371
+ return NULL;
2372
+
2373
+ return dev->ml_priv;
2374
+}
2375
+
2376
+static inline void netdev_set_ml_priv(struct net_device *dev,
2377
+ void *ml_priv,
2378
+ enum netdev_ml_priv_type type)
2379
+{
2380
+ WARN(dev->ml_priv_type && dev->ml_priv_type != type,
2381
+ "Overwriting already set ml_priv_type (%u) with different ml_priv_type (%u)!\n",
2382
+ dev->ml_priv_type, type);
2383
+ WARN(!dev->ml_priv_type && dev->ml_priv,
2384
+ "Overwriting already set ml_priv and ml_priv_type is ML_PRIV_NONE!\n");
2385
+
2386
+ dev->ml_priv = ml_priv;
2387
+ dev->ml_priv_type = type;
22122388 }
22132389
22142390 /*
....@@ -2287,12 +2463,26 @@
22872463 }
22882464
22892465 /**
2466
+ * __netif_napi_del - remove a NAPI context
2467
+ * @napi: NAPI context
2468
+ *
2469
+ * Warning: caller must observe RCU grace period before freeing memory
2470
+ * containing @napi. Drivers might want to call this helper to combine
2471
+ * all the needed RCU grace periods into a single one.
2472
+ */
2473
+void __netif_napi_del(struct napi_struct *napi);
2474
+
2475
+/**
22902476 * netif_napi_del - remove a NAPI context
22912477 * @napi: NAPI context
22922478 *
22932479 * netif_napi_del() removes a NAPI context from the network device NAPI list
22942480 */
2295
-void netif_napi_del(struct napi_struct *napi);
2481
+static inline void netif_napi_del(struct napi_struct *napi)
2482
+{
2483
+ __netif_napi_del(napi);
2484
+ synchronize_net();
2485
+}
22962486
22972487 struct napi_gro_cb {
22982488 /* Virtual address of skb_shinfo(skb)->frags[0].page + offset. */
....@@ -2351,7 +2541,8 @@
23512541 /* Number of gro_receive callbacks this packet already went through */
23522542 u8 recursion_counter:4;
23532543
2354
- /* 1 bit hole */
2544
+ /* GRO is done by frag_list pointer chaining. */
2545
+ u8 is_flist:1;
23552546
23562547 /* used to support CHECKSUM_COMPLETE for tunneling protocols */
23572548 __wsum csum;
....@@ -2398,6 +2589,7 @@
23982589
23992590 struct packet_type {
24002591 __be16 type; /* This is really htons(ether_type). */
2592
+ bool ignore_outgoing;
24012593 struct net_device *dev; /* NULL is wildcarded here */
24022594 int (*func) (struct sk_buff *,
24032595 struct net_device *,
....@@ -2440,7 +2632,35 @@
24402632 u64 tx_packets;
24412633 u64 tx_bytes;
24422634 struct u64_stats_sync syncp;
2443
-};
2635
+} __aligned(4 * sizeof(u64));
2636
+
2637
+struct pcpu_lstats {
2638
+ u64_stats_t packets;
2639
+ u64_stats_t bytes;
2640
+ struct u64_stats_sync syncp;
2641
+} __aligned(2 * sizeof(u64));
2642
+
2643
+void dev_lstats_read(struct net_device *dev, u64 *packets, u64 *bytes);
2644
+
2645
+static inline void dev_sw_netstats_rx_add(struct net_device *dev, unsigned int len)
2646
+{
2647
+ struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats);
2648
+
2649
+ u64_stats_update_begin(&tstats->syncp);
2650
+ tstats->rx_bytes += len;
2651
+ tstats->rx_packets++;
2652
+ u64_stats_update_end(&tstats->syncp);
2653
+}
2654
+
2655
+static inline void dev_lstats_add(struct net_device *dev, unsigned int len)
2656
+{
2657
+ struct pcpu_lstats *lstats = this_cpu_ptr(dev->lstats);
2658
+
2659
+ u64_stats_update_begin(&lstats->syncp);
2660
+ u64_stats_add(&lstats->bytes, len);
2661
+ u64_stats_inc(&lstats->packets);
2662
+ u64_stats_update_end(&lstats->syncp);
2663
+}
24442664
24452665 #define __netdev_alloc_pcpu_stats(type, gfp) \
24462666 ({ \
....@@ -2505,7 +2725,8 @@
25052725 NETDEV_REGISTER,
25062726 NETDEV_UNREGISTER,
25072727 NETDEV_CHANGEMTU, /* notify after mtu change happened */
2508
- NETDEV_CHANGEADDR,
2728
+ NETDEV_CHANGEADDR, /* notify after the address change */
2729
+ NETDEV_PRE_CHANGEADDR, /* notify before the address change */
25092730 NETDEV_GOING_DOWN,
25102731 NETDEV_CHANGENAME,
25112732 NETDEV_FEAT_CHANGE,
....@@ -2536,6 +2757,15 @@
25362757
25372758 int register_netdevice_notifier(struct notifier_block *nb);
25382759 int unregister_netdevice_notifier(struct notifier_block *nb);
2760
+int register_netdevice_notifier_net(struct net *net, struct notifier_block *nb);
2761
+int unregister_netdevice_notifier_net(struct net *net,
2762
+ struct notifier_block *nb);
2763
+int register_netdevice_notifier_dev_net(struct net_device *dev,
2764
+ struct notifier_block *nb,
2765
+ struct netdev_net_notifier *nn);
2766
+int unregister_netdevice_notifier_dev_net(struct net_device *dev,
2767
+ struct notifier_block *nb,
2768
+ struct netdev_net_notifier *nn);
25392769
25402770 struct netdev_notifier_info {
25412771 struct net_device *dev;
....@@ -2565,6 +2795,11 @@
25652795 struct netdev_notifier_changelowerstate_info {
25662796 struct netdev_notifier_info info; /* must be first */
25672797 void *lower_state_info; /* is lower dev state */
2798
+};
2799
+
2800
+struct netdev_notifier_pre_changeaddr_info {
2801
+ struct netdev_notifier_info info; /* must be first */
2802
+ const unsigned char *dev_addr;
25682803 };
25692804
25702805 static inline void netdev_notifier_info_init(struct netdev_notifier_info *info,
....@@ -2601,6 +2836,9 @@
26012836 list_for_each_entry_safe(d, n, &(net)->dev_base_head, dev_list)
26022837 #define for_each_netdev_continue(net, d) \
26032838 list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
2839
+#define for_each_netdev_continue_reverse(net, d) \
2840
+ list_for_each_entry_continue_reverse(d, &(net)->dev_base_head, \
2841
+ dev_list)
26042842 #define for_each_netdev_continue_rcu(net, d) \
26052843 list_for_each_entry_continue_rcu(d, &(net)->dev_base_head, dev_list)
26062844 #define for_each_netdev_in_bond_rcu(bond, slave) \
....@@ -2661,20 +2899,30 @@
26612899 struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
26622900 struct net_device *__dev_get_by_name(struct net *net, const char *name);
26632901 int dev_alloc_name(struct net_device *dev, const char *name);
2664
-int dev_open(struct net_device *dev);
2902
+int dev_open(struct net_device *dev, struct netlink_ext_ack *extack);
26652903 void dev_close(struct net_device *dev);
26662904 void dev_close_many(struct list_head *head, bool unlink);
26672905 void dev_disable_lro(struct net_device *dev);
26682906 int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb);
26692907 u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
2670
- struct net_device *sb_dev,
2671
- select_queue_fallback_t fallback);
2908
+ struct net_device *sb_dev);
26722909 u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
2673
- struct net_device *sb_dev,
2674
- select_queue_fallback_t fallback);
2910
+ struct net_device *sb_dev);
2911
+
26752912 int dev_queue_xmit(struct sk_buff *skb);
26762913 int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev);
2677
-int dev_direct_xmit(struct sk_buff *skb, u16 queue_id);
2914
+int __dev_direct_xmit(struct sk_buff *skb, u16 queue_id);
2915
+
2916
+static inline int dev_direct_xmit(struct sk_buff *skb, u16 queue_id)
2917
+{
2918
+ int ret;
2919
+
2920
+ ret = __dev_direct_xmit(skb, queue_id);
2921
+ if (!dev_xmit_complete(ret))
2922
+ kfree_skb(skb);
2923
+ return ret;
2924
+}
2925
+
26782926 int register_netdevice(struct net_device *dev);
26792927 void unregister_netdevice_queue(struct net_device *dev, struct list_head *head);
26802928 void unregister_netdevice_many(struct list_head *head);
....@@ -2686,9 +2934,11 @@
26862934 int netdev_refcnt_read(const struct net_device *dev);
26872935 void free_netdev(struct net_device *dev);
26882936 void netdev_freemem(struct net_device *dev);
2689
-void synchronize_net(void);
26902937 int init_dummy_netdev(struct net_device *dev);
26912938
2939
+struct net_device *netdev_get_xmit_slave(struct net_device *dev,
2940
+ struct sk_buff *skb,
2941
+ bool all_slaves);
26922942 struct net_device *dev_get_by_index(struct net *net, int ifindex);
26932943 struct net_device *__dev_get_by_index(struct net *net, int ifindex);
26942944 struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
....@@ -2696,6 +2946,7 @@
26962946 int netdev_get_name(struct net *net, char *name, int ifindex);
26972947 int dev_restart(struct net_device *dev);
26982948 int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb);
2949
+int skb_gro_receive_list(struct sk_buff *p, struct sk_buff *skb);
26992950
27002951 static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
27012952 {
....@@ -2832,16 +3083,16 @@
28323083 }
28333084
28343085 static inline void __skb_gro_checksum_convert(struct sk_buff *skb,
2835
- __sum16 check, __wsum pseudo)
3086
+ __wsum pseudo)
28363087 {
28373088 NAPI_GRO_CB(skb)->csum = ~pseudo;
28383089 NAPI_GRO_CB(skb)->csum_valid = 1;
28393090 }
28403091
2841
-#define skb_gro_checksum_try_convert(skb, proto, check, compute_pseudo) \
3092
+#define skb_gro_checksum_try_convert(skb, proto, compute_pseudo) \
28423093 do { \
28433094 if (__skb_gro_checksum_convert_check(skb)) \
2844
- __skb_gro_checksum_convert(skb, check, \
3095
+ __skb_gro_checksum_convert(skb, \
28453096 compute_pseudo(skb, proto)); \
28463097 } while (0)
28473098
....@@ -2964,6 +3215,15 @@
29643215 return dev->header_ops->parse(skb, haddr);
29653216 }
29663217
3218
+static inline __be16 dev_parse_header_protocol(const struct sk_buff *skb)
3219
+{
3220
+ const struct net_device *dev = skb->dev;
3221
+
3222
+ if (!dev->header_ops || !dev->header_ops->parse_protocol)
3223
+ return 0;
3224
+ return dev->header_ops->parse_protocol(skb);
3225
+}
3226
+
29673227 /* ll_header must have at least hard_header_len allocated */
29683228 static inline bool dev_validate_header(const struct net_device *dev,
29693229 char *ll_header, int len)
....@@ -2984,12 +3244,9 @@
29843244 return false;
29853245 }
29863246
2987
-typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr,
2988
- int len, int size);
2989
-int register_gifconf(unsigned int family, gifconf_func_t *gifconf);
2990
-static inline int unregister_gifconf(unsigned int family)
3247
+static inline bool dev_has_header(const struct net_device *dev)
29913248 {
2992
- return register_gifconf(family, NULL);
3249
+ return dev->header_ops && dev->header_ops->create;
29933250 }
29943251
29953252 #ifdef CONFIG_NET_FLOW_LIMIT
....@@ -3010,16 +3267,12 @@
30103267 */
30113268 struct softnet_data {
30123269 struct list_head poll_list;
3013
- struct napi_struct *current_napi;
30143270 struct sk_buff_head process_queue;
30153271
30163272 /* stats */
30173273 unsigned int processed;
30183274 unsigned int time_squeeze;
30193275 unsigned int received_rps;
3020
- /* unused partner variable for ABI alignment */
3021
- unsigned int gro_coalesced;
3022
-
30233276 #ifdef CONFIG_RPS
30243277 struct softnet_data *rps_ipi_list;
30253278 #endif
....@@ -3052,7 +3305,6 @@
30523305 unsigned int dropped;
30533306 struct sk_buff_head input_pkt_queue;
30543307 struct napi_struct backlog;
3055
- struct sk_buff_head tofree_queue;
30563308
30573309 };
30583310
....@@ -3071,38 +3323,14 @@
30713323 #endif
30723324 }
30733325
3074
-#define XMIT_RECURSION_LIMIT 8
30753326 DECLARE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
3076
-
3077
-#ifdef CONFIG_PREEMPT_RT_FULL
3078
-static inline int dev_recursion_level(void)
3079
-{
3080
- return current->xmit_recursion;
3081
-}
3082
-
3083
-static inline bool dev_xmit_recursion(void)
3084
-{
3085
- return unlikely(current->xmit_recursion >
3086
- XMIT_RECURSION_LIMIT);
3087
-}
3088
-
3089
-static inline void dev_xmit_recursion_inc(void)
3090
-{
3091
- current->xmit_recursion++;
3092
-}
3093
-
3094
-static inline void dev_xmit_recursion_dec(void)
3095
-{
3096
- current->xmit_recursion--;
3097
-}
3098
-
3099
-#else
31003327
31013328 static inline int dev_recursion_level(void)
31023329 {
31033330 return this_cpu_read(softnet_data.xmit.recursion);
31043331 }
31053332
3333
+#define XMIT_RECURSION_LIMIT 8
31063334 static inline bool dev_xmit_recursion(void)
31073335 {
31083336 return unlikely(__this_cpu_read(softnet_data.xmit.recursion) >
....@@ -3118,7 +3346,6 @@
31183346 {
31193347 __this_cpu_dec(softnet_data.xmit.recursion);
31203348 }
3121
-#endif
31223349
31233350 void __netif_schedule(struct Qdisc *q);
31243351 void netif_schedule_queue(struct netdev_queue *txq);
....@@ -3285,6 +3512,26 @@
32853512 #endif
32863513 }
32873514
3515
+/* Variant of netdev_tx_sent_queue() for drivers that are aware
3516
+ * that they should not test BQL status themselves.
3517
+ * We do want to change __QUEUE_STATE_STACK_XOFF only for the last
3518
+ * skb of a batch.
3519
+ * Returns true if the doorbell must be used to kick the NIC.
3520
+ */
3521
+static inline bool __netdev_tx_sent_queue(struct netdev_queue *dev_queue,
3522
+ unsigned int bytes,
3523
+ bool xmit_more)
3524
+{
3525
+ if (xmit_more) {
3526
+#ifdef CONFIG_BQL
3527
+ dql_queued(&dev_queue->dql, bytes);
3528
+#endif
3529
+ return netif_tx_queue_stopped(dev_queue);
3530
+ }
3531
+ netdev_tx_sent_queue(dev_queue, bytes);
3532
+ return true;
3533
+}
3534
+
32883535 /**
32893536 * netdev_sent_queue - report the number of bytes queued to hardware
32903537 * @dev: network device
....@@ -3297,6 +3544,14 @@
32973544 static inline void netdev_sent_queue(struct net_device *dev, unsigned int bytes)
32983545 {
32993546 netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes);
3547
+}
3548
+
3549
+static inline bool __netdev_sent_queue(struct net_device *dev,
3550
+ unsigned int bytes,
3551
+ bool xmit_more)
3552
+{
3553
+ return __netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes,
3554
+ xmit_more);
33003555 }
33013556
33023557 static inline void netdev_tx_completed_queue(struct netdev_queue *dev_queue,
....@@ -3315,7 +3570,7 @@
33153570 */
33163571 smp_mb();
33173572
3318
- if (dql_avail(&dev_queue->dql) < 0)
3573
+ if (unlikely(dql_avail(&dev_queue->dql) < 0))
33193574 return;
33203575
33213576 if (test_and_clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state))
....@@ -3523,7 +3778,7 @@
35233778 }
35243779
35253780 /**
3526
- * netif_attrmask_next_and - get the next CPU/Rx queue in *src1p & *src2p
3781
+ * netif_attrmask_next_and - get the next CPU/Rx queue in \*src1p & \*src2p
35273782 * @n: CPU/Rx queue index
35283783 * @src1p: the first CPUs/Rx queues mask pointer
35293784 * @src2p: the second CPUs/Rx queues mask pointer
....@@ -3660,6 +3915,7 @@
36603915 int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb);
36613916 int netif_rx(struct sk_buff *skb);
36623917 int netif_rx_ni(struct sk_buff *skb);
3918
+int netif_rx_any_context(struct sk_buff *skb);
36633919 int netif_receive_skb(struct sk_buff *skb);
36643920 int netif_receive_skb_core(struct sk_buff *skb);
36653921 void netif_receive_skb_list(struct list_head *head);
....@@ -3669,7 +3925,6 @@
36693925 gro_result_t napi_gro_frags(struct napi_struct *napi);
36703926 struct packet_offload *gro_find_receive_by_type(__be16 type);
36713927 struct packet_offload *gro_find_complete_by_type(__be16 type);
3672
-extern struct napi_struct *get_current_napi_context(void);
36733928
36743929 static inline void napi_free_frags(struct napi_struct *napi)
36753930 {
....@@ -3693,8 +3948,10 @@
36933948 int dev_ifconf(struct net *net, struct ifconf *, int);
36943949 int dev_ethtool(struct net *net, struct ifreq *);
36953950 unsigned int dev_get_flags(const struct net_device *);
3696
-int __dev_change_flags(struct net_device *, unsigned int flags);
3697
-int dev_change_flags(struct net_device *, unsigned int);
3951
+int __dev_change_flags(struct net_device *dev, unsigned int flags,
3952
+ struct netlink_ext_ack *extack);
3953
+int dev_change_flags(struct net_device *dev, unsigned int flags,
3954
+ struct netlink_ext_ack *extack);
36983955 void __dev_notify_flags(struct net_device *, unsigned int old_flags,
36993956 unsigned int gchanges);
37003957 int dev_change_name(struct net_device *, const char *);
....@@ -3709,22 +3966,35 @@
37093966 int dev_set_mtu(struct net_device *, int);
37103967 int dev_change_tx_queue_len(struct net_device *, unsigned long);
37113968 void dev_set_group(struct net_device *, int);
3712
-int dev_set_mac_address(struct net_device *, struct sockaddr *);
3969
+int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
3970
+ struct netlink_ext_ack *extack);
3971
+int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
3972
+ struct netlink_ext_ack *extack);
3973
+int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
3974
+ struct netlink_ext_ack *extack);
3975
+int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
37133976 int dev_change_carrier(struct net_device *, bool new_carrier);
37143977 int dev_get_phys_port_id(struct net_device *dev,
37153978 struct netdev_phys_item_id *ppid);
37163979 int dev_get_phys_port_name(struct net_device *dev,
37173980 char *name, size_t len);
3981
+int dev_get_port_parent_id(struct net_device *dev,
3982
+ struct netdev_phys_item_id *ppid, bool recurse);
3983
+bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b);
37183984 int dev_change_proto_down(struct net_device *dev, bool proto_down);
3985
+int dev_change_proto_down_generic(struct net_device *dev, bool proto_down);
3986
+void dev_change_proto_down_reason(struct net_device *dev, unsigned long mask,
3987
+ u32 value);
37193988 struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev, bool *again);
37203989 struct sk_buff *dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
37213990 struct netdev_queue *txq, int *ret);
37223991
37233992 typedef int (*bpf_op_t)(struct net_device *dev, struct netdev_bpf *bpf);
37243993 int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack,
3725
- int fd, u32 flags);
3726
-u32 __dev_xdp_query(struct net_device *dev, bpf_op_t xdp_op,
3727
- enum bpf_netdev_command cmd);
3994
+ int fd, int expected_fd, u32 flags);
3995
+int bpf_xdp_link_attach(const union bpf_attr *attr, struct bpf_prog *prog);
3996
+u32 dev_xdp_prog_id(struct net_device *dev, enum bpf_xdp_mode mode);
3997
+
37283998 int xdp_umem_query(struct net_device *dev, u16 queue_id);
37293999
37304000 int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
....@@ -3747,6 +4017,7 @@
37474017 return 0;
37484018 }
37494019
4020
+bool dev_nit_active(struct net_device *dev);
37504021 void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev);
37514022
37524023 extern int netdev_budget;
....@@ -3763,7 +4034,8 @@
37634034 */
37644035 static inline void dev_put(struct net_device *dev)
37654036 {
3766
- this_cpu_dec(*dev->pcpu_refcnt);
4037
+ if (dev)
4038
+ this_cpu_dec(*dev->pcpu_refcnt);
37674039 }
37684040
37694041 /**
....@@ -3774,7 +4046,8 @@
37744046 */
37754047 static inline void dev_hold(struct net_device *dev)
37764048 {
3777
- this_cpu_inc(*dev->pcpu_refcnt);
4049
+ if (dev)
4050
+ this_cpu_inc(*dev->pcpu_refcnt);
37784051 }
37794052
37804053 /* Carrier loss detection, dial on demand. The functions netif_carrier_on
....@@ -3852,6 +4125,46 @@
38524125
38534126
38544127 /**
4128
+ * netif_testing_on - mark device as under test.
4129
+ * @dev: network device
4130
+ *
4131
+ * Mark device as under test (as per RFC2863).
4132
+ *
4133
+ * The testing state indicates that some test(s) must be performed on
4134
+ * the interface. After completion, of the test, the interface state
4135
+ * will change to up, dormant, or down, as appropriate.
4136
+ */
4137
+static inline void netif_testing_on(struct net_device *dev)
4138
+{
4139
+ if (!test_and_set_bit(__LINK_STATE_TESTING, &dev->state))
4140
+ linkwatch_fire_event(dev);
4141
+}
4142
+
4143
+/**
4144
+ * netif_testing_off - set device as not under test.
4145
+ * @dev: network device
4146
+ *
4147
+ * Device is not in testing state.
4148
+ */
4149
+static inline void netif_testing_off(struct net_device *dev)
4150
+{
4151
+ if (test_and_clear_bit(__LINK_STATE_TESTING, &dev->state))
4152
+ linkwatch_fire_event(dev);
4153
+}
4154
+
4155
+/**
4156
+ * netif_testing - test if device is under test
4157
+ * @dev: network device
4158
+ *
4159
+ * Check if device is under test
4160
+ */
4161
+static inline bool netif_testing(const struct net_device *dev)
4162
+{
4163
+ return test_bit(__LINK_STATE_TESTING, &dev->state);
4164
+}
4165
+
4166
+
4167
+/**
38554168 * netif_oper_up - test if device is operational
38564169 * @dev: network device
38574170 *
....@@ -3883,22 +4196,48 @@
38834196 */
38844197
38854198 enum {
3886
- NETIF_MSG_DRV = 0x0001,
3887
- NETIF_MSG_PROBE = 0x0002,
3888
- NETIF_MSG_LINK = 0x0004,
3889
- NETIF_MSG_TIMER = 0x0008,
3890
- NETIF_MSG_IFDOWN = 0x0010,
3891
- NETIF_MSG_IFUP = 0x0020,
3892
- NETIF_MSG_RX_ERR = 0x0040,
3893
- NETIF_MSG_TX_ERR = 0x0080,
3894
- NETIF_MSG_TX_QUEUED = 0x0100,
3895
- NETIF_MSG_INTR = 0x0200,
3896
- NETIF_MSG_TX_DONE = 0x0400,
3897
- NETIF_MSG_RX_STATUS = 0x0800,
3898
- NETIF_MSG_PKTDATA = 0x1000,
3899
- NETIF_MSG_HW = 0x2000,
3900
- NETIF_MSG_WOL = 0x4000,
4199
+ NETIF_MSG_DRV_BIT,
4200
+ NETIF_MSG_PROBE_BIT,
4201
+ NETIF_MSG_LINK_BIT,
4202
+ NETIF_MSG_TIMER_BIT,
4203
+ NETIF_MSG_IFDOWN_BIT,
4204
+ NETIF_MSG_IFUP_BIT,
4205
+ NETIF_MSG_RX_ERR_BIT,
4206
+ NETIF_MSG_TX_ERR_BIT,
4207
+ NETIF_MSG_TX_QUEUED_BIT,
4208
+ NETIF_MSG_INTR_BIT,
4209
+ NETIF_MSG_TX_DONE_BIT,
4210
+ NETIF_MSG_RX_STATUS_BIT,
4211
+ NETIF_MSG_PKTDATA_BIT,
4212
+ NETIF_MSG_HW_BIT,
4213
+ NETIF_MSG_WOL_BIT,
4214
+
4215
+ /* When you add a new bit above, update netif_msg_class_names array
4216
+ * in net/ethtool/common.c
4217
+ */
4218
+ NETIF_MSG_CLASS_COUNT,
39014219 };
4220
+/* Both ethtool_ops interface and internal driver implementation use u32 */
4221
+static_assert(NETIF_MSG_CLASS_COUNT <= 32);
4222
+
4223
+#define __NETIF_MSG_BIT(bit) ((u32)1 << (bit))
4224
+#define __NETIF_MSG(name) __NETIF_MSG_BIT(NETIF_MSG_ ## name ## _BIT)
4225
+
4226
+#define NETIF_MSG_DRV __NETIF_MSG(DRV)
4227
+#define NETIF_MSG_PROBE __NETIF_MSG(PROBE)
4228
+#define NETIF_MSG_LINK __NETIF_MSG(LINK)
4229
+#define NETIF_MSG_TIMER __NETIF_MSG(TIMER)
4230
+#define NETIF_MSG_IFDOWN __NETIF_MSG(IFDOWN)
4231
+#define NETIF_MSG_IFUP __NETIF_MSG(IFUP)
4232
+#define NETIF_MSG_RX_ERR __NETIF_MSG(RX_ERR)
4233
+#define NETIF_MSG_TX_ERR __NETIF_MSG(TX_ERR)
4234
+#define NETIF_MSG_TX_QUEUED __NETIF_MSG(TX_QUEUED)
4235
+#define NETIF_MSG_INTR __NETIF_MSG(INTR)
4236
+#define NETIF_MSG_TX_DONE __NETIF_MSG(TX_DONE)
4237
+#define NETIF_MSG_RX_STATUS __NETIF_MSG(RX_STATUS)
4238
+#define NETIF_MSG_PKTDATA __NETIF_MSG(PKTDATA)
4239
+#define NETIF_MSG_HW __NETIF_MSG(HW)
4240
+#define NETIF_MSG_WOL __NETIF_MSG(WOL)
39024241
39034242 #define netif_msg_drv(p) ((p)->msg_enable & NETIF_MSG_DRV)
39044243 #define netif_msg_probe(p) ((p)->msg_enable & NETIF_MSG_PROBE)
....@@ -3927,50 +4266,11 @@
39274266 return (1U << debug_value) - 1;
39284267 }
39294268
3930
-#ifdef CONFIG_PREEMPT_RT_FULL
3931
-static inline void netdev_queue_set_owner(struct netdev_queue *txq, int cpu)
3932
-{
3933
- WRITE_ONCE(txq->xmit_lock_owner, current);
3934
-}
3935
-
3936
-static inline void netdev_queue_clear_owner(struct netdev_queue *txq)
3937
-{
3938
- WRITE_ONCE(txq->xmit_lock_owner, NULL);
3939
-}
3940
-
3941
-static inline bool netdev_queue_has_owner(struct netdev_queue *txq)
3942
-{
3943
- if (READ_ONCE(txq->xmit_lock_owner) != NULL)
3944
- return true;
3945
- return false;
3946
-}
3947
-
3948
-#else
3949
-
3950
-static inline void netdev_queue_set_owner(struct netdev_queue *txq, int cpu)
3951
-{
3952
- /* Pairs with READ_ONCE() in __dev_queue_xmit() */
3953
- WRITE_ONCE(txq->xmit_lock_owner, cpu);
3954
-}
3955
-
3956
-static inline void netdev_queue_clear_owner(struct netdev_queue *txq)
3957
-{
3958
- /* Pairs with READ_ONCE() in __dev_queue_xmit() */
3959
- WRITE_ONCE(txq->xmit_lock_owner, -1);
3960
-}
3961
-
3962
-static inline bool netdev_queue_has_owner(struct netdev_queue *txq)
3963
-{
3964
- if (READ_ONCE(txq->xmit_lock_owner) != -1)
3965
- return true;
3966
- return false;
3967
-}
3968
-#endif
3969
-
39704269 static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
39714270 {
39724271 spin_lock(&txq->_xmit_lock);
3973
- netdev_queue_set_owner(txq, cpu);
4272
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4273
+ WRITE_ONCE(txq->xmit_lock_owner, cpu);
39744274 }
39754275
39764276 static inline bool __netif_tx_acquire(struct netdev_queue *txq)
....@@ -3987,7 +4287,8 @@
39874287 static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
39884288 {
39894289 spin_lock_bh(&txq->_xmit_lock);
3990
- netdev_queue_set_owner(txq, smp_processor_id());
4290
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4291
+ WRITE_ONCE(txq->xmit_lock_owner, smp_processor_id());
39914292 }
39924293
39934294 static inline bool __netif_tx_trylock(struct netdev_queue *txq)
....@@ -3995,26 +4296,29 @@
39954296 bool ok = spin_trylock(&txq->_xmit_lock);
39964297
39974298 if (likely(ok)) {
3998
- netdev_queue_set_owner(txq, smp_processor_id());
4299
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4300
+ WRITE_ONCE(txq->xmit_lock_owner, smp_processor_id());
39994301 }
40004302 return ok;
40014303 }
40024304
40034305 static inline void __netif_tx_unlock(struct netdev_queue *txq)
40044306 {
4005
- netdev_queue_clear_owner(txq);
4307
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4308
+ WRITE_ONCE(txq->xmit_lock_owner, -1);
40064309 spin_unlock(&txq->_xmit_lock);
40074310 }
40084311
40094312 static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
40104313 {
4011
- netdev_queue_clear_owner(txq);
4314
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4315
+ WRITE_ONCE(txq->xmit_lock_owner, -1);
40124316 spin_unlock_bh(&txq->_xmit_lock);
40134317 }
40144318
40154319 static inline void txq_trans_update(struct netdev_queue *txq)
40164320 {
4017
- if (netdev_queue_has_owner(txq))
4321
+ if (txq->xmit_lock_owner != -1)
40184322 txq->trans_start = jiffies;
40194323 }
40204324
....@@ -4126,22 +4430,23 @@
41264430
41274431 static inline void netif_addr_lock(struct net_device *dev)
41284432 {
4129
- spin_lock(&dev->addr_list_lock);
4130
-}
4433
+ unsigned char nest_level = 0;
41314434
4132
-static inline void netif_addr_lock_nested(struct net_device *dev)
4133
-{
4134
- int subclass = SINGLE_DEPTH_NESTING;
4135
-
4136
- if (dev->netdev_ops->ndo_get_lock_subclass)
4137
- subclass = dev->netdev_ops->ndo_get_lock_subclass(dev);
4138
-
4139
- spin_lock_nested(&dev->addr_list_lock, subclass);
4435
+#ifdef CONFIG_LOCKDEP
4436
+ nest_level = dev->nested_level;
4437
+#endif
4438
+ spin_lock_nested(&dev->addr_list_lock, nest_level);
41404439 }
41414440
41424441 static inline void netif_addr_lock_bh(struct net_device *dev)
41434442 {
4144
- spin_lock_bh(&dev->addr_list_lock);
4443
+ unsigned char nest_level = 0;
4444
+
4445
+#ifdef CONFIG_LOCKDEP
4446
+ nest_level = dev->nested_level;
4447
+#endif
4448
+ local_bh_disable();
4449
+ spin_lock_nested(&dev->addr_list_lock, nest_level);
41454450 }
41464451
41474452 static inline void netif_addr_unlock(struct net_device *dev)
....@@ -4170,9 +4475,6 @@
41704475 unsigned char name_assign_type,
41714476 void (*setup)(struct net_device *),
41724477 unsigned int txqs, unsigned int rxqs);
4173
-int dev_get_valid_name(struct net *net, struct net_device *dev,
4174
- const char *name);
4175
-
41764478 #define alloc_netdev(sizeof_priv, name, name_assign_type, setup) \
41774479 alloc_netdev_mqs(sizeof_priv, name, name_assign_type, setup, 1, 1)
41784480
....@@ -4182,6 +4484,8 @@
41824484
41834485 int register_netdev(struct net_device *dev);
41844486 void unregister_netdev(struct net_device *dev);
4487
+
4488
+int devm_register_netdev(struct device *dev, struct net_device *ndev);
41854489
41864490 /* General hardware address lists handling functions */
41874491 int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
....@@ -4193,6 +4497,16 @@
41934497 int (*sync)(struct net_device *, const unsigned char *),
41944498 int (*unsync)(struct net_device *,
41954499 const unsigned char *));
4500
+int __hw_addr_ref_sync_dev(struct netdev_hw_addr_list *list,
4501
+ struct net_device *dev,
4502
+ int (*sync)(struct net_device *,
4503
+ const unsigned char *, int),
4504
+ int (*unsync)(struct net_device *,
4505
+ const unsigned char *, int));
4506
+void __hw_addr_ref_unsync_dev(struct netdev_hw_addr_list *list,
4507
+ struct net_device *dev,
4508
+ int (*unsync)(struct net_device *,
4509
+ const unsigned char *, int));
41964510 void __hw_addr_unsync_dev(struct netdev_hw_addr_list *list,
41974511 struct net_device *dev,
41984512 int (*unsync)(struct net_device *,
....@@ -4200,6 +4514,24 @@
42004514 void __hw_addr_init(struct netdev_hw_addr_list *list);
42014515
42024516 /* Functions used for device addresses handling */
4517
+static inline void
4518
+__dev_addr_set(struct net_device *dev, const u8 *addr, size_t len)
4519
+{
4520
+ memcpy(dev->dev_addr, addr, len);
4521
+}
4522
+
4523
+static inline void dev_addr_set(struct net_device *dev, const u8 *addr)
4524
+{
4525
+ __dev_addr_set(dev, addr, dev->addr_len);
4526
+}
4527
+
4528
+static inline void
4529
+dev_addr_mod(struct net_device *dev, unsigned int offset,
4530
+ const u8 *addr, size_t len)
4531
+{
4532
+ memcpy(&dev->dev_addr[offset], addr, len);
4533
+}
4534
+
42034535 int dev_addr_add(struct net_device *dev, const unsigned char *addr,
42044536 unsigned char addr_type);
42054537 int dev_addr_del(struct net_device *dev, const unsigned char *addr,
....@@ -4307,6 +4639,8 @@
43074639 struct rtnl_link_stats64 *storage);
43084640 void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
43094641 const struct net_device_stats *netdev_stats);
4642
+void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
4643
+ const struct pcpu_sw_netstats __percpu *netstats);
43104644
43114645 extern int netdev_max_backlog;
43124646 extern int netdev_tstamp_prequeue;
....@@ -4315,12 +4649,39 @@
43154649 extern int dev_weight_tx_bias;
43164650 extern int dev_rx_weight;
43174651 extern int dev_tx_weight;
4652
+extern int gro_normal_batch;
4653
+
4654
+enum {
4655
+ NESTED_SYNC_IMM_BIT,
4656
+ NESTED_SYNC_TODO_BIT,
4657
+};
4658
+
4659
+#define __NESTED_SYNC_BIT(bit) ((u32)1 << (bit))
4660
+#define __NESTED_SYNC(name) __NESTED_SYNC_BIT(NESTED_SYNC_ ## name ## _BIT)
4661
+
4662
+#define NESTED_SYNC_IMM __NESTED_SYNC(IMM)
4663
+#define NESTED_SYNC_TODO __NESTED_SYNC(TODO)
4664
+
4665
+struct netdev_nested_priv {
4666
+ unsigned char flags;
4667
+ void *data;
4668
+};
43184669
43194670 bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
43204671 struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,
43214672 struct list_head **iter);
43224673 struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
43234674 struct list_head **iter);
4675
+
4676
+#ifdef CONFIG_LOCKDEP
4677
+static LIST_HEAD(net_unlink_list);
4678
+
4679
+static inline void net_unlink_todo(struct net_device *dev)
4680
+{
4681
+ if (list_empty(&dev->unlink_list))
4682
+ list_add_tail(&dev->unlink_list, &net_unlink_list);
4683
+}
4684
+#endif
43244685
43254686 /* iterate through upper list, must be called under RCU read lock */
43264687 #define netdev_for_each_upper_dev_rcu(dev, updev, iter) \
....@@ -4331,8 +4692,8 @@
43314692
43324693 int netdev_walk_all_upper_dev_rcu(struct net_device *dev,
43334694 int (*fn)(struct net_device *upper_dev,
4334
- void *data),
4335
- void *data);
4695
+ struct netdev_nested_priv *priv),
4696
+ struct netdev_nested_priv *priv);
43364697
43374698 bool netdev_has_upper_dev_all_rcu(struct net_device *dev,
43384699 struct net_device *upper_dev);
....@@ -4365,19 +4726,16 @@
43654726 ldev; \
43664727 ldev = netdev_lower_get_next(dev, &(iter)))
43674728
4368
-struct net_device *netdev_all_lower_get_next(struct net_device *dev,
4729
+struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev,
43694730 struct list_head **iter);
4370
-struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev,
4371
- struct list_head **iter);
4372
-
43734731 int netdev_walk_all_lower_dev(struct net_device *dev,
43744732 int (*fn)(struct net_device *lower_dev,
4375
- void *data),
4376
- void *data);
4733
+ struct netdev_nested_priv *priv),
4734
+ struct netdev_nested_priv *priv);
43774735 int netdev_walk_all_lower_dev_rcu(struct net_device *dev,
43784736 int (*fn)(struct net_device *lower_dev,
4379
- void *data),
4380
- void *data);
4737
+ struct netdev_nested_priv *priv),
4738
+ struct netdev_nested_priv *priv);
43814739
43824740 void *netdev_adjacent_get_private(struct list_head *adj_list);
43834741 void *netdev_lower_get_first_private_rcu(struct net_device *dev);
....@@ -4391,6 +4749,16 @@
43914749 struct netlink_ext_ack *extack);
43924750 void netdev_upper_dev_unlink(struct net_device *dev,
43934751 struct net_device *upper_dev);
4752
+int netdev_adjacent_change_prepare(struct net_device *old_dev,
4753
+ struct net_device *new_dev,
4754
+ struct net_device *dev,
4755
+ struct netlink_ext_ack *extack);
4756
+void netdev_adjacent_change_commit(struct net_device *old_dev,
4757
+ struct net_device *new_dev,
4758
+ struct net_device *dev);
4759
+void netdev_adjacent_change_abort(struct net_device *old_dev,
4760
+ struct net_device *new_dev,
4761
+ struct net_device *dev);
43944762 void netdev_adjacent_rename_links(struct net_device *dev, char *oldname);
43954763 void *netdev_lower_dev_get_private(struct net_device *dev,
43964764 struct net_device *lower_dev);
....@@ -4402,7 +4770,6 @@
44024770 extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly;
44034771 void netdev_rss_key_fill(void *buffer, size_t len);
44044772
4405
-int dev_get_nest_level(struct net_device *dev);
44064773 int skb_checksum_help(struct sk_buff *skb);
44074774 int skb_crc32c_csum_help(struct sk_buff *skb);
44084775 int skb_csum_hwoffload_help(struct sk_buff *skb,
....@@ -4425,6 +4792,15 @@
44254792
44264793 void netdev_bonding_info_change(struct net_device *dev,
44274794 struct netdev_bonding_info *bonding_info);
4795
+
4796
+#if IS_ENABLED(CONFIG_ETHTOOL_NETLINK)
4797
+void ethtool_notify(struct net_device *dev, unsigned int cmd, const void *data);
4798
+#else
4799
+static inline void ethtool_notify(struct net_device *dev, unsigned int cmd,
4800
+ const void *data)
4801
+{
4802
+}
4803
+#endif
44284804
44294805 static inline
44304806 struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features)
....@@ -4457,9 +4833,10 @@
44574833 }
44584834
44594835 #ifdef CONFIG_BUG
4460
-void netdev_rx_csum_fault(struct net_device *dev);
4836
+void netdev_rx_csum_fault(struct net_device *dev, struct sk_buff *skb);
44614837 #else
4462
-static inline void netdev_rx_csum_fault(struct net_device *dev)
4838
+static inline void netdev_rx_csum_fault(struct net_device *dev,
4839
+ struct sk_buff *skb)
44634840 {
44644841 }
44654842 #endif
....@@ -4477,7 +4854,7 @@
44774854 struct sk_buff *skb, struct net_device *dev,
44784855 bool more)
44794856 {
4480
- skb->xmit_more = more ? 1 : 0;
4857
+ __this_cpu_write(softnet_data.xmit.more, more);
44814858 return ops->ndo_start_xmit(skb, dev);
44824859 }
44834860
....@@ -4490,7 +4867,7 @@
44904867 struct netdev_queue *txq, bool more)
44914868 {
44924869 const struct net_device_ops *ops = dev->netdev_ops;
4493
- int rc;
4870
+ netdev_tx_t rc;
44944871
44954872 rc = __netdev_start_xmit(ops, skb, dev, more);
44964873 if (rc == NETDEV_TX_OK)
....@@ -4503,16 +4880,6 @@
45034880 const void *ns);
45044881 void netdev_class_remove_file_ns(const struct class_attribute *class_attr,
45054882 const void *ns);
4506
-
4507
-static inline int netdev_class_create_file(const struct class_attribute *class_attr)
4508
-{
4509
- return netdev_class_create_file_ns(class_attr, NULL);
4510
-}
4511
-
4512
-static inline void netdev_class_remove_file(const struct class_attribute *class_attr)
4513
-{
4514
- netdev_class_remove_file_ns(class_attr, NULL);
4515
-}
45164883
45174884 extern const struct kobj_ns_type_operations net_ns_type_operations;
45184885
....@@ -4586,6 +4953,7 @@
45864953 BUILD_BUG_ON(SKB_GSO_ESP != (NETIF_F_GSO_ESP >> NETIF_F_GSO_SHIFT));
45874954 BUILD_BUG_ON(SKB_GSO_UDP != (NETIF_F_GSO_UDP >> NETIF_F_GSO_SHIFT));
45884955 BUILD_BUG_ON(SKB_GSO_UDP_L4 != (NETIF_F_GSO_UDP_L4 >> NETIF_F_GSO_SHIFT));
4956
+ BUILD_BUG_ON(SKB_GSO_FRAGLIST != (NETIF_F_GSO_FRAGLIST >> NETIF_F_GSO_SHIFT));
45894957
45904958 return (features & feature) == feature;
45914959 }
....@@ -4688,6 +5056,11 @@
46885056 return dev->priv_flags & IFF_OVS_DATAPATH;
46895057 }
46905058
5059
+static inline bool netif_is_any_bridge_port(const struct net_device *dev)
5060
+{
5061
+ return netif_is_bridge_port(dev) || netif_is_ovs_port(dev);
5062
+}
5063
+
46915064 static inline bool netif_is_team_master(const struct net_device *dev)
46925065 {
46935066 return dev->priv_flags & IFF_TEAM;
....@@ -4769,22 +5142,22 @@
47695142 return " (unknown)";
47705143 }
47715144
4772
-__printf(3, 4)
5145
+__printf(3, 4) __cold
47735146 void netdev_printk(const char *level, const struct net_device *dev,
47745147 const char *format, ...);
4775
-__printf(2, 3)
5148
+__printf(2, 3) __cold
47765149 void netdev_emerg(const struct net_device *dev, const char *format, ...);
4777
-__printf(2, 3)
5150
+__printf(2, 3) __cold
47785151 void netdev_alert(const struct net_device *dev, const char *format, ...);
4779
-__printf(2, 3)
5152
+__printf(2, 3) __cold
47805153 void netdev_crit(const struct net_device *dev, const char *format, ...);
4781
-__printf(2, 3)
5154
+__printf(2, 3) __cold
47825155 void netdev_err(const struct net_device *dev, const char *format, ...);
4783
-__printf(2, 3)
5156
+__printf(2, 3) __cold
47845157 void netdev_warn(const struct net_device *dev, const char *format, ...);
4785
-__printf(2, 3)
5158
+__printf(2, 3) __cold
47865159 void netdev_notice(const struct net_device *dev, const char *format, ...);
4787
-__printf(2, 3)
5160
+__printf(2, 3) __cold
47885161 void netdev_info(const struct net_device *dev, const char *format, ...);
47895162
47905163 #define netdev_level_once(level, dev, fmt, ...) \
....@@ -4815,7 +5188,8 @@
48155188 #define MODULE_ALIAS_NETDEV(device) \
48165189 MODULE_ALIAS("netdev-" device)
48175190
4818
-#if defined(CONFIG_DYNAMIC_DEBUG)
5191
+#if defined(CONFIG_DYNAMIC_DEBUG) || \
5192
+ (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE))
48195193 #define netdev_dbg(__dev, format, args...) \
48205194 do { \
48215195 dynamic_netdev_dbg(__dev, format, ##args); \
....@@ -4885,7 +5259,8 @@
48855259 #define netif_info(priv, type, dev, fmt, args...) \
48865260 netif_level(info, priv, type, dev, fmt, ##args)
48875261
4888
-#if defined(CONFIG_DYNAMIC_DEBUG)
5262
+#if defined(CONFIG_DYNAMIC_DEBUG) || \
5263
+ (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE))
48895264 #define netif_dbg(priv, type, netdev, format, args...) \
48905265 do { \
48915266 if (netif_msg_##type(priv)) \
....@@ -4945,4 +5320,6 @@
49455320 #define PTYPE_HASH_SIZE (16)
49465321 #define PTYPE_HASH_MASK (PTYPE_HASH_SIZE - 1)
49475322
5323
+extern struct net_device *blackhole_netdev;
5324
+
49485325 #endif /* _LINUX_NETDEVICE_H */