hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
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;
....@@ -275,6 +278,7 @@
275278 const struct net_device *dev,
276279 const unsigned char *haddr);
277280 bool (*validate)(const char *ll_header, unsigned int len);
281
+ __be16 (*parse_protocol)(const struct sk_buff *skb);
278282
279283 ANDROID_KABI_RESERVE(1);
280284 ANDROID_KABI_RESERVE(2);
....@@ -291,6 +295,7 @@
291295 __LINK_STATE_NOCARRIER,
292296 __LINK_STATE_LINKWATCH_PENDING,
293297 __LINK_STATE_DORMANT,
298
+ __LINK_STATE_TESTING,
294299 };
295300
296301
....@@ -331,6 +336,7 @@
331336
332337 unsigned long state;
333338 int weight;
339
+ int defer_hard_irqs_count;
334340 unsigned long gro_bitmask;
335341 int (*poll)(struct napi_struct *, int);
336342 #ifdef CONFIG_NETPOLL
....@@ -339,6 +345,8 @@
339345 struct net_device *dev;
340346 struct gro_list gro_hash[GRO_HASH_BUCKETS];
341347 struct sk_buff *skb;
348
+ struct list_head rx_list; /* Pending GRO_NORMAL skbs */
349
+ int rx_count; /* length of rx_list */
342350 struct hrtimer timer;
343351 struct list_head dev_list;
344352 struct hlist_node napi_hash_node;
....@@ -355,7 +363,7 @@
355363 NAPI_STATE_MISSED, /* reschedule a napi */
356364 NAPI_STATE_DISABLE, /* Disable pending */
357365 NAPI_STATE_NPSVC, /* Netpoll - don't dequeue from poll_list */
358
- NAPI_STATE_HASHED, /* In NAPI hash (busy polling possible) */
366
+ NAPI_STATE_LISTED, /* NAPI added to system lists */
359367 NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
360368 NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
361369 };
....@@ -365,7 +373,7 @@
365373 NAPIF_STATE_MISSED = BIT(NAPI_STATE_MISSED),
366374 NAPIF_STATE_DISABLE = BIT(NAPI_STATE_DISABLE),
367375 NAPIF_STATE_NPSVC = BIT(NAPI_STATE_NPSVC),
368
- NAPIF_STATE_HASHED = BIT(NAPI_STATE_HASHED),
376
+ NAPIF_STATE_LISTED = BIT(NAPI_STATE_LISTED),
369377 NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
370378 NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
371379 };
....@@ -431,19 +439,7 @@
431439 typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);
432440
433441 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
445442 void __napi_schedule_irqoff(struct napi_struct *n);
446
-#endif
447443
448444 static inline bool napi_disable_pending(struct napi_struct *n)
449445 {
....@@ -502,20 +498,6 @@
502498 }
503499
504500 /**
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
-/**
519501 * napi_disable - prevent NAPI from scheduling
520502 * @n: NAPI context
521503 *
....@@ -554,6 +536,32 @@
554536 msleep(1);
555537 else
556538 barrier();
539
+}
540
+
541
+/**
542
+ * napi_if_scheduled_mark_missed - if napi is running, set the
543
+ * NAPIF_STATE_MISSED
544
+ * @n: NAPI context
545
+ *
546
+ * If napi is running, set the NAPIF_STATE_MISSED, and return true if
547
+ * NAPI is scheduled.
548
+ **/
549
+static inline bool napi_if_scheduled_mark_missed(struct napi_struct *n)
550
+{
551
+ unsigned long val, new;
552
+
553
+ do {
554
+ val = READ_ONCE(n->state);
555
+ if (val & NAPIF_STATE_DISABLE)
556
+ return true;
557
+
558
+ if (!(val & NAPIF_STATE_SCHED))
559
+ return false;
560
+
561
+ new = val | NAPIF_STATE_MISSED;
562
+ } while (cmpxchg(&n->state, val, new) != val);
563
+
564
+ return true;
557565 }
558566
559567 enum netdev_queue_state_t {
....@@ -604,15 +612,14 @@
604612
605613 /* Subordinate device that the queue has been assigned to */
606614 struct net_device *sb_dev;
615
+#ifdef CONFIG_XDP_SOCKETS
616
+ struct xsk_buff_pool *pool;
617
+#endif
607618 /*
608619 * write-mostly part
609620 */
610621 spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
611
-#ifdef CONFIG_PREEMPT_RT_FULL
612
- struct task_struct *xmit_lock_owner;
613
-#else
614622 int xmit_lock_owner;
615
-#endif
616623 /*
617624 * Time (in jiffies) of last Tx
618625 */
....@@ -631,12 +638,32 @@
631638 } ____cacheline_aligned_in_smp;
632639
633640 extern int sysctl_fb_tunnels_only_for_init_net;
641
+extern int sysctl_devconf_inherit_init_net;
634642
643
+/*
644
+ * sysctl_fb_tunnels_only_for_init_net == 0 : For all netns
645
+ * == 1 : For initns only
646
+ * == 2 : For none.
647
+ */
635648 static inline bool net_has_fallback_tunnels(const struct net *net)
636649 {
637
- return net == &init_net ||
638
- !IS_ENABLED(CONFIG_SYSCTL) ||
639
- !sysctl_fb_tunnels_only_for_init_net;
650
+#if IS_ENABLED(CONFIG_SYSCTL)
651
+ int fb_tunnels_only_for_init_net = READ_ONCE(sysctl_fb_tunnels_only_for_init_net);
652
+
653
+ return !fb_tunnels_only_for_init_net ||
654
+ (net_eq(net, &init_net) && fb_tunnels_only_for_init_net == 1);
655
+#else
656
+ return true;
657
+#endif
658
+}
659
+
660
+static inline int net_inherit_devconf(void)
661
+{
662
+#if IS_ENABLED(CONFIG_SYSCTL)
663
+ return READ_ONCE(sysctl_devconf_inherit_init_net);
664
+#else
665
+ return 0;
666
+#endif
640667 }
641668
642669 static inline int netdev_queue_numa_node_read(const struct netdev_queue *q)
....@@ -663,7 +690,7 @@
663690 struct rps_map {
664691 unsigned int len;
665692 struct rcu_head rcu;
666
- u16 cpus[0];
693
+ u16 cpus[];
667694 };
668695 #define RPS_MAP_SIZE(_num) (sizeof(struct rps_map) + ((_num) * sizeof(u16)))
669696
....@@ -685,7 +712,7 @@
685712 struct rps_dev_flow_table {
686713 unsigned int mask;
687714 struct rcu_head rcu;
688
- struct rps_dev_flow flows[0];
715
+ struct rps_dev_flow flows[];
689716 };
690717 #define RPS_DEV_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_dev_flow_table) + \
691718 ((_num) * sizeof(struct rps_dev_flow)))
....@@ -703,7 +730,7 @@
703730 struct rps_sock_flow_table {
704731 u32 mask;
705732
706
- u32 ents[0] ____cacheline_aligned_in_smp;
733
+ u32 ents[] ____cacheline_aligned_in_smp;
707734 };
708735 #define RPS_SOCK_FLOW_TABLE_SIZE(_num) (offsetof(struct rps_sock_flow_table, ents[_num]))
709736
....@@ -742,6 +769,9 @@
742769 struct kobject kobj;
743770 struct net_device *dev;
744771 struct xdp_rxq_info xdp_rxq;
772
+#ifdef CONFIG_XDP_SOCKETS
773
+ struct xsk_buff_pool *pool;
774
+#endif
745775
746776 ANDROID_KABI_RESERVE(1);
747777 ANDROID_KABI_RESERVE(2);
....@@ -768,7 +798,7 @@
768798 unsigned int len;
769799 unsigned int alloc_len;
770800 struct rcu_head rcu;
771
- u16 queues[0];
801
+ u16 queues[];
772802 };
773803 #define XPS_MAP_SIZE(_num) (sizeof(struct xps_map) + ((_num) * sizeof(u16)))
774804 #define XPS_MIN_MAP_ALLOC ((L1_CACHE_ALIGN(offsetof(struct xps_map, queues[1])) \
....@@ -779,7 +809,7 @@
779809 */
780810 struct xps_dev_maps {
781811 struct rcu_head rcu;
782
- struct xps_map __rcu *attr_map[0]; /* Either CPUs map or RXQs map */
812
+ struct xps_map __rcu *attr_map[]; /* Either CPUs map or RXQs map */
783813 };
784814
785815 #define XPS_CPU_DEV_MAPS_SIZE(_tcs) (sizeof(struct xps_dev_maps) + \
....@@ -848,6 +878,13 @@
848878 TC_SETUP_QDISC_PRIO,
849879 TC_SETUP_QDISC_MQ,
850880 TC_SETUP_QDISC_ETF,
881
+ TC_SETUP_ROOT_QDISC,
882
+ TC_SETUP_QDISC_GRED,
883
+ TC_SETUP_QDISC_TAPRIO,
884
+ TC_SETUP_FT,
885
+ TC_SETUP_QDISC_ETS,
886
+ TC_SETUP_QDISC_TBF,
887
+ TC_SETUP_QDISC_FIFO,
851888 };
852889
853890 /* These structures hold the attributes of bpf state that are being passed
....@@ -863,21 +900,29 @@
863900 */
864901 XDP_SETUP_PROG,
865902 XDP_SETUP_PROG_HW,
866
- XDP_QUERY_PROG,
867
- XDP_QUERY_PROG_HW,
868903 /* BPF program for offload callbacks, invoked at program load time. */
869
- BPF_OFFLOAD_VERIFIER_PREP,
870
- BPF_OFFLOAD_TRANSLATE,
871
- BPF_OFFLOAD_DESTROY,
872904 BPF_OFFLOAD_MAP_ALLOC,
873905 BPF_OFFLOAD_MAP_FREE,
874
- XDP_QUERY_XSK_UMEM,
875
- XDP_SETUP_XSK_UMEM,
906
+ XDP_SETUP_XSK_POOL,
876907 };
877908
878909 struct bpf_prog_offload_ops;
879910 struct netlink_ext_ack;
880911 struct xdp_umem;
912
+struct xdp_dev_bulk_queue;
913
+struct bpf_xdp_link;
914
+
915
+enum bpf_xdp_mode {
916
+ XDP_MODE_SKB = 0,
917
+ XDP_MODE_DRV = 1,
918
+ XDP_MODE_HW = 2,
919
+ __MAX_XDP_MODE
920
+};
921
+
922
+struct bpf_xdp_entity {
923
+ struct bpf_prog *prog;
924
+ struct bpf_xdp_link *link;
925
+};
881926
882927 struct netdev_bpf {
883928 enum bpf_netdev_command command;
....@@ -888,32 +933,21 @@
888933 struct bpf_prog *prog;
889934 struct netlink_ext_ack *extack;
890935 };
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;
906936 /* BPF_OFFLOAD_MAP_ALLOC, BPF_OFFLOAD_MAP_FREE */
907937 struct {
908938 struct bpf_offloaded_map *offmap;
909939 };
910
- /* XDP_QUERY_XSK_UMEM, XDP_SETUP_XSK_UMEM */
940
+ /* XDP_SETUP_XSK_POOL */
911941 struct {
912
- struct xdp_umem *umem; /* out for query*/
913
- u16 queue_id; /* in for query */
942
+ struct xsk_buff_pool *pool;
943
+ u16 queue_id;
914944 } xsk;
915945 };
916946 };
947
+
948
+/* Flags for ndo_xsk_wakeup. */
949
+#define XDP_WAKEUP_RX (1 << 0)
950
+#define XDP_WAKEUP_TX (1 << 1)
917951
918952 #ifdef CONFIG_XFRM_OFFLOAD
919953 struct xfrmdev_ops {
....@@ -931,35 +965,27 @@
931965 };
932966 #endif
933967
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
-
960968 struct dev_ifalias {
961969 struct rcu_head rcuhead;
962970 char ifalias[];
971
+};
972
+
973
+struct devlink;
974
+struct tlsdev_ops;
975
+
976
+struct netdev_name_node {
977
+ struct hlist_node hlist;
978
+ struct list_head list;
979
+ struct net_device *dev;
980
+ const char *name;
981
+};
982
+
983
+int netdev_name_node_alt_create(struct net_device *dev, const char *name);
984
+int netdev_name_node_alt_destroy(struct net_device *dev, const char *name);
985
+
986
+struct netdev_net_notifier {
987
+ struct list_head list;
988
+ struct notifier_block *nb;
963989 };
964990
965991 /*
....@@ -1005,8 +1031,7 @@
10051031 * those the driver believes to be appropriate.
10061032 *
10071033 * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb,
1008
- * struct net_device *sb_dev,
1009
- * select_queue_fallback_t fallback);
1034
+ * struct net_device *sb_dev);
10101035 * Called to decide which queue to use when device supports multiple
10111036 * transmit queues.
10121037 *
....@@ -1041,7 +1066,7 @@
10411066 * Called when a user wants to change the Maximum Transfer Unit
10421067 * of a device.
10431068 *
1044
- * void (*ndo_tx_timeout)(struct net_device *dev);
1069
+ * void (*ndo_tx_timeout)(struct net_device *dev, unsigned int txqueue);
10451070 * Callback used when the transmitter has not made any progress
10461071 * for dev->watchdog ticks.
10471072 *
....@@ -1160,6 +1185,12 @@
11601185 * int (*ndo_del_slave)(struct net_device *dev, struct net_device *slave_dev);
11611186 * Called to release previously enslaved netdev.
11621187 *
1188
+ * struct net_device *(*ndo_get_xmit_slave)(struct net_device *dev,
1189
+ * struct sk_buff *skb,
1190
+ * bool all_slaves);
1191
+ * Get the xmit slave of master device. If all_slaves is true, function
1192
+ * assume all the slaves can transmit.
1193
+ *
11631194 * Feature/offload setting functions.
11641195 * netdev_features_t (*ndo_fix_features)(struct net_device *dev,
11651196 * netdev_features_t features);
....@@ -1174,7 +1205,8 @@
11741205 *
11751206 * int (*ndo_fdb_add)(struct ndmsg *ndm, struct nlattr *tb[],
11761207 * struct net_device *dev,
1177
- * const unsigned char *addr, u16 vid, u16 flags)
1208
+ * const unsigned char *addr, u16 vid, u16 flags,
1209
+ * struct netlink_ext_ack *extack);
11781210 * Adds an FDB entry to dev for addr.
11791211 * int (*ndo_fdb_del)(struct ndmsg *ndm, struct nlattr *tb[],
11801212 * struct net_device *dev,
....@@ -1187,7 +1219,7 @@
11871219 * entries to skb and update idx with the number of entries.
11881220 *
11891221 * int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh,
1190
- * u16 flags)
1222
+ * u16 flags, struct netlink_ext_ack *extack)
11911223 * int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq,
11921224 * struct net_device *dev, u32 filter_mask,
11931225 * int nlflags)
....@@ -1207,6 +1239,10 @@
12071239 * Called to get ID of physical port of this device. If driver does
12081240 * not implement this, it is assumed that the hw is not able to have
12091241 * multiple net devices on single physical port.
1242
+ *
1243
+ * int (*ndo_get_port_parent_id)(struct net_device *dev,
1244
+ * struct netdev_phys_item_id *ppid)
1245
+ * Called to get the parent ID of the physical port of this device.
12101246 *
12111247 * void (*ndo_udp_tunnel_add)(struct net_device *dev,
12121248 * struct udp_tunnel_info *ti);
....@@ -1265,6 +1301,22 @@
12651301 * that got dropped are freed/returned via xdp_return_frame().
12661302 * Returns negative number, means general error invoking ndo, meaning
12671303 * no frames were xmit'ed and core-caller will free all frames.
1304
+ * int (*ndo_xsk_wakeup)(struct net_device *dev, u32 queue_id, u32 flags);
1305
+ * This function is used to wake up the softirq, ksoftirqd or kthread
1306
+ * responsible for sending and/or receiving packets on a specific
1307
+ * queue id bound to an AF_XDP socket. The flags field specifies if
1308
+ * only RX, only Tx, or both should be woken up using the flags
1309
+ * XDP_WAKEUP_RX and XDP_WAKEUP_TX.
1310
+ * struct devlink_port *(*ndo_get_devlink_port)(struct net_device *dev);
1311
+ * Get devlink port instance associated with a given netdev.
1312
+ * Called with a reference on the netdevice and devlink locks only,
1313
+ * rtnl_lock is not held.
1314
+ * int (*ndo_tunnel_ctl)(struct net_device *dev, struct ip_tunnel_parm *p,
1315
+ * int cmd);
1316
+ * Add, change, delete or get information on an IPv4 tunnel.
1317
+ * struct net_device *(*ndo_get_peer_dev)(struct net_device *dev);
1318
+ * If a device is paired with a peer device, return the peer instance.
1319
+ * The caller must be under RCU read context.
12681320 */
12691321 struct net_device_ops {
12701322 int (*ndo_init)(struct net_device *dev);
....@@ -1278,8 +1330,7 @@
12781330 netdev_features_t features);
12791331 u16 (*ndo_select_queue)(struct net_device *dev,
12801332 struct sk_buff *skb,
1281
- struct net_device *sb_dev,
1282
- select_queue_fallback_t fallback);
1333
+ struct net_device *sb_dev);
12831334 void (*ndo_change_rx_flags)(struct net_device *dev,
12841335 int flags);
12851336 void (*ndo_set_rx_mode)(struct net_device *dev);
....@@ -1294,7 +1345,8 @@
12941345 int new_mtu);
12951346 int (*ndo_neigh_setup)(struct net_device *dev,
12961347 struct neigh_parms *);
1297
- void (*ndo_tx_timeout) (struct net_device *dev);
1348
+ void (*ndo_tx_timeout) (struct net_device *dev,
1349
+ unsigned int txqueue);
12981350
12991351 void (*ndo_get_stats64)(struct net_device *dev,
13001352 struct rtnl_link_stats64 *storage);
....@@ -1340,6 +1392,10 @@
13401392 struct nlattr *port[]);
13411393 int (*ndo_get_vf_port)(struct net_device *dev,
13421394 int vf, struct sk_buff *skb);
1395
+ int (*ndo_get_vf_guid)(struct net_device *dev,
1396
+ int vf,
1397
+ struct ifla_vf_guid *node_guid,
1398
+ struct ifla_vf_guid *port_guid);
13431399 int (*ndo_set_vf_guid)(struct net_device *dev,
13441400 int vf, u64 guid,
13451401 int guid_type);
....@@ -1384,6 +1440,9 @@
13841440 struct netlink_ext_ack *extack);
13851441 int (*ndo_del_slave)(struct net_device *dev,
13861442 struct net_device *slave_dev);
1443
+ struct net_device* (*ndo_get_xmit_slave)(struct net_device *dev,
1444
+ struct sk_buff *skb,
1445
+ bool all_slaves);
13871446 netdev_features_t (*ndo_fix_features)(struct net_device *dev,
13881447 netdev_features_t features);
13891448 int (*ndo_set_features)(struct net_device *dev,
....@@ -1398,7 +1457,8 @@
13981457 struct net_device *dev,
13991458 const unsigned char *addr,
14001459 u16 vid,
1401
- u16 flags);
1460
+ u16 flags,
1461
+ struct netlink_ext_ack *extack);
14021462 int (*ndo_fdb_del)(struct ndmsg *ndm,
14031463 struct nlattr *tb[],
14041464 struct net_device *dev,
....@@ -1409,10 +1469,16 @@
14091469 struct net_device *dev,
14101470 struct net_device *filter_dev,
14111471 int *idx);
1412
-
1472
+ int (*ndo_fdb_get)(struct sk_buff *skb,
1473
+ struct nlattr *tb[],
1474
+ struct net_device *dev,
1475
+ const unsigned char *addr,
1476
+ u16 vid, u32 portid, u32 seq,
1477
+ struct netlink_ext_ack *extack);
14131478 int (*ndo_bridge_setlink)(struct net_device *dev,
14141479 struct nlmsghdr *nlh,
1415
- u16 flags);
1480
+ u16 flags,
1481
+ struct netlink_ext_ack *extack);
14161482 int (*ndo_bridge_getlink)(struct sk_buff *skb,
14171483 u32 pid, u32 seq,
14181484 struct net_device *dev,
....@@ -1425,6 +1491,8 @@
14251491 bool new_carrier);
14261492 int (*ndo_get_phys_port_id)(struct net_device *dev,
14271493 struct netdev_phys_item_id *ppid);
1494
+ int (*ndo_get_port_parent_id)(struct net_device *dev,
1495
+ struct netdev_phys_item_id *ppid);
14281496 int (*ndo_get_phys_port_name)(struct net_device *dev,
14291497 char *name, size_t len);
14301498 void (*ndo_udp_tunnel_add)(struct net_device *dev,
....@@ -1436,7 +1504,6 @@
14361504 void (*ndo_dfwd_del_station)(struct net_device *pdev,
14371505 void *priv);
14381506
1439
- int (*ndo_get_lock_subclass)(struct net_device *dev);
14401507 int (*ndo_set_tx_maxrate)(struct net_device *dev,
14411508 int queue_index,
14421509 u32 maxrate);
....@@ -1452,8 +1519,12 @@
14521519 int (*ndo_xdp_xmit)(struct net_device *dev, int n,
14531520 struct xdp_frame **xdp,
14541521 u32 flags);
1455
- int (*ndo_xsk_async_xmit)(struct net_device *dev,
1456
- u32 queue_id);
1522
+ int (*ndo_xsk_wakeup)(struct net_device *dev,
1523
+ u32 queue_id, u32 flags);
1524
+ struct devlink_port * (*ndo_get_devlink_port)(struct net_device *dev);
1525
+ int (*ndo_tunnel_ctl)(struct net_device *dev,
1526
+ struct ip_tunnel_parm *p, int cmd);
1527
+ struct net_device * (*ndo_get_peer_dev)(struct net_device *dev);
14571528
14581529 ANDROID_KABI_RESERVE(1);
14591530 ANDROID_KABI_RESERVE(2);
....@@ -1576,6 +1647,12 @@
15761647 #define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
15771648 #define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
15781649
1650
+/* Specifies the type of the struct net_device::ml_priv pointer */
1651
+enum netdev_ml_priv_type {
1652
+ ML_PRIV_NONE,
1653
+ ML_PRIV_CAN,
1654
+};
1655
+
15791656 /**
15801657 * struct net_device - The DEVICE structure.
15811658 *
....@@ -1587,7 +1664,7 @@
15871664 * (i.e. as seen by users in the "Space.c" file). It is the name
15881665 * of the interface.
15891666 *
1590
- * @name_hlist: Device name hash chain, please keep it close to name[]
1667
+ * @name_node: Name hashlist node
15911668 * @ifalias: SNMP alias
15921669 * @mem_end: Shared memory end
15931670 * @mem_start: Shared memory start
....@@ -1616,6 +1693,7 @@
16161693 * and drivers will need to set them appropriately.
16171694 *
16181695 * @mpls_features: Mask of features inheritable by MPLS
1696
+ * @gso_partial_features: value(s) from NETIF_F_GSO\*
16191697 *
16201698 * @ifindex: interface index
16211699 * @group: The group the device belongs to
....@@ -1640,8 +1718,11 @@
16401718 * @netdev_ops: Includes several pointers to callbacks,
16411719 * if one wants to override the ndo_*() functions
16421720 * @ethtool_ops: Management operations
1721
+ * @l3mdev_ops: Layer 3 master device operations
16431722 * @ndisc_ops: Includes callbacks for different IPv6 neighbour
16441723 * discovery handling. Necessary for e.g. 6LoWPAN.
1724
+ * @xfrmdev_ops: Transformation offload operations
1725
+ * @tlsdev_ops: Transport Layer Security offload operations
16451726 * @header_ops: Includes callbacks for creating,parsing,caching,etc
16461727 * of Layer 2 headers.
16471728 *
....@@ -1680,6 +1761,7 @@
16801761 * @dev_port: Used to differentiate devices that share
16811762 * the same function
16821763 * @addr_list_lock: XXX: need comments on this one
1764
+ * @name_assign_type: network interface name assignment type
16831765 * @uc_promisc: Counter that indicates promiscuous mode
16841766 * has been enabled due to the need to listen to
16851767 * additional unicast addresses in a device that
....@@ -1702,6 +1784,9 @@
17021784 * @ip6_ptr: IPv6 specific data
17031785 * @ax25_ptr: AX.25 specific data
17041786 * @ieee80211_ptr: IEEE 802.11 specific data, assign before registering
1787
+ * @ieee802154_ptr: IEEE 802.15.4 low-rate Wireless Personal Area Network
1788
+ * device struct
1789
+ * @mpls_ptr: mpls_dev struct pointer
17051790 *
17061791 * @dev_addr: Hw address (before bcast,
17071792 * because most packets are unicast)
....@@ -1710,12 +1795,17 @@
17101795 * @num_rx_queues: Number of RX queues
17111796 * allocated at register_netdev() time
17121797 * @real_num_rx_queues: Number of RX queues currently active in device
1798
+ * @xdp_prog: XDP sockets filter program pointer
1799
+ * @gro_flush_timeout: timeout for GRO layer in NAPI
1800
+ * @napi_defer_hard_irqs: If not zero, provides a counter that would
1801
+ * allow to avoid NIC hard IRQ, on busy queues.
17131802 *
17141803 * @rx_handler: handler for received packets
17151804 * @rx_handler_data: XXX: need comments on this one
17161805 * @miniq_ingress: ingress/clsact qdisc specific data for
17171806 * ingress processing
17181807 * @ingress_queue: XXX: need comments on this one
1808
+ * @nf_hooks_ingress: netfilter hooks executed for ingress packets
17191809 * @broadcast: hw bcast address
17201810 *
17211811 * @rx_cpu_rmap: CPU reverse-mapping for RX completion interrupts,
....@@ -1730,14 +1820,19 @@
17301820 * @qdisc: Root qdisc from userspace point of view
17311821 * @tx_queue_len: Max frames per queue allowed
17321822 * @tx_global_lock: XXX: need comments on this one
1823
+ * @xdp_bulkq: XDP device bulk queue
1824
+ * @xps_cpus_map: all CPUs map for XPS device
1825
+ * @xps_rxqs_map: all RXQs map for XPS device
17331826 *
17341827 * @xps_maps: XXX: need comments on this one
17351828 * @miniq_egress: clsact qdisc specific data for
17361829 * egress processing
1830
+ * @qdisc_hash: qdisc hash table
17371831 * @watchdog_timeo: Represents the timeout that is used by
17381832 * the watchdog (see dev_watchdog())
17391833 * @watchdog_timer: List of timers
17401834 *
1835
+ * @proto_down_reason: reason a netdev interface is held down
17411836 * @pcpu_refcnt: Number of references to this device
17421837 * @todo_list: Delayed register/unregister
17431838 * @link_watch_list: XXX: need comments on this one
....@@ -1753,6 +1848,7 @@
17531848 * @nd_net: Network namespace this network device is inside
17541849 *
17551850 * @ml_priv: Mid-layer private
1851
+ * @ml_priv_type: Mid-layer private type
17561852 * @lstats: Loopback statistics
17571853 * @tstats: Tunnel statistics
17581854 * @dstats: Dummy statistics
....@@ -1793,13 +1889,29 @@
17931889 *
17941890 * @wol_enabled: Wake-on-LAN is enabled
17951891 *
1892
+ * @net_notifier_list: List of per-net netdev notifier block
1893
+ * that follow this device when it is moved
1894
+ * to another network namespace.
1895
+ *
1896
+ * @macsec_ops: MACsec offloading ops
1897
+ *
1898
+ * @udp_tunnel_nic_info: static structure describing the UDP tunnel
1899
+ * offload capabilities of the device
1900
+ * @udp_tunnel_nic: UDP tunnel offload state
1901
+ * @xdp_state: stores info on attached XDP BPF programs
1902
+ *
1903
+ * @nested_level: Used as as a parameter of spin_lock_nested() of
1904
+ * dev->addr_list_lock.
1905
+ * @unlink_list: As netif_addr_lock() can be called recursively,
1906
+ * keep a list of interfaces to be deleted.
1907
+ *
17961908 * FIXME: cleanup struct net_device such that network protocol info
17971909 * moves out.
17981910 */
17991911
18001912 struct net_device {
18011913 char name[IFNAMSIZ];
1802
- struct hlist_node name_hlist;
1914
+ struct netdev_name_node *name_node;
18031915 struct dev_ifalias __rcu *ifalias;
18041916 /*
18051917 * I/O specific fields
....@@ -1857,9 +1969,6 @@
18571969 #endif
18581970 const struct net_device_ops *netdev_ops;
18591971 const struct ethtool_ops *ethtool_ops;
1860
-#ifdef CONFIG_NET_SWITCHDEV
1861
- const struct switchdev_ops *switchdev_ops;
1862
-#endif
18631972 #ifdef CONFIG_NET_L3_MASTER_DEV
18641973 const struct l3mdev_ops *l3mdev_ops;
18651974 #endif
....@@ -1900,6 +2009,7 @@
19002009 unsigned short type;
19012010 unsigned short hard_header_len;
19022011 unsigned char min_header_len;
2012
+ unsigned char name_assign_type;
19032013
19042014 unsigned short needed_headroom;
19052015 unsigned short needed_tailroom;
....@@ -1910,12 +2020,12 @@
19102020 unsigned char addr_len;
19112021 unsigned char upper_level;
19122022 unsigned char lower_level;
2023
+
19132024 unsigned short neigh_priv_len;
19142025 unsigned short dev_id;
19152026 unsigned short dev_port;
19162027 spinlock_t addr_list_lock;
1917
- unsigned char name_assign_type;
1918
- bool uc_promisc;
2028
+
19192029 struct netdev_hw_addr_list uc;
19202030 struct netdev_hw_addr_list mc;
19212031 struct netdev_hw_addr_list dev_addrs;
....@@ -1923,8 +2033,15 @@
19232033 #ifdef CONFIG_SYSFS
19242034 struct kset *queues_kset;
19252035 #endif
2036
+#ifdef CONFIG_LOCKDEP
2037
+ struct list_head unlink_list;
2038
+#endif
19262039 unsigned int promiscuity;
19272040 unsigned int allmulti;
2041
+ bool uc_promisc;
2042
+#ifdef CONFIG_LOCKDEP
2043
+ unsigned char nested_level;
2044
+#endif
19282045
19292046
19302047 /* Protocol-specific pointers */
....@@ -1967,6 +2084,7 @@
19672084
19682085 struct bpf_prog __rcu *xdp_prog;
19692086 unsigned long gro_flush_timeout;
2087
+ int napi_defer_hard_irqs;
19702088 rx_handler_func_t __rcu *rx_handler;
19712089 void __rcu *rx_handler_data;
19722090
....@@ -1990,13 +2108,11 @@
19902108 struct netdev_queue *_tx ____cacheline_aligned_in_smp;
19912109 unsigned int num_tx_queues;
19922110 unsigned int real_num_tx_queues;
1993
- struct Qdisc *qdisc;
1994
-#ifdef CONFIG_NET_SCHED
1995
- DECLARE_HASHTABLE (qdisc_hash, 4);
1996
-#endif
2111
+ struct Qdisc __rcu *qdisc;
19972112 unsigned int tx_queue_len;
19982113 spinlock_t tx_global_lock;
1999
- int watchdog_timeo;
2114
+
2115
+ struct xdp_dev_bulk_queue __percpu *xdp_bulkq;
20002116
20012117 #ifdef CONFIG_XPS
20022118 struct xps_dev_maps __rcu *xps_cpus_map;
....@@ -2006,11 +2122,17 @@
20062122 struct mini_Qdisc __rcu *miniq_egress;
20072123 #endif
20082124
2125
+#ifdef CONFIG_NET_SCHED
2126
+ DECLARE_HASHTABLE (qdisc_hash, 4);
2127
+#endif
20092128 /* These may be needed for future network-power-down code. */
20102129 struct timer_list watchdog_timer;
2130
+ int watchdog_timeo;
20112131
2012
- int __percpu *pcpu_refcnt;
2132
+ u32 proto_down_reason;
2133
+
20132134 struct list_head todo_list;
2135
+ int __percpu *pcpu_refcnt;
20142136
20152137 struct list_head link_watch_list;
20162138
....@@ -2039,12 +2161,13 @@
20392161 possible_net_t nd_net;
20402162
20412163 /* mid-layer private */
2164
+ void *ml_priv;
2165
+ enum netdev_ml_priv_type ml_priv_type;
2166
+
20422167 union {
2043
- void *ml_priv;
20442168 struct pcpu_lstats __percpu *lstats;
20452169 struct pcpu_sw_netstats __percpu *tstats;
20462170 struct pcpu_dstats __percpu *dstats;
2047
- struct pcpu_vstats __percpu *vstats;
20482171 };
20492172
20502173 #if IS_ENABLED(CONFIG_GARP)
....@@ -2086,6 +2209,18 @@
20862209 bool proto_down;
20872210 unsigned wol_enabled:1;
20882211
2212
+ struct list_head net_notifier_list;
2213
+
2214
+#if IS_ENABLED(CONFIG_MACSEC)
2215
+ /* MACsec management functions */
2216
+ const struct macsec_ops *macsec_ops;
2217
+#endif
2218
+ const struct udp_tunnel_nic_info *udp_tunnel_nic_info;
2219
+ struct udp_tunnel_nic *udp_tunnel_nic;
2220
+
2221
+ /* protected by rtnl_lock */
2222
+ struct bpf_xdp_entity xdp_state[__MAX_XDP_MODE];
2223
+
20892224 ANDROID_KABI_RESERVE(1);
20902225 ANDROID_KABI_RESERVE(2);
20912226 ANDROID_KABI_RESERVE(3);
....@@ -2094,7 +2229,6 @@
20942229 ANDROID_KABI_RESERVE(6);
20952230 ANDROID_KABI_RESERVE(7);
20962231 ANDROID_KABI_RESERVE(8);
2097
-
20982232 };
20992233 #define to_net_dev(d) container_of(d, struct net_device, dev)
21002234
....@@ -2132,6 +2266,22 @@
21322266 int netdev_get_num_tc(struct net_device *dev)
21332267 {
21342268 return dev->num_tc;
2269
+}
2270
+
2271
+static inline void net_prefetch(void *p)
2272
+{
2273
+ prefetch(p);
2274
+#if L1_CACHE_BYTES < 128
2275
+ prefetch((u8 *)p + L1_CACHE_BYTES);
2276
+#endif
2277
+}
2278
+
2279
+static inline void net_prefetchw(void *p)
2280
+{
2281
+ prefetchw(p);
2282
+#if L1_CACHE_BYTES < 128
2283
+ prefetchw((u8 *)p + L1_CACHE_BYTES);
2284
+#endif
21352285 }
21362286
21372287 void netdev_unbind_sb_channel(struct net_device *dev,
....@@ -2181,15 +2331,17 @@
21812331 (dev)->qdisc_tx_busylock = &qdisc_tx_busylock_key; \
21822332 (dev)->qdisc_running_key = &qdisc_running_key; \
21832333 lockdep_set_class(&(dev)->addr_list_lock, \
2184
- &dev_addr_list_lock_key); \
2334
+ &dev_addr_list_lock_key); \
21852335 for (i = 0; i < (dev)->num_tx_queues; i++) \
21862336 lockdep_set_class(&(dev)->_tx[i]._xmit_lock, \
21872337 &qdisc_xmit_lock_key); \
21882338 }
21892339
2190
-struct netdev_queue *netdev_pick_tx(struct net_device *dev,
2191
- struct sk_buff *skb,
2192
- struct net_device *sb_dev);
2340
+u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
2341
+ struct net_device *sb_dev);
2342
+struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
2343
+ struct sk_buff *skb,
2344
+ struct net_device *sb_dev);
21932345
21942346 /* returns the headroom that the master device needs to take in account
21952347 * when forwarding to this dev
....@@ -2209,6 +2361,29 @@
22092361 static inline void netdev_reset_rx_headroom(struct net_device *dev)
22102362 {
22112363 netdev_set_rx_headroom(dev, -1);
2364
+}
2365
+
2366
+static inline void *netdev_get_ml_priv(struct net_device *dev,
2367
+ enum netdev_ml_priv_type type)
2368
+{
2369
+ if (dev->ml_priv_type != type)
2370
+ return NULL;
2371
+
2372
+ return dev->ml_priv;
2373
+}
2374
+
2375
+static inline void netdev_set_ml_priv(struct net_device *dev,
2376
+ void *ml_priv,
2377
+ enum netdev_ml_priv_type type)
2378
+{
2379
+ WARN(dev->ml_priv_type && dev->ml_priv_type != type,
2380
+ "Overwriting already set ml_priv_type (%u) with different ml_priv_type (%u)!\n",
2381
+ dev->ml_priv_type, type);
2382
+ WARN(!dev->ml_priv_type && dev->ml_priv,
2383
+ "Overwriting already set ml_priv and ml_priv_type is ML_PRIV_NONE!\n");
2384
+
2385
+ dev->ml_priv = ml_priv;
2386
+ dev->ml_priv_type = type;
22122387 }
22132388
22142389 /*
....@@ -2287,12 +2462,26 @@
22872462 }
22882463
22892464 /**
2465
+ * __netif_napi_del - remove a NAPI context
2466
+ * @napi: NAPI context
2467
+ *
2468
+ * Warning: caller must observe RCU grace period before freeing memory
2469
+ * containing @napi. Drivers might want to call this helper to combine
2470
+ * all the needed RCU grace periods into a single one.
2471
+ */
2472
+void __netif_napi_del(struct napi_struct *napi);
2473
+
2474
+/**
22902475 * netif_napi_del - remove a NAPI context
22912476 * @napi: NAPI context
22922477 *
22932478 * netif_napi_del() removes a NAPI context from the network device NAPI list
22942479 */
2295
-void netif_napi_del(struct napi_struct *napi);
2480
+static inline void netif_napi_del(struct napi_struct *napi)
2481
+{
2482
+ __netif_napi_del(napi);
2483
+ synchronize_net();
2484
+}
22962485
22972486 struct napi_gro_cb {
22982487 /* Virtual address of skb_shinfo(skb)->frags[0].page + offset. */
....@@ -2351,7 +2540,8 @@
23512540 /* Number of gro_receive callbacks this packet already went through */
23522541 u8 recursion_counter:4;
23532542
2354
- /* 1 bit hole */
2543
+ /* GRO is done by frag_list pointer chaining. */
2544
+ u8 is_flist:1;
23552545
23562546 /* used to support CHECKSUM_COMPLETE for tunneling protocols */
23572547 __wsum csum;
....@@ -2398,6 +2588,7 @@
23982588
23992589 struct packet_type {
24002590 __be16 type; /* This is really htons(ether_type). */
2591
+ bool ignore_outgoing;
24012592 struct net_device *dev; /* NULL is wildcarded here */
24022593 int (*func) (struct sk_buff *,
24032594 struct net_device *,
....@@ -2440,7 +2631,35 @@
24402631 u64 tx_packets;
24412632 u64 tx_bytes;
24422633 struct u64_stats_sync syncp;
2443
-};
2634
+} __aligned(4 * sizeof(u64));
2635
+
2636
+struct pcpu_lstats {
2637
+ u64_stats_t packets;
2638
+ u64_stats_t bytes;
2639
+ struct u64_stats_sync syncp;
2640
+} __aligned(2 * sizeof(u64));
2641
+
2642
+void dev_lstats_read(struct net_device *dev, u64 *packets, u64 *bytes);
2643
+
2644
+static inline void dev_sw_netstats_rx_add(struct net_device *dev, unsigned int len)
2645
+{
2646
+ struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats);
2647
+
2648
+ u64_stats_update_begin(&tstats->syncp);
2649
+ tstats->rx_bytes += len;
2650
+ tstats->rx_packets++;
2651
+ u64_stats_update_end(&tstats->syncp);
2652
+}
2653
+
2654
+static inline void dev_lstats_add(struct net_device *dev, unsigned int len)
2655
+{
2656
+ struct pcpu_lstats *lstats = this_cpu_ptr(dev->lstats);
2657
+
2658
+ u64_stats_update_begin(&lstats->syncp);
2659
+ u64_stats_add(&lstats->bytes, len);
2660
+ u64_stats_inc(&lstats->packets);
2661
+ u64_stats_update_end(&lstats->syncp);
2662
+}
24442663
24452664 #define __netdev_alloc_pcpu_stats(type, gfp) \
24462665 ({ \
....@@ -2505,7 +2724,8 @@
25052724 NETDEV_REGISTER,
25062725 NETDEV_UNREGISTER,
25072726 NETDEV_CHANGEMTU, /* notify after mtu change happened */
2508
- NETDEV_CHANGEADDR,
2727
+ NETDEV_CHANGEADDR, /* notify after the address change */
2728
+ NETDEV_PRE_CHANGEADDR, /* notify before the address change */
25092729 NETDEV_GOING_DOWN,
25102730 NETDEV_CHANGENAME,
25112731 NETDEV_FEAT_CHANGE,
....@@ -2536,6 +2756,15 @@
25362756
25372757 int register_netdevice_notifier(struct notifier_block *nb);
25382758 int unregister_netdevice_notifier(struct notifier_block *nb);
2759
+int register_netdevice_notifier_net(struct net *net, struct notifier_block *nb);
2760
+int unregister_netdevice_notifier_net(struct net *net,
2761
+ struct notifier_block *nb);
2762
+int register_netdevice_notifier_dev_net(struct net_device *dev,
2763
+ struct notifier_block *nb,
2764
+ struct netdev_net_notifier *nn);
2765
+int unregister_netdevice_notifier_dev_net(struct net_device *dev,
2766
+ struct notifier_block *nb,
2767
+ struct netdev_net_notifier *nn);
25392768
25402769 struct netdev_notifier_info {
25412770 struct net_device *dev;
....@@ -2565,6 +2794,11 @@
25652794 struct netdev_notifier_changelowerstate_info {
25662795 struct netdev_notifier_info info; /* must be first */
25672796 void *lower_state_info; /* is lower dev state */
2797
+};
2798
+
2799
+struct netdev_notifier_pre_changeaddr_info {
2800
+ struct netdev_notifier_info info; /* must be first */
2801
+ const unsigned char *dev_addr;
25682802 };
25692803
25702804 static inline void netdev_notifier_info_init(struct netdev_notifier_info *info,
....@@ -2601,6 +2835,9 @@
26012835 list_for_each_entry_safe(d, n, &(net)->dev_base_head, dev_list)
26022836 #define for_each_netdev_continue(net, d) \
26032837 list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
2838
+#define for_each_netdev_continue_reverse(net, d) \
2839
+ list_for_each_entry_continue_reverse(d, &(net)->dev_base_head, \
2840
+ dev_list)
26042841 #define for_each_netdev_continue_rcu(net, d) \
26052842 list_for_each_entry_continue_rcu(d, &(net)->dev_base_head, dev_list)
26062843 #define for_each_netdev_in_bond_rcu(bond, slave) \
....@@ -2661,20 +2898,30 @@
26612898 struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
26622899 struct net_device *__dev_get_by_name(struct net *net, const char *name);
26632900 int dev_alloc_name(struct net_device *dev, const char *name);
2664
-int dev_open(struct net_device *dev);
2901
+int dev_open(struct net_device *dev, struct netlink_ext_ack *extack);
26652902 void dev_close(struct net_device *dev);
26662903 void dev_close_many(struct list_head *head, bool unlink);
26672904 void dev_disable_lro(struct net_device *dev);
26682905 int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb);
26692906 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);
2907
+ struct net_device *sb_dev);
26722908 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);
2909
+ struct net_device *sb_dev);
2910
+
26752911 int dev_queue_xmit(struct sk_buff *skb);
26762912 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);
2913
+int __dev_direct_xmit(struct sk_buff *skb, u16 queue_id);
2914
+
2915
+static inline int dev_direct_xmit(struct sk_buff *skb, u16 queue_id)
2916
+{
2917
+ int ret;
2918
+
2919
+ ret = __dev_direct_xmit(skb, queue_id);
2920
+ if (!dev_xmit_complete(ret))
2921
+ kfree_skb(skb);
2922
+ return ret;
2923
+}
2924
+
26782925 int register_netdevice(struct net_device *dev);
26792926 void unregister_netdevice_queue(struct net_device *dev, struct list_head *head);
26802927 void unregister_netdevice_many(struct list_head *head);
....@@ -2686,9 +2933,11 @@
26862933 int netdev_refcnt_read(const struct net_device *dev);
26872934 void free_netdev(struct net_device *dev);
26882935 void netdev_freemem(struct net_device *dev);
2689
-void synchronize_net(void);
26902936 int init_dummy_netdev(struct net_device *dev);
26912937
2938
+struct net_device *netdev_get_xmit_slave(struct net_device *dev,
2939
+ struct sk_buff *skb,
2940
+ bool all_slaves);
26922941 struct net_device *dev_get_by_index(struct net *net, int ifindex);
26932942 struct net_device *__dev_get_by_index(struct net *net, int ifindex);
26942943 struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
....@@ -2696,6 +2945,7 @@
26962945 int netdev_get_name(struct net *net, char *name, int ifindex);
26972946 int dev_restart(struct net_device *dev);
26982947 int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb);
2948
+int skb_gro_receive_list(struct sk_buff *p, struct sk_buff *skb);
26992949
27002950 static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
27012951 {
....@@ -2832,16 +3082,16 @@
28323082 }
28333083
28343084 static inline void __skb_gro_checksum_convert(struct sk_buff *skb,
2835
- __sum16 check, __wsum pseudo)
3085
+ __wsum pseudo)
28363086 {
28373087 NAPI_GRO_CB(skb)->csum = ~pseudo;
28383088 NAPI_GRO_CB(skb)->csum_valid = 1;
28393089 }
28403090
2841
-#define skb_gro_checksum_try_convert(skb, proto, check, compute_pseudo) \
3091
+#define skb_gro_checksum_try_convert(skb, proto, compute_pseudo) \
28423092 do { \
28433093 if (__skb_gro_checksum_convert_check(skb)) \
2844
- __skb_gro_checksum_convert(skb, check, \
3094
+ __skb_gro_checksum_convert(skb, \
28453095 compute_pseudo(skb, proto)); \
28463096 } while (0)
28473097
....@@ -2964,6 +3214,15 @@
29643214 return dev->header_ops->parse(skb, haddr);
29653215 }
29663216
3217
+static inline __be16 dev_parse_header_protocol(const struct sk_buff *skb)
3218
+{
3219
+ const struct net_device *dev = skb->dev;
3220
+
3221
+ if (!dev->header_ops || !dev->header_ops->parse_protocol)
3222
+ return 0;
3223
+ return dev->header_ops->parse_protocol(skb);
3224
+}
3225
+
29673226 /* ll_header must have at least hard_header_len allocated */
29683227 static inline bool dev_validate_header(const struct net_device *dev,
29693228 char *ll_header, int len)
....@@ -2984,12 +3243,9 @@
29843243 return false;
29853244 }
29863245
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)
3246
+static inline bool dev_has_header(const struct net_device *dev)
29913247 {
2992
- return register_gifconf(family, NULL);
3248
+ return dev->header_ops && dev->header_ops->create;
29933249 }
29943250
29953251 #ifdef CONFIG_NET_FLOW_LIMIT
....@@ -3010,16 +3266,12 @@
30103266 */
30113267 struct softnet_data {
30123268 struct list_head poll_list;
3013
- struct napi_struct *current_napi;
30143269 struct sk_buff_head process_queue;
30153270
30163271 /* stats */
30173272 unsigned int processed;
30183273 unsigned int time_squeeze;
30193274 unsigned int received_rps;
3020
- /* unused partner variable for ABI alignment */
3021
- unsigned int gro_coalesced;
3022
-
30233275 #ifdef CONFIG_RPS
30243276 struct softnet_data *rps_ipi_list;
30253277 #endif
....@@ -3052,7 +3304,6 @@
30523304 unsigned int dropped;
30533305 struct sk_buff_head input_pkt_queue;
30543306 struct napi_struct backlog;
3055
- struct sk_buff_head tofree_queue;
30563307
30573308 };
30583309
....@@ -3071,38 +3322,14 @@
30713322 #endif
30723323 }
30733324
3074
-#define XMIT_RECURSION_LIMIT 8
30753325 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
31003326
31013327 static inline int dev_recursion_level(void)
31023328 {
31033329 return this_cpu_read(softnet_data.xmit.recursion);
31043330 }
31053331
3332
+#define XMIT_RECURSION_LIMIT 8
31063333 static inline bool dev_xmit_recursion(void)
31073334 {
31083335 return unlikely(__this_cpu_read(softnet_data.xmit.recursion) >
....@@ -3118,7 +3345,6 @@
31183345 {
31193346 __this_cpu_dec(softnet_data.xmit.recursion);
31203347 }
3121
-#endif
31223348
31233349 void __netif_schedule(struct Qdisc *q);
31243350 void netif_schedule_queue(struct netdev_queue *txq);
....@@ -3285,6 +3511,26 @@
32853511 #endif
32863512 }
32873513
3514
+/* Variant of netdev_tx_sent_queue() for drivers that are aware
3515
+ * that they should not test BQL status themselves.
3516
+ * We do want to change __QUEUE_STATE_STACK_XOFF only for the last
3517
+ * skb of a batch.
3518
+ * Returns true if the doorbell must be used to kick the NIC.
3519
+ */
3520
+static inline bool __netdev_tx_sent_queue(struct netdev_queue *dev_queue,
3521
+ unsigned int bytes,
3522
+ bool xmit_more)
3523
+{
3524
+ if (xmit_more) {
3525
+#ifdef CONFIG_BQL
3526
+ dql_queued(&dev_queue->dql, bytes);
3527
+#endif
3528
+ return netif_tx_queue_stopped(dev_queue);
3529
+ }
3530
+ netdev_tx_sent_queue(dev_queue, bytes);
3531
+ return true;
3532
+}
3533
+
32883534 /**
32893535 * netdev_sent_queue - report the number of bytes queued to hardware
32903536 * @dev: network device
....@@ -3297,6 +3543,14 @@
32973543 static inline void netdev_sent_queue(struct net_device *dev, unsigned int bytes)
32983544 {
32993545 netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes);
3546
+}
3547
+
3548
+static inline bool __netdev_sent_queue(struct net_device *dev,
3549
+ unsigned int bytes,
3550
+ bool xmit_more)
3551
+{
3552
+ return __netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes,
3553
+ xmit_more);
33003554 }
33013555
33023556 static inline void netdev_tx_completed_queue(struct netdev_queue *dev_queue,
....@@ -3315,7 +3569,7 @@
33153569 */
33163570 smp_mb();
33173571
3318
- if (dql_avail(&dev_queue->dql) < 0)
3572
+ if (unlikely(dql_avail(&dev_queue->dql) < 0))
33193573 return;
33203574
33213575 if (test_and_clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state))
....@@ -3523,7 +3777,7 @@
35233777 }
35243778
35253779 /**
3526
- * netif_attrmask_next_and - get the next CPU/Rx queue in *src1p & *src2p
3780
+ * netif_attrmask_next_and - get the next CPU/Rx queue in \*src1p & \*src2p
35273781 * @n: CPU/Rx queue index
35283782 * @src1p: the first CPUs/Rx queues mask pointer
35293783 * @src2p: the second CPUs/Rx queues mask pointer
....@@ -3660,6 +3914,7 @@
36603914 int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb);
36613915 int netif_rx(struct sk_buff *skb);
36623916 int netif_rx_ni(struct sk_buff *skb);
3917
+int netif_rx_any_context(struct sk_buff *skb);
36633918 int netif_receive_skb(struct sk_buff *skb);
36643919 int netif_receive_skb_core(struct sk_buff *skb);
36653920 void netif_receive_skb_list(struct list_head *head);
....@@ -3669,7 +3924,6 @@
36693924 gro_result_t napi_gro_frags(struct napi_struct *napi);
36703925 struct packet_offload *gro_find_receive_by_type(__be16 type);
36713926 struct packet_offload *gro_find_complete_by_type(__be16 type);
3672
-extern struct napi_struct *get_current_napi_context(void);
36733927
36743928 static inline void napi_free_frags(struct napi_struct *napi)
36753929 {
....@@ -3693,8 +3947,10 @@
36933947 int dev_ifconf(struct net *net, struct ifconf *, int);
36943948 int dev_ethtool(struct net *net, struct ifreq *);
36953949 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);
3950
+int __dev_change_flags(struct net_device *dev, unsigned int flags,
3951
+ struct netlink_ext_ack *extack);
3952
+int dev_change_flags(struct net_device *dev, unsigned int flags,
3953
+ struct netlink_ext_ack *extack);
36983954 void __dev_notify_flags(struct net_device *, unsigned int old_flags,
36993955 unsigned int gchanges);
37003956 int dev_change_name(struct net_device *, const char *);
....@@ -3709,22 +3965,35 @@
37093965 int dev_set_mtu(struct net_device *, int);
37103966 int dev_change_tx_queue_len(struct net_device *, unsigned long);
37113967 void dev_set_group(struct net_device *, int);
3712
-int dev_set_mac_address(struct net_device *, struct sockaddr *);
3968
+int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
3969
+ struct netlink_ext_ack *extack);
3970
+int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
3971
+ struct netlink_ext_ack *extack);
3972
+int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
3973
+ struct netlink_ext_ack *extack);
3974
+int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
37133975 int dev_change_carrier(struct net_device *, bool new_carrier);
37143976 int dev_get_phys_port_id(struct net_device *dev,
37153977 struct netdev_phys_item_id *ppid);
37163978 int dev_get_phys_port_name(struct net_device *dev,
37173979 char *name, size_t len);
3980
+int dev_get_port_parent_id(struct net_device *dev,
3981
+ struct netdev_phys_item_id *ppid, bool recurse);
3982
+bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b);
37183983 int dev_change_proto_down(struct net_device *dev, bool proto_down);
3984
+int dev_change_proto_down_generic(struct net_device *dev, bool proto_down);
3985
+void dev_change_proto_down_reason(struct net_device *dev, unsigned long mask,
3986
+ u32 value);
37193987 struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev, bool *again);
37203988 struct sk_buff *dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
37213989 struct netdev_queue *txq, int *ret);
37223990
37233991 typedef int (*bpf_op_t)(struct net_device *dev, struct netdev_bpf *bpf);
37243992 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);
3993
+ int fd, int expected_fd, u32 flags);
3994
+int bpf_xdp_link_attach(const union bpf_attr *attr, struct bpf_prog *prog);
3995
+u32 dev_xdp_prog_id(struct net_device *dev, enum bpf_xdp_mode mode);
3996
+
37283997 int xdp_umem_query(struct net_device *dev, u16 queue_id);
37293998
37303999 int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
....@@ -3747,6 +4016,7 @@
37474016 return 0;
37484017 }
37494018
4019
+bool dev_nit_active(struct net_device *dev);
37504020 void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev);
37514021
37524022 extern int netdev_budget;
....@@ -3763,7 +4033,8 @@
37634033 */
37644034 static inline void dev_put(struct net_device *dev)
37654035 {
3766
- this_cpu_dec(*dev->pcpu_refcnt);
4036
+ if (dev)
4037
+ this_cpu_dec(*dev->pcpu_refcnt);
37674038 }
37684039
37694040 /**
....@@ -3774,7 +4045,8 @@
37744045 */
37754046 static inline void dev_hold(struct net_device *dev)
37764047 {
3777
- this_cpu_inc(*dev->pcpu_refcnt);
4048
+ if (dev)
4049
+ this_cpu_inc(*dev->pcpu_refcnt);
37784050 }
37794051
37804052 /* Carrier loss detection, dial on demand. The functions netif_carrier_on
....@@ -3852,6 +4124,46 @@
38524124
38534125
38544126 /**
4127
+ * netif_testing_on - mark device as under test.
4128
+ * @dev: network device
4129
+ *
4130
+ * Mark device as under test (as per RFC2863).
4131
+ *
4132
+ * The testing state indicates that some test(s) must be performed on
4133
+ * the interface. After completion, of the test, the interface state
4134
+ * will change to up, dormant, or down, as appropriate.
4135
+ */
4136
+static inline void netif_testing_on(struct net_device *dev)
4137
+{
4138
+ if (!test_and_set_bit(__LINK_STATE_TESTING, &dev->state))
4139
+ linkwatch_fire_event(dev);
4140
+}
4141
+
4142
+/**
4143
+ * netif_testing_off - set device as not under test.
4144
+ * @dev: network device
4145
+ *
4146
+ * Device is not in testing state.
4147
+ */
4148
+static inline void netif_testing_off(struct net_device *dev)
4149
+{
4150
+ if (test_and_clear_bit(__LINK_STATE_TESTING, &dev->state))
4151
+ linkwatch_fire_event(dev);
4152
+}
4153
+
4154
+/**
4155
+ * netif_testing - test if device is under test
4156
+ * @dev: network device
4157
+ *
4158
+ * Check if device is under test
4159
+ */
4160
+static inline bool netif_testing(const struct net_device *dev)
4161
+{
4162
+ return test_bit(__LINK_STATE_TESTING, &dev->state);
4163
+}
4164
+
4165
+
4166
+/**
38554167 * netif_oper_up - test if device is operational
38564168 * @dev: network device
38574169 *
....@@ -3883,22 +4195,48 @@
38834195 */
38844196
38854197 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,
4198
+ NETIF_MSG_DRV_BIT,
4199
+ NETIF_MSG_PROBE_BIT,
4200
+ NETIF_MSG_LINK_BIT,
4201
+ NETIF_MSG_TIMER_BIT,
4202
+ NETIF_MSG_IFDOWN_BIT,
4203
+ NETIF_MSG_IFUP_BIT,
4204
+ NETIF_MSG_RX_ERR_BIT,
4205
+ NETIF_MSG_TX_ERR_BIT,
4206
+ NETIF_MSG_TX_QUEUED_BIT,
4207
+ NETIF_MSG_INTR_BIT,
4208
+ NETIF_MSG_TX_DONE_BIT,
4209
+ NETIF_MSG_RX_STATUS_BIT,
4210
+ NETIF_MSG_PKTDATA_BIT,
4211
+ NETIF_MSG_HW_BIT,
4212
+ NETIF_MSG_WOL_BIT,
4213
+
4214
+ /* When you add a new bit above, update netif_msg_class_names array
4215
+ * in net/ethtool/common.c
4216
+ */
4217
+ NETIF_MSG_CLASS_COUNT,
39014218 };
4219
+/* Both ethtool_ops interface and internal driver implementation use u32 */
4220
+static_assert(NETIF_MSG_CLASS_COUNT <= 32);
4221
+
4222
+#define __NETIF_MSG_BIT(bit) ((u32)1 << (bit))
4223
+#define __NETIF_MSG(name) __NETIF_MSG_BIT(NETIF_MSG_ ## name ## _BIT)
4224
+
4225
+#define NETIF_MSG_DRV __NETIF_MSG(DRV)
4226
+#define NETIF_MSG_PROBE __NETIF_MSG(PROBE)
4227
+#define NETIF_MSG_LINK __NETIF_MSG(LINK)
4228
+#define NETIF_MSG_TIMER __NETIF_MSG(TIMER)
4229
+#define NETIF_MSG_IFDOWN __NETIF_MSG(IFDOWN)
4230
+#define NETIF_MSG_IFUP __NETIF_MSG(IFUP)
4231
+#define NETIF_MSG_RX_ERR __NETIF_MSG(RX_ERR)
4232
+#define NETIF_MSG_TX_ERR __NETIF_MSG(TX_ERR)
4233
+#define NETIF_MSG_TX_QUEUED __NETIF_MSG(TX_QUEUED)
4234
+#define NETIF_MSG_INTR __NETIF_MSG(INTR)
4235
+#define NETIF_MSG_TX_DONE __NETIF_MSG(TX_DONE)
4236
+#define NETIF_MSG_RX_STATUS __NETIF_MSG(RX_STATUS)
4237
+#define NETIF_MSG_PKTDATA __NETIF_MSG(PKTDATA)
4238
+#define NETIF_MSG_HW __NETIF_MSG(HW)
4239
+#define NETIF_MSG_WOL __NETIF_MSG(WOL)
39024240
39034241 #define netif_msg_drv(p) ((p)->msg_enable & NETIF_MSG_DRV)
39044242 #define netif_msg_probe(p) ((p)->msg_enable & NETIF_MSG_PROBE)
....@@ -3927,50 +4265,11 @@
39274265 return (1U << debug_value) - 1;
39284266 }
39294267
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
-
39704268 static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
39714269 {
39724270 spin_lock(&txq->_xmit_lock);
3973
- netdev_queue_set_owner(txq, cpu);
4271
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4272
+ WRITE_ONCE(txq->xmit_lock_owner, cpu);
39744273 }
39754274
39764275 static inline bool __netif_tx_acquire(struct netdev_queue *txq)
....@@ -3987,7 +4286,8 @@
39874286 static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
39884287 {
39894288 spin_lock_bh(&txq->_xmit_lock);
3990
- netdev_queue_set_owner(txq, smp_processor_id());
4289
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4290
+ WRITE_ONCE(txq->xmit_lock_owner, smp_processor_id());
39914291 }
39924292
39934293 static inline bool __netif_tx_trylock(struct netdev_queue *txq)
....@@ -3995,26 +4295,29 @@
39954295 bool ok = spin_trylock(&txq->_xmit_lock);
39964296
39974297 if (likely(ok)) {
3998
- netdev_queue_set_owner(txq, smp_processor_id());
4298
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4299
+ WRITE_ONCE(txq->xmit_lock_owner, smp_processor_id());
39994300 }
40004301 return ok;
40014302 }
40024303
40034304 static inline void __netif_tx_unlock(struct netdev_queue *txq)
40044305 {
4005
- netdev_queue_clear_owner(txq);
4306
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4307
+ WRITE_ONCE(txq->xmit_lock_owner, -1);
40064308 spin_unlock(&txq->_xmit_lock);
40074309 }
40084310
40094311 static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
40104312 {
4011
- netdev_queue_clear_owner(txq);
4313
+ /* Pairs with READ_ONCE() in __dev_queue_xmit() */
4314
+ WRITE_ONCE(txq->xmit_lock_owner, -1);
40124315 spin_unlock_bh(&txq->_xmit_lock);
40134316 }
40144317
40154318 static inline void txq_trans_update(struct netdev_queue *txq)
40164319 {
4017
- if (netdev_queue_has_owner(txq))
4320
+ if (txq->xmit_lock_owner != -1)
40184321 txq->trans_start = jiffies;
40194322 }
40204323
....@@ -4126,22 +4429,23 @@
41264429
41274430 static inline void netif_addr_lock(struct net_device *dev)
41284431 {
4129
- spin_lock(&dev->addr_list_lock);
4130
-}
4432
+ unsigned char nest_level = 0;
41314433
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);
4434
+#ifdef CONFIG_LOCKDEP
4435
+ nest_level = dev->nested_level;
4436
+#endif
4437
+ spin_lock_nested(&dev->addr_list_lock, nest_level);
41404438 }
41414439
41424440 static inline void netif_addr_lock_bh(struct net_device *dev)
41434441 {
4144
- spin_lock_bh(&dev->addr_list_lock);
4442
+ unsigned char nest_level = 0;
4443
+
4444
+#ifdef CONFIG_LOCKDEP
4445
+ nest_level = dev->nested_level;
4446
+#endif
4447
+ local_bh_disable();
4448
+ spin_lock_nested(&dev->addr_list_lock, nest_level);
41454449 }
41464450
41474451 static inline void netif_addr_unlock(struct net_device *dev)
....@@ -4170,9 +4474,6 @@
41704474 unsigned char name_assign_type,
41714475 void (*setup)(struct net_device *),
41724476 unsigned int txqs, unsigned int rxqs);
4173
-int dev_get_valid_name(struct net *net, struct net_device *dev,
4174
- const char *name);
4175
-
41764477 #define alloc_netdev(sizeof_priv, name, name_assign_type, setup) \
41774478 alloc_netdev_mqs(sizeof_priv, name, name_assign_type, setup, 1, 1)
41784479
....@@ -4182,6 +4483,8 @@
41824483
41834484 int register_netdev(struct net_device *dev);
41844485 void unregister_netdev(struct net_device *dev);
4486
+
4487
+int devm_register_netdev(struct device *dev, struct net_device *ndev);
41854488
41864489 /* General hardware address lists handling functions */
41874490 int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
....@@ -4193,6 +4496,16 @@
41934496 int (*sync)(struct net_device *, const unsigned char *),
41944497 int (*unsync)(struct net_device *,
41954498 const unsigned char *));
4499
+int __hw_addr_ref_sync_dev(struct netdev_hw_addr_list *list,
4500
+ struct net_device *dev,
4501
+ int (*sync)(struct net_device *,
4502
+ const unsigned char *, int),
4503
+ int (*unsync)(struct net_device *,
4504
+ const unsigned char *, int));
4505
+void __hw_addr_ref_unsync_dev(struct netdev_hw_addr_list *list,
4506
+ struct net_device *dev,
4507
+ int (*unsync)(struct net_device *,
4508
+ const unsigned char *, int));
41964509 void __hw_addr_unsync_dev(struct netdev_hw_addr_list *list,
41974510 struct net_device *dev,
41984511 int (*unsync)(struct net_device *,
....@@ -4307,6 +4620,8 @@
43074620 struct rtnl_link_stats64 *storage);
43084621 void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
43094622 const struct net_device_stats *netdev_stats);
4623
+void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
4624
+ const struct pcpu_sw_netstats __percpu *netstats);
43104625
43114626 extern int netdev_max_backlog;
43124627 extern int netdev_tstamp_prequeue;
....@@ -4315,12 +4630,39 @@
43154630 extern int dev_weight_tx_bias;
43164631 extern int dev_rx_weight;
43174632 extern int dev_tx_weight;
4633
+extern int gro_normal_batch;
4634
+
4635
+enum {
4636
+ NESTED_SYNC_IMM_BIT,
4637
+ NESTED_SYNC_TODO_BIT,
4638
+};
4639
+
4640
+#define __NESTED_SYNC_BIT(bit) ((u32)1 << (bit))
4641
+#define __NESTED_SYNC(name) __NESTED_SYNC_BIT(NESTED_SYNC_ ## name ## _BIT)
4642
+
4643
+#define NESTED_SYNC_IMM __NESTED_SYNC(IMM)
4644
+#define NESTED_SYNC_TODO __NESTED_SYNC(TODO)
4645
+
4646
+struct netdev_nested_priv {
4647
+ unsigned char flags;
4648
+ void *data;
4649
+};
43184650
43194651 bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
43204652 struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,
43214653 struct list_head **iter);
43224654 struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
43234655 struct list_head **iter);
4656
+
4657
+#ifdef CONFIG_LOCKDEP
4658
+static LIST_HEAD(net_unlink_list);
4659
+
4660
+static inline void net_unlink_todo(struct net_device *dev)
4661
+{
4662
+ if (list_empty(&dev->unlink_list))
4663
+ list_add_tail(&dev->unlink_list, &net_unlink_list);
4664
+}
4665
+#endif
43244666
43254667 /* iterate through upper list, must be called under RCU read lock */
43264668 #define netdev_for_each_upper_dev_rcu(dev, updev, iter) \
....@@ -4331,8 +4673,8 @@
43314673
43324674 int netdev_walk_all_upper_dev_rcu(struct net_device *dev,
43334675 int (*fn)(struct net_device *upper_dev,
4334
- void *data),
4335
- void *data);
4676
+ struct netdev_nested_priv *priv),
4677
+ struct netdev_nested_priv *priv);
43364678
43374679 bool netdev_has_upper_dev_all_rcu(struct net_device *dev,
43384680 struct net_device *upper_dev);
....@@ -4365,19 +4707,16 @@
43654707 ldev; \
43664708 ldev = netdev_lower_get_next(dev, &(iter)))
43674709
4368
-struct net_device *netdev_all_lower_get_next(struct net_device *dev,
4710
+struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev,
43694711 struct list_head **iter);
4370
-struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev,
4371
- struct list_head **iter);
4372
-
43734712 int netdev_walk_all_lower_dev(struct net_device *dev,
43744713 int (*fn)(struct net_device *lower_dev,
4375
- void *data),
4376
- void *data);
4714
+ struct netdev_nested_priv *priv),
4715
+ struct netdev_nested_priv *priv);
43774716 int netdev_walk_all_lower_dev_rcu(struct net_device *dev,
43784717 int (*fn)(struct net_device *lower_dev,
4379
- void *data),
4380
- void *data);
4718
+ struct netdev_nested_priv *priv),
4719
+ struct netdev_nested_priv *priv);
43814720
43824721 void *netdev_adjacent_get_private(struct list_head *adj_list);
43834722 void *netdev_lower_get_first_private_rcu(struct net_device *dev);
....@@ -4391,6 +4730,16 @@
43914730 struct netlink_ext_ack *extack);
43924731 void netdev_upper_dev_unlink(struct net_device *dev,
43934732 struct net_device *upper_dev);
4733
+int netdev_adjacent_change_prepare(struct net_device *old_dev,
4734
+ struct net_device *new_dev,
4735
+ struct net_device *dev,
4736
+ struct netlink_ext_ack *extack);
4737
+void netdev_adjacent_change_commit(struct net_device *old_dev,
4738
+ struct net_device *new_dev,
4739
+ struct net_device *dev);
4740
+void netdev_adjacent_change_abort(struct net_device *old_dev,
4741
+ struct net_device *new_dev,
4742
+ struct net_device *dev);
43944743 void netdev_adjacent_rename_links(struct net_device *dev, char *oldname);
43954744 void *netdev_lower_dev_get_private(struct net_device *dev,
43964745 struct net_device *lower_dev);
....@@ -4402,7 +4751,6 @@
44024751 extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly;
44034752 void netdev_rss_key_fill(void *buffer, size_t len);
44044753
4405
-int dev_get_nest_level(struct net_device *dev);
44064754 int skb_checksum_help(struct sk_buff *skb);
44074755 int skb_crc32c_csum_help(struct sk_buff *skb);
44084756 int skb_csum_hwoffload_help(struct sk_buff *skb,
....@@ -4425,6 +4773,15 @@
44254773
44264774 void netdev_bonding_info_change(struct net_device *dev,
44274775 struct netdev_bonding_info *bonding_info);
4776
+
4777
+#if IS_ENABLED(CONFIG_ETHTOOL_NETLINK)
4778
+void ethtool_notify(struct net_device *dev, unsigned int cmd, const void *data);
4779
+#else
4780
+static inline void ethtool_notify(struct net_device *dev, unsigned int cmd,
4781
+ const void *data)
4782
+{
4783
+}
4784
+#endif
44284785
44294786 static inline
44304787 struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features)
....@@ -4457,9 +4814,10 @@
44574814 }
44584815
44594816 #ifdef CONFIG_BUG
4460
-void netdev_rx_csum_fault(struct net_device *dev);
4817
+void netdev_rx_csum_fault(struct net_device *dev, struct sk_buff *skb);
44614818 #else
4462
-static inline void netdev_rx_csum_fault(struct net_device *dev)
4819
+static inline void netdev_rx_csum_fault(struct net_device *dev,
4820
+ struct sk_buff *skb)
44634821 {
44644822 }
44654823 #endif
....@@ -4477,7 +4835,7 @@
44774835 struct sk_buff *skb, struct net_device *dev,
44784836 bool more)
44794837 {
4480
- skb->xmit_more = more ? 1 : 0;
4838
+ __this_cpu_write(softnet_data.xmit.more, more);
44814839 return ops->ndo_start_xmit(skb, dev);
44824840 }
44834841
....@@ -4490,7 +4848,7 @@
44904848 struct netdev_queue *txq, bool more)
44914849 {
44924850 const struct net_device_ops *ops = dev->netdev_ops;
4493
- int rc;
4851
+ netdev_tx_t rc;
44944852
44954853 rc = __netdev_start_xmit(ops, skb, dev, more);
44964854 if (rc == NETDEV_TX_OK)
....@@ -4503,16 +4861,6 @@
45034861 const void *ns);
45044862 void netdev_class_remove_file_ns(const struct class_attribute *class_attr,
45054863 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
-}
45164864
45174865 extern const struct kobj_ns_type_operations net_ns_type_operations;
45184866
....@@ -4586,6 +4934,7 @@
45864934 BUILD_BUG_ON(SKB_GSO_ESP != (NETIF_F_GSO_ESP >> NETIF_F_GSO_SHIFT));
45874935 BUILD_BUG_ON(SKB_GSO_UDP != (NETIF_F_GSO_UDP >> NETIF_F_GSO_SHIFT));
45884936 BUILD_BUG_ON(SKB_GSO_UDP_L4 != (NETIF_F_GSO_UDP_L4 >> NETIF_F_GSO_SHIFT));
4937
+ BUILD_BUG_ON(SKB_GSO_FRAGLIST != (NETIF_F_GSO_FRAGLIST >> NETIF_F_GSO_SHIFT));
45894938
45904939 return (features & feature) == feature;
45914940 }
....@@ -4688,6 +5037,11 @@
46885037 return dev->priv_flags & IFF_OVS_DATAPATH;
46895038 }
46905039
5040
+static inline bool netif_is_any_bridge_port(const struct net_device *dev)
5041
+{
5042
+ return netif_is_bridge_port(dev) || netif_is_ovs_port(dev);
5043
+}
5044
+
46915045 static inline bool netif_is_team_master(const struct net_device *dev)
46925046 {
46935047 return dev->priv_flags & IFF_TEAM;
....@@ -4769,22 +5123,22 @@
47695123 return " (unknown)";
47705124 }
47715125
4772
-__printf(3, 4)
5126
+__printf(3, 4) __cold
47735127 void netdev_printk(const char *level, const struct net_device *dev,
47745128 const char *format, ...);
4775
-__printf(2, 3)
5129
+__printf(2, 3) __cold
47765130 void netdev_emerg(const struct net_device *dev, const char *format, ...);
4777
-__printf(2, 3)
5131
+__printf(2, 3) __cold
47785132 void netdev_alert(const struct net_device *dev, const char *format, ...);
4779
-__printf(2, 3)
5133
+__printf(2, 3) __cold
47805134 void netdev_crit(const struct net_device *dev, const char *format, ...);
4781
-__printf(2, 3)
5135
+__printf(2, 3) __cold
47825136 void netdev_err(const struct net_device *dev, const char *format, ...);
4783
-__printf(2, 3)
5137
+__printf(2, 3) __cold
47845138 void netdev_warn(const struct net_device *dev, const char *format, ...);
4785
-__printf(2, 3)
5139
+__printf(2, 3) __cold
47865140 void netdev_notice(const struct net_device *dev, const char *format, ...);
4787
-__printf(2, 3)
5141
+__printf(2, 3) __cold
47885142 void netdev_info(const struct net_device *dev, const char *format, ...);
47895143
47905144 #define netdev_level_once(level, dev, fmt, ...) \
....@@ -4815,7 +5169,8 @@
48155169 #define MODULE_ALIAS_NETDEV(device) \
48165170 MODULE_ALIAS("netdev-" device)
48175171
4818
-#if defined(CONFIG_DYNAMIC_DEBUG)
5172
+#if defined(CONFIG_DYNAMIC_DEBUG) || \
5173
+ (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE))
48195174 #define netdev_dbg(__dev, format, args...) \
48205175 do { \
48215176 dynamic_netdev_dbg(__dev, format, ##args); \
....@@ -4885,7 +5240,8 @@
48855240 #define netif_info(priv, type, dev, fmt, args...) \
48865241 netif_level(info, priv, type, dev, fmt, ##args)
48875242
4888
-#if defined(CONFIG_DYNAMIC_DEBUG)
5243
+#if defined(CONFIG_DYNAMIC_DEBUG) || \
5244
+ (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE))
48895245 #define netif_dbg(priv, type, netdev, format, args...) \
48905246 do { \
48915247 if (netif_msg_##type(priv)) \
....@@ -4945,4 +5301,6 @@
49455301 #define PTYPE_HASH_SIZE (16)
49465302 #define PTYPE_HASH_MASK (PTYPE_HASH_SIZE - 1)
49475303
5304
+extern struct net_device *blackhole_netdev;
5305
+
49485306 #endif /* _LINUX_NETDEVICE_H */