1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#ifndef _LINUX_NETDEVICE_H
22#define _LINUX_NETDEVICE_H
23
24#include <linux/timer.h>
25#include <linux/bug.h>
26#include <linux/delay.h>
27#include <linux/atomic.h>
28#include <linux/prefetch.h>
29#include <asm/cache.h>
30#include <asm/byteorder.h>
31
32#include <linux/percpu.h>
33#include <linux/rculist.h>
34#include <linux/workqueue.h>
35#include <linux/dynamic_queue_limits.h>
36
37#include <linux/ethtool.h>
38#include <net/net_namespace.h>
39#ifdef CONFIG_DCB
40#include <net/dcbnl.h>
41#endif
42#include <net/netprio_cgroup.h>
43#include <net/xdp.h>
44
45#include <linux/netdev_features.h>
46#include <linux/neighbour.h>
47#include <uapi/linux/netdevice.h>
48#include <uapi/linux/if_bonding.h>
49#include <uapi/linux/pkt_cls.h>
50#include <linux/hashtable.h>
51
52struct netpoll_info;
53struct device;
54struct phy_device;
55struct dsa_port;
56
57struct sfp_bus;
58
59struct wireless_dev;
60
61struct wpan_dev;
62struct mpls_dev;
63
64struct udp_tunnel_info;
65struct bpf_prog;
66struct xdp_buff;
67
68void netdev_set_default_ethtool_ops(struct net_device *dev,
69 const struct ethtool_ops *ops);
70
71
72#define NET_RX_SUCCESS 0
73#define NET_RX_DROP 1
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93#define NET_XMIT_SUCCESS 0x00
94#define NET_XMIT_DROP 0x01
95#define NET_XMIT_CN 0x02
96#define NET_XMIT_MASK 0x0f
97
98
99
100
101#define net_xmit_eval(e) ((e) == NET_XMIT_CN ? 0 : (e))
102#define net_xmit_errno(e) ((e) != NET_XMIT_CN ? -ENOBUFS : 0)
103
104
105#define NETDEV_TX_MASK 0xf0
106
107enum netdev_tx {
108 __NETDEV_TX_MIN = INT_MIN,
109 NETDEV_TX_OK = 0x00,
110 NETDEV_TX_BUSY = 0x10,
111};
112typedef enum netdev_tx netdev_tx_t;
113
114
115
116
117
118static inline bool dev_xmit_complete(int rc)
119{
120
121
122
123
124
125
126 if (likely(rc < NET_XMIT_MASK))
127 return true;
128
129 return false;
130}
131
132
133
134
135
136
137#if defined(CONFIG_HYPERV_NET)
138# define LL_MAX_HEADER 128
139#elif defined(CONFIG_WLAN) || IS_ENABLED(CONFIG_AX25)
140# if defined(CONFIG_MAC80211_MESH)
141# define LL_MAX_HEADER 128
142# else
143# define LL_MAX_HEADER 96
144# endif
145#else
146# define LL_MAX_HEADER 32
147#endif
148
149#if !IS_ENABLED(CONFIG_NET_IPIP) && !IS_ENABLED(CONFIG_NET_IPGRE) && \
150 !IS_ENABLED(CONFIG_IPV6_SIT) && !IS_ENABLED(CONFIG_IPV6_TUNNEL)
151#define MAX_HEADER LL_MAX_HEADER
152#else
153#define MAX_HEADER (LL_MAX_HEADER + 48)
154#endif
155
156
157
158
159
160
161struct net_device_stats {
162 unsigned long rx_packets;
163 unsigned long tx_packets;
164 unsigned long rx_bytes;
165 unsigned long tx_bytes;
166 unsigned long rx_errors;
167 unsigned long tx_errors;
168 unsigned long rx_dropped;
169 unsigned long tx_dropped;
170 unsigned long multicast;
171 unsigned long collisions;
172 unsigned long rx_length_errors;
173 unsigned long rx_over_errors;
174 unsigned long rx_crc_errors;
175 unsigned long rx_frame_errors;
176 unsigned long rx_fifo_errors;
177 unsigned long rx_missed_errors;
178 unsigned long tx_aborted_errors;
179 unsigned long tx_carrier_errors;
180 unsigned long tx_fifo_errors;
181 unsigned long tx_heartbeat_errors;
182 unsigned long tx_window_errors;
183 unsigned long rx_compressed;
184 unsigned long tx_compressed;
185};
186
187
188#include <linux/cache.h>
189#include <linux/skbuff.h>
190
191#ifdef CONFIG_RPS
192#include <linux/static_key.h>
193extern struct static_key_false rps_needed;
194extern struct static_key_false rfs_needed;
195#endif
196
197struct neighbour;
198struct neigh_parms;
199struct sk_buff;
200
201struct netdev_hw_addr {
202 struct list_head list;
203 unsigned char addr[MAX_ADDR_LEN];
204 unsigned char type;
205#define NETDEV_HW_ADDR_T_LAN 1
206#define NETDEV_HW_ADDR_T_SAN 2
207#define NETDEV_HW_ADDR_T_SLAVE 3
208#define NETDEV_HW_ADDR_T_UNICAST 4
209#define NETDEV_HW_ADDR_T_MULTICAST 5
210 bool global_use;
211 int sync_cnt;
212 int refcount;
213 int synced;
214 struct rcu_head rcu_head;
215};
216
217struct netdev_hw_addr_list {
218 struct list_head list;
219 int count;
220};
221
222#define netdev_hw_addr_list_count(l) ((l)->count)
223#define netdev_hw_addr_list_empty(l) (netdev_hw_addr_list_count(l) == 0)
224#define netdev_hw_addr_list_for_each(ha, l) \
225 list_for_each_entry(ha, &(l)->list, list)
226
227#define netdev_uc_count(dev) netdev_hw_addr_list_count(&(dev)->uc)
228#define netdev_uc_empty(dev) netdev_hw_addr_list_empty(&(dev)->uc)
229#define netdev_for_each_uc_addr(ha, dev) \
230 netdev_hw_addr_list_for_each(ha, &(dev)->uc)
231
232#define netdev_mc_count(dev) netdev_hw_addr_list_count(&(dev)->mc)
233#define netdev_mc_empty(dev) netdev_hw_addr_list_empty(&(dev)->mc)
234#define netdev_for_each_mc_addr(ha, dev) \
235 netdev_hw_addr_list_for_each(ha, &(dev)->mc)
236
237struct hh_cache {
238 unsigned int hh_len;
239 seqlock_t hh_lock;
240
241
242#define HH_DATA_MOD 16
243#define HH_DATA_OFF(__len) \
244 (HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))
245#define HH_DATA_ALIGN(__len) \
246 (((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))
247 unsigned long hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];
248};
249
250
251
252
253
254
255
256
257
258#define LL_RESERVED_SPACE(dev) \
259 ((((dev)->hard_header_len+(dev)->needed_headroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
260#define LL_RESERVED_SPACE_EXTRA(dev,extra) \
261 ((((dev)->hard_header_len+(dev)->needed_headroom+(extra))&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
262
263struct header_ops {
264 int (*create) (struct sk_buff *skb, struct net_device *dev,
265 unsigned short type, const void *daddr,
266 const void *saddr, unsigned int len);
267 int (*parse)(const struct sk_buff *skb, unsigned char *haddr);
268 int (*cache)(const struct neighbour *neigh, struct hh_cache *hh, __be16 type);
269 void (*cache_update)(struct hh_cache *hh,
270 const struct net_device *dev,
271 const unsigned char *haddr);
272 bool (*validate)(const char *ll_header, unsigned int len);
273 __be16 (*parse_protocol)(const struct sk_buff *skb);
274};
275
276
277
278
279
280
281enum netdev_state_t {
282 __LINK_STATE_START,
283 __LINK_STATE_PRESENT,
284 __LINK_STATE_NOCARRIER,
285 __LINK_STATE_LINKWATCH_PENDING,
286 __LINK_STATE_DORMANT,
287};
288
289
290
291
292
293
294struct netdev_boot_setup {
295 char name[IFNAMSIZ];
296 struct ifmap map;
297};
298#define NETDEV_BOOT_SETUP_MAX 8
299
300int __init netdev_boot_setup(char *str);
301
302struct gro_list {
303 struct list_head list;
304 int count;
305};
306
307
308
309
310
311#define GRO_HASH_BUCKETS 8
312
313
314
315
316struct napi_struct {
317
318
319
320
321
322
323 struct list_head poll_list;
324
325 unsigned long state;
326 int weight;
327 unsigned long gro_bitmask;
328 int (*poll)(struct napi_struct *, int);
329#ifdef CONFIG_NETPOLL
330 int poll_owner;
331#endif
332 struct net_device *dev;
333 struct gro_list gro_hash[GRO_HASH_BUCKETS];
334 struct sk_buff *skb;
335 struct list_head rx_list;
336 int rx_count;
337 struct hrtimer timer;
338 struct list_head dev_list;
339 struct hlist_node napi_hash_node;
340 unsigned int napi_id;
341};
342
343enum {
344 NAPI_STATE_SCHED,
345 NAPI_STATE_MISSED,
346 NAPI_STATE_DISABLE,
347 NAPI_STATE_NPSVC,
348 NAPI_STATE_HASHED,
349 NAPI_STATE_NO_BUSY_POLL,
350 NAPI_STATE_IN_BUSY_POLL,
351};
352
353enum {
354 NAPIF_STATE_SCHED = BIT(NAPI_STATE_SCHED),
355 NAPIF_STATE_MISSED = BIT(NAPI_STATE_MISSED),
356 NAPIF_STATE_DISABLE = BIT(NAPI_STATE_DISABLE),
357 NAPIF_STATE_NPSVC = BIT(NAPI_STATE_NPSVC),
358 NAPIF_STATE_HASHED = BIT(NAPI_STATE_HASHED),
359 NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
360 NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
361};
362
363enum gro_result {
364 GRO_MERGED,
365 GRO_MERGED_FREE,
366 GRO_HELD,
367 GRO_NORMAL,
368 GRO_DROP,
369 GRO_CONSUMED,
370};
371typedef enum gro_result gro_result_t;
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414enum rx_handler_result {
415 RX_HANDLER_CONSUMED,
416 RX_HANDLER_ANOTHER,
417 RX_HANDLER_EXACT,
418 RX_HANDLER_PASS,
419};
420typedef enum rx_handler_result rx_handler_result_t;
421typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);
422
423void __napi_schedule(struct napi_struct *n);
424void __napi_schedule_irqoff(struct napi_struct *n);
425
426static inline bool napi_disable_pending(struct napi_struct *n)
427{
428 return test_bit(NAPI_STATE_DISABLE, &n->state);
429}
430
431bool napi_schedule_prep(struct napi_struct *n);
432
433
434
435
436
437
438
439
440static inline void napi_schedule(struct napi_struct *n)
441{
442 if (napi_schedule_prep(n))
443 __napi_schedule(n);
444}
445
446
447
448
449
450
451
452static inline void napi_schedule_irqoff(struct napi_struct *n)
453{
454 if (napi_schedule_prep(n))
455 __napi_schedule_irqoff(n);
456}
457
458
459static inline bool napi_reschedule(struct napi_struct *napi)
460{
461 if (napi_schedule_prep(napi)) {
462 __napi_schedule(napi);
463 return true;
464 }
465 return false;
466}
467
468bool napi_complete_done(struct napi_struct *n, int work_done);
469
470
471
472
473
474
475
476
477static inline bool napi_complete(struct napi_struct *n)
478{
479 return napi_complete_done(n, 0);
480}
481
482
483
484
485
486
487
488
489
490
491
492
493
494bool napi_hash_del(struct napi_struct *napi);
495
496
497
498
499
500
501
502
503void napi_disable(struct napi_struct *n);
504
505
506
507
508
509
510
511
512static inline void napi_enable(struct napi_struct *n)
513{
514 BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
515 smp_mb__before_atomic();
516 clear_bit(NAPI_STATE_SCHED, &n->state);
517 clear_bit(NAPI_STATE_NPSVC, &n->state);
518}
519
520
521
522
523
524
525
526
527
528static inline void napi_synchronize(const struct napi_struct *n)
529{
530 if (IS_ENABLED(CONFIG_SMP))
531 while (test_bit(NAPI_STATE_SCHED, &n->state))
532 msleep(1);
533 else
534 barrier();
535}
536
537
538
539
540
541
542
543
544
545static inline bool napi_if_scheduled_mark_missed(struct napi_struct *n)
546{
547 unsigned long val, new;
548
549 do {
550 val = READ_ONCE(n->state);
551 if (val & NAPIF_STATE_DISABLE)
552 return true;
553
554 if (!(val & NAPIF_STATE_SCHED))
555 return false;
556
557 new = val | NAPIF_STATE_MISSED;
558 } while (cmpxchg(&n->state, val, new) != val);
559
560 return true;
561}
562
563enum netdev_queue_state_t {
564 __QUEUE_STATE_DRV_XOFF,
565 __QUEUE_STATE_STACK_XOFF,
566 __QUEUE_STATE_FROZEN,
567};
568
569#define QUEUE_STATE_DRV_XOFF (1 << __QUEUE_STATE_DRV_XOFF)
570#define QUEUE_STATE_STACK_XOFF (1 << __QUEUE_STATE_STACK_XOFF)
571#define QUEUE_STATE_FROZEN (1 << __QUEUE_STATE_FROZEN)
572
573#define QUEUE_STATE_ANY_XOFF (QUEUE_STATE_DRV_XOFF | QUEUE_STATE_STACK_XOFF)
574#define QUEUE_STATE_ANY_XOFF_OR_FROZEN (QUEUE_STATE_ANY_XOFF | \
575 QUEUE_STATE_FROZEN)
576#define QUEUE_STATE_DRV_XOFF_OR_FROZEN (QUEUE_STATE_DRV_XOFF | \
577 QUEUE_STATE_FROZEN)
578
579
580
581
582
583
584
585
586
587
588
589struct netdev_queue {
590
591
592
593 struct net_device *dev;
594 struct Qdisc __rcu *qdisc;
595 struct Qdisc *qdisc_sleeping;
596#ifdef CONFIG_SYSFS
597 struct kobject kobj;
598#endif
599#if defined(CONFIG_XPS) && defined(CONFIG_NUMA)
600 int numa_node;
601#endif
602 unsigned long tx_maxrate;
603
604
605
606
607 unsigned long trans_timeout;
608
609
610 struct net_device *sb_dev;
611#ifdef CONFIG_XDP_SOCKETS
612 struct xdp_umem *umem;
613#endif
614
615
616
617 spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
618 int xmit_lock_owner;
619
620
621
622 unsigned long trans_start;
623
624 unsigned long state;
625
626#ifdef CONFIG_BQL
627 struct dql dql;
628#endif
629} ____cacheline_aligned_in_smp;
630
631extern int sysctl_fb_tunnels_only_for_init_net;
632extern int sysctl_devconf_inherit_init_net;
633
634static inline bool net_has_fallback_tunnels(const struct net *net)
635{
636 return net == &init_net ||
637 !IS_ENABLED(CONFIG_SYSCTL) ||
638 !sysctl_fb_tunnels_only_for_init_net;
639}
640
641static inline int netdev_queue_numa_node_read(const struct netdev_queue *q)
642{
643#if defined(CONFIG_XPS) && defined(CONFIG_NUMA)
644 return q->numa_node;
645#else
646 return NUMA_NO_NODE;
647#endif
648}
649
650static inline void netdev_queue_numa_node_write(struct netdev_queue *q, int node)
651{
652#if defined(CONFIG_XPS) && defined(CONFIG_NUMA)
653 q->numa_node = node;
654#endif
655}
656
657#ifdef CONFIG_RPS
658
659
660
661
662struct rps_map {
663 unsigned int len;
664 struct rcu_head rcu;
665 u16 cpus[0];
666};
667#define RPS_MAP_SIZE(_num) (sizeof(struct rps_map) + ((_num) * sizeof(u16)))
668
669
670
671
672
673
674struct rps_dev_flow {
675 u16 cpu;
676 u16 filter;
677 unsigned int last_qtail;
678};
679#define RPS_NO_FILTER 0xffff
680
681
682
683
684struct rps_dev_flow_table {
685 unsigned int mask;
686 struct rcu_head rcu;
687 struct rps_dev_flow flows[0];
688};
689#define RPS_DEV_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_dev_flow_table) + \
690 ((_num) * sizeof(struct rps_dev_flow)))
691
692
693
694
695
696
697
698
699
700
701
702struct rps_sock_flow_table {
703 u32 mask;
704
705 u32 ents[0] ____cacheline_aligned_in_smp;
706};
707#define RPS_SOCK_FLOW_TABLE_SIZE(_num) (offsetof(struct rps_sock_flow_table, ents[_num]))
708
709#define RPS_NO_CPU 0xffff
710
711extern u32 rps_cpu_mask;
712extern struct rps_sock_flow_table __rcu *rps_sock_flow_table;
713
714static inline void rps_record_sock_flow(struct rps_sock_flow_table *table,
715 u32 hash)
716{
717 if (table && hash) {
718 unsigned int index = hash & table->mask;
719 u32 val = hash & ~rps_cpu_mask;
720
721
722 val |= raw_smp_processor_id();
723
724 if (table->ents[index] != val)
725 table->ents[index] = val;
726 }
727}
728
729#ifdef CONFIG_RFS_ACCEL
730bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id,
731 u16 filter_id);
732#endif
733#endif
734
735
736struct netdev_rx_queue {
737#ifdef CONFIG_RPS
738 struct rps_map __rcu *rps_map;
739 struct rps_dev_flow_table __rcu *rps_flow_table;
740#endif
741 struct kobject kobj;
742 struct net_device *dev;
743 struct xdp_rxq_info xdp_rxq;
744#ifdef CONFIG_XDP_SOCKETS
745 struct xdp_umem *umem;
746#endif
747} ____cacheline_aligned_in_smp;
748
749
750
751
752struct rx_queue_attribute {
753 struct attribute attr;
754 ssize_t (*show)(struct netdev_rx_queue *queue, char *buf);
755 ssize_t (*store)(struct netdev_rx_queue *queue,
756 const char *buf, size_t len);
757};
758
759#ifdef CONFIG_XPS
760
761
762
763
764struct xps_map {
765 unsigned int len;
766 unsigned int alloc_len;
767 struct rcu_head rcu;
768 u16 queues[0];
769};
770#define XPS_MAP_SIZE(_num) (sizeof(struct xps_map) + ((_num) * sizeof(u16)))
771#define XPS_MIN_MAP_ALLOC ((L1_CACHE_ALIGN(offsetof(struct xps_map, queues[1])) \
772 - sizeof(struct xps_map)) / sizeof(u16))
773
774
775
776
777struct xps_dev_maps {
778 struct rcu_head rcu;
779 struct xps_map __rcu *attr_map[0];
780};
781
782#define XPS_CPU_DEV_MAPS_SIZE(_tcs) (sizeof(struct xps_dev_maps) + \
783 (nr_cpu_ids * (_tcs) * sizeof(struct xps_map *)))
784
785#define XPS_RXQ_DEV_MAPS_SIZE(_tcs, _rxqs) (sizeof(struct xps_dev_maps) +\
786 (_rxqs * (_tcs) * sizeof(struct xps_map *)))
787
788#endif
789
790#define TC_MAX_QUEUE 16
791#define TC_BITMASK 15
792
793struct netdev_tc_txq {
794 u16 count;
795 u16 offset;
796};
797
798#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
799
800
801
802
803struct netdev_fcoe_hbainfo {
804 char manufacturer[64];
805 char serial_number[64];
806 char hardware_version[64];
807 char driver_version[64];
808 char optionrom_version[64];
809 char firmware_version[64];
810 char model[256];
811 char model_description[256];
812};
813#endif
814
815#define MAX_PHYS_ITEM_ID_LEN 32
816
817
818
819
820struct netdev_phys_item_id {
821 unsigned char id[MAX_PHYS_ITEM_ID_LEN];
822 unsigned char id_len;
823};
824
825static inline bool netdev_phys_item_id_same(struct netdev_phys_item_id *a,
826 struct netdev_phys_item_id *b)
827{
828 return a->id_len == b->id_len &&
829 memcmp(a->id, b->id, a->id_len) == 0;
830}
831
832typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
833 struct sk_buff *skb,
834 struct net_device *sb_dev);
835
836enum tc_setup_type {
837 TC_SETUP_QDISC_MQPRIO,
838 TC_SETUP_CLSU32,
839 TC_SETUP_CLSFLOWER,
840 TC_SETUP_CLSMATCHALL,
841 TC_SETUP_CLSBPF,
842 TC_SETUP_BLOCK,
843 TC_SETUP_QDISC_CBS,
844 TC_SETUP_QDISC_RED,
845 TC_SETUP_QDISC_PRIO,
846 TC_SETUP_QDISC_MQ,
847 TC_SETUP_QDISC_ETF,
848 TC_SETUP_ROOT_QDISC,
849 TC_SETUP_QDISC_GRED,
850 TC_SETUP_QDISC_TAPRIO,
851};
852
853
854
855
856enum bpf_netdev_command {
857
858
859
860
861
862
863
864 XDP_SETUP_PROG,
865 XDP_SETUP_PROG_HW,
866 XDP_QUERY_PROG,
867 XDP_QUERY_PROG_HW,
868
869 BPF_OFFLOAD_MAP_ALLOC,
870 BPF_OFFLOAD_MAP_FREE,
871 XDP_SETUP_XSK_UMEM,
872};
873
874struct bpf_prog_offload_ops;
875struct netlink_ext_ack;
876struct xdp_umem;
877
878struct netdev_bpf {
879 enum bpf_netdev_command command;
880 union {
881
882 struct {
883 u32 flags;
884 struct bpf_prog *prog;
885 struct netlink_ext_ack *extack;
886 };
887
888 struct {
889 u32 prog_id;
890
891 u32 prog_flags;
892 };
893
894 struct {
895 struct bpf_offloaded_map *offmap;
896 };
897
898 struct {
899 struct xdp_umem *umem;
900 u16 queue_id;
901 } xsk;
902 };
903};
904
905
906#define XDP_WAKEUP_RX (1 << 0)
907#define XDP_WAKEUP_TX (1 << 1)
908
909#ifdef CONFIG_XFRM_OFFLOAD
910struct xfrmdev_ops {
911 int (*xdo_dev_state_add) (struct xfrm_state *x);
912 void (*xdo_dev_state_delete) (struct xfrm_state *x);
913 void (*xdo_dev_state_free) (struct xfrm_state *x);
914 bool (*xdo_dev_offload_ok) (struct sk_buff *skb,
915 struct xfrm_state *x);
916 void (*xdo_dev_state_advance_esn) (struct xfrm_state *x);
917};
918#endif
919
920struct dev_ifalias {
921 struct rcu_head rcuhead;
922 char ifalias[];
923};
924
925struct devlink;
926struct tlsdev_ops;
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247struct net_device_ops {
1248 int (*ndo_init)(struct net_device *dev);
1249 void (*ndo_uninit)(struct net_device *dev);
1250 int (*ndo_open)(struct net_device *dev);
1251 int (*ndo_stop)(struct net_device *dev);
1252 netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,
1253 struct net_device *dev);
1254 netdev_features_t (*ndo_features_check)(struct sk_buff *skb,
1255 struct net_device *dev,
1256 netdev_features_t features);
1257 u16 (*ndo_select_queue)(struct net_device *dev,
1258 struct sk_buff *skb,
1259 struct net_device *sb_dev);
1260 void (*ndo_change_rx_flags)(struct net_device *dev,
1261 int flags);
1262 void (*ndo_set_rx_mode)(struct net_device *dev);
1263 int (*ndo_set_mac_address)(struct net_device *dev,
1264 void *addr);
1265 int (*ndo_validate_addr)(struct net_device *dev);
1266 int (*ndo_do_ioctl)(struct net_device *dev,
1267 struct ifreq *ifr, int cmd);
1268 int (*ndo_set_config)(struct net_device *dev,
1269 struct ifmap *map);
1270 int (*ndo_change_mtu)(struct net_device *dev,
1271 int new_mtu);
1272 int (*ndo_neigh_setup)(struct net_device *dev,
1273 struct neigh_parms *);
1274 void (*ndo_tx_timeout) (struct net_device *dev);
1275
1276 void (*ndo_get_stats64)(struct net_device *dev,
1277 struct rtnl_link_stats64 *storage);
1278 bool (*ndo_has_offload_stats)(const struct net_device *dev, int attr_id);
1279 int (*ndo_get_offload_stats)(int attr_id,
1280 const struct net_device *dev,
1281 void *attr_data);
1282 struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
1283
1284 int (*ndo_vlan_rx_add_vid)(struct net_device *dev,
1285 __be16 proto, u16 vid);
1286 int (*ndo_vlan_rx_kill_vid)(struct net_device *dev,
1287 __be16 proto, u16 vid);
1288#ifdef CONFIG_NET_POLL_CONTROLLER
1289 void (*ndo_poll_controller)(struct net_device *dev);
1290 int (*ndo_netpoll_setup)(struct net_device *dev,
1291 struct netpoll_info *info);
1292 void (*ndo_netpoll_cleanup)(struct net_device *dev);
1293#endif
1294 int (*ndo_set_vf_mac)(struct net_device *dev,
1295 int queue, u8 *mac);
1296 int (*ndo_set_vf_vlan)(struct net_device *dev,
1297 int queue, u16 vlan,
1298 u8 qos, __be16 proto);
1299 int (*ndo_set_vf_rate)(struct net_device *dev,
1300 int vf, int min_tx_rate,
1301 int max_tx_rate);
1302 int (*ndo_set_vf_spoofchk)(struct net_device *dev,
1303 int vf, bool setting);
1304 int (*ndo_set_vf_trust)(struct net_device *dev,
1305 int vf, bool setting);
1306 int (*ndo_get_vf_config)(struct net_device *dev,
1307 int vf,
1308 struct ifla_vf_info *ivf);
1309 int (*ndo_set_vf_link_state)(struct net_device *dev,
1310 int vf, int link_state);
1311 int (*ndo_get_vf_stats)(struct net_device *dev,
1312 int vf,
1313 struct ifla_vf_stats
1314 *vf_stats);
1315 int (*ndo_set_vf_port)(struct net_device *dev,
1316 int vf,
1317 struct nlattr *port[]);
1318 int (*ndo_get_vf_port)(struct net_device *dev,
1319 int vf, struct sk_buff *skb);
1320 int (*ndo_set_vf_guid)(struct net_device *dev,
1321 int vf, u64 guid,
1322 int guid_type);
1323 int (*ndo_set_vf_rss_query_en)(
1324 struct net_device *dev,
1325 int vf, bool setting);
1326 int (*ndo_setup_tc)(struct net_device *dev,
1327 enum tc_setup_type type,
1328 void *type_data);
1329#if IS_ENABLED(CONFIG_FCOE)
1330 int (*ndo_fcoe_enable)(struct net_device *dev);
1331 int (*ndo_fcoe_disable)(struct net_device *dev);
1332 int (*ndo_fcoe_ddp_setup)(struct net_device *dev,
1333 u16 xid,
1334 struct scatterlist *sgl,
1335 unsigned int sgc);
1336 int (*ndo_fcoe_ddp_done)(struct net_device *dev,
1337 u16 xid);
1338 int (*ndo_fcoe_ddp_target)(struct net_device *dev,
1339 u16 xid,
1340 struct scatterlist *sgl,
1341 unsigned int sgc);
1342 int (*ndo_fcoe_get_hbainfo)(struct net_device *dev,
1343 struct netdev_fcoe_hbainfo *hbainfo);
1344#endif
1345
1346#if IS_ENABLED(CONFIG_LIBFCOE)
1347#define NETDEV_FCOE_WWNN 0
1348#define NETDEV_FCOE_WWPN 1
1349 int (*ndo_fcoe_get_wwn)(struct net_device *dev,
1350 u64 *wwn, int type);
1351#endif
1352
1353#ifdef CONFIG_RFS_ACCEL
1354 int (*ndo_rx_flow_steer)(struct net_device *dev,
1355 const struct sk_buff *skb,
1356 u16 rxq_index,
1357 u32 flow_id);
1358#endif
1359 int (*ndo_add_slave)(struct net_device *dev,
1360 struct net_device *slave_dev,
1361 struct netlink_ext_ack *extack);
1362 int (*ndo_del_slave)(struct net_device *dev,
1363 struct net_device *slave_dev);
1364 netdev_features_t (*ndo_fix_features)(struct net_device *dev,
1365 netdev_features_t features);
1366 int (*ndo_set_features)(struct net_device *dev,
1367 netdev_features_t features);
1368 int (*ndo_neigh_construct)(struct net_device *dev,
1369 struct neighbour *n);
1370 void (*ndo_neigh_destroy)(struct net_device *dev,
1371 struct neighbour *n);
1372
1373 int (*ndo_fdb_add)(struct ndmsg *ndm,
1374 struct nlattr *tb[],
1375 struct net_device *dev,
1376 const unsigned char *addr,
1377 u16 vid,
1378 u16 flags,
1379 struct netlink_ext_ack *extack);
1380 int (*ndo_fdb_del)(struct ndmsg *ndm,
1381 struct nlattr *tb[],
1382 struct net_device *dev,
1383 const unsigned char *addr,
1384 u16 vid);
1385 int (*ndo_fdb_dump)(struct sk_buff *skb,
1386 struct netlink_callback *cb,
1387 struct net_device *dev,
1388 struct net_device *filter_dev,
1389 int *idx);
1390 int (*ndo_fdb_get)(struct sk_buff *skb,
1391 struct nlattr *tb[],
1392 struct net_device *dev,
1393 const unsigned char *addr,
1394 u16 vid, u32 portid, u32 seq,
1395 struct netlink_ext_ack *extack);
1396 int (*ndo_bridge_setlink)(struct net_device *dev,
1397 struct nlmsghdr *nlh,
1398 u16 flags,
1399 struct netlink_ext_ack *extack);
1400 int (*ndo_bridge_getlink)(struct sk_buff *skb,
1401 u32 pid, u32 seq,
1402 struct net_device *dev,
1403 u32 filter_mask,
1404 int nlflags);
1405 int (*ndo_bridge_dellink)(struct net_device *dev,
1406 struct nlmsghdr *nlh,
1407 u16 flags);
1408 int (*ndo_change_carrier)(struct net_device *dev,
1409 bool new_carrier);
1410 int (*ndo_get_phys_port_id)(struct net_device *dev,
1411 struct netdev_phys_item_id *ppid);
1412 int (*ndo_get_port_parent_id)(struct net_device *dev,
1413 struct netdev_phys_item_id *ppid);
1414 int (*ndo_get_phys_port_name)(struct net_device *dev,
1415 char *name, size_t len);
1416 void (*ndo_udp_tunnel_add)(struct net_device *dev,
1417 struct udp_tunnel_info *ti);
1418 void (*ndo_udp_tunnel_del)(struct net_device *dev,
1419 struct udp_tunnel_info *ti);
1420 void* (*ndo_dfwd_add_station)(struct net_device *pdev,
1421 struct net_device *dev);
1422 void (*ndo_dfwd_del_station)(struct net_device *pdev,
1423 void *priv);
1424
1425 int (*ndo_set_tx_maxrate)(struct net_device *dev,
1426 int queue_index,
1427 u32 maxrate);
1428 int (*ndo_get_iflink)(const struct net_device *dev);
1429 int (*ndo_change_proto_down)(struct net_device *dev,
1430 bool proto_down);
1431 int (*ndo_fill_metadata_dst)(struct net_device *dev,
1432 struct sk_buff *skb);
1433 void (*ndo_set_rx_headroom)(struct net_device *dev,
1434 int needed_headroom);
1435 int (*ndo_bpf)(struct net_device *dev,
1436 struct netdev_bpf *bpf);
1437 int (*ndo_xdp_xmit)(struct net_device *dev, int n,
1438 struct xdp_frame **xdp,
1439 u32 flags);
1440 int (*ndo_xsk_wakeup)(struct net_device *dev,
1441 u32 queue_id, u32 flags);
1442 struct devlink_port * (*ndo_get_devlink_port)(struct net_device *dev);
1443};
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491enum netdev_priv_flags {
1492 IFF_802_1Q_VLAN = 1<<0,
1493 IFF_EBRIDGE = 1<<1,
1494 IFF_BONDING = 1<<2,
1495 IFF_ISATAP = 1<<3,
1496 IFF_WAN_HDLC = 1<<4,
1497 IFF_XMIT_DST_RELEASE = 1<<5,
1498 IFF_DONT_BRIDGE = 1<<6,
1499 IFF_DISABLE_NETPOLL = 1<<7,
1500 IFF_MACVLAN_PORT = 1<<8,
1501 IFF_BRIDGE_PORT = 1<<9,
1502 IFF_OVS_DATAPATH = 1<<10,
1503 IFF_TX_SKB_SHARING = 1<<11,
1504 IFF_UNICAST_FLT = 1<<12,
1505 IFF_TEAM_PORT = 1<<13,
1506 IFF_SUPP_NOFCS = 1<<14,
1507 IFF_LIVE_ADDR_CHANGE = 1<<15,
1508 IFF_MACVLAN = 1<<16,
1509 IFF_XMIT_DST_RELEASE_PERM = 1<<17,
1510 IFF_L3MDEV_MASTER = 1<<18,
1511 IFF_NO_QUEUE = 1<<19,
1512 IFF_OPENVSWITCH = 1<<20,
1513 IFF_L3MDEV_SLAVE = 1<<21,
1514 IFF_TEAM = 1<<22,
1515 IFF_RXFH_CONFIGURED = 1<<23,
1516 IFF_PHONY_HEADROOM = 1<<24,
1517 IFF_MACSEC = 1<<25,
1518 IFF_NO_RX_HANDLER = 1<<26,
1519 IFF_FAILOVER = 1<<27,
1520 IFF_FAILOVER_SLAVE = 1<<28,
1521 IFF_L3MDEV_RX_HANDLER = 1<<29,
1522 IFF_LIVE_RENAME_OK = 1<<30,
1523};
1524
1525#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
1526#define IFF_EBRIDGE IFF_EBRIDGE
1527#define IFF_BONDING IFF_BONDING
1528#define IFF_ISATAP IFF_ISATAP
1529#define IFF_WAN_HDLC IFF_WAN_HDLC
1530#define IFF_XMIT_DST_RELEASE IFF_XMIT_DST_RELEASE
1531#define IFF_DONT_BRIDGE IFF_DONT_BRIDGE
1532#define IFF_DISABLE_NETPOLL IFF_DISABLE_NETPOLL
1533#define IFF_MACVLAN_PORT IFF_MACVLAN_PORT
1534#define IFF_BRIDGE_PORT IFF_BRIDGE_PORT
1535#define IFF_OVS_DATAPATH IFF_OVS_DATAPATH
1536#define IFF_TX_SKB_SHARING IFF_TX_SKB_SHARING
1537#define IFF_UNICAST_FLT IFF_UNICAST_FLT
1538#define IFF_TEAM_PORT IFF_TEAM_PORT
1539#define IFF_SUPP_NOFCS IFF_SUPP_NOFCS
1540#define IFF_LIVE_ADDR_CHANGE IFF_LIVE_ADDR_CHANGE
1541#define IFF_MACVLAN IFF_MACVLAN
1542#define IFF_XMIT_DST_RELEASE_PERM IFF_XMIT_DST_RELEASE_PERM
1543#define IFF_L3MDEV_MASTER IFF_L3MDEV_MASTER
1544#define IFF_NO_QUEUE IFF_NO_QUEUE
1545#define IFF_OPENVSWITCH IFF_OPENVSWITCH
1546#define IFF_L3MDEV_SLAVE IFF_L3MDEV_SLAVE
1547#define IFF_TEAM IFF_TEAM
1548#define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED
1549#define IFF_MACSEC IFF_MACSEC
1550#define IFF_NO_RX_HANDLER IFF_NO_RX_HANDLER
1551#define IFF_FAILOVER IFF_FAILOVER
1552#define IFF_FAILOVER_SLAVE IFF_FAILOVER_SLAVE
1553#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
1554#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781struct net_device {
1782 char name[IFNAMSIZ];
1783 struct hlist_node name_hlist;
1784 struct dev_ifalias __rcu *ifalias;
1785
1786
1787
1788
1789 unsigned long mem_end;
1790 unsigned long mem_start;
1791 unsigned long base_addr;
1792 int irq;
1793
1794
1795
1796
1797
1798
1799
1800 unsigned long state;
1801
1802 struct list_head dev_list;
1803 struct list_head napi_list;
1804 struct list_head unreg_list;
1805 struct list_head close_list;
1806 struct list_head ptype_all;
1807 struct list_head ptype_specific;
1808
1809 struct {
1810 struct list_head upper;
1811 struct list_head lower;
1812 } adj_list;
1813
1814 netdev_features_t features;
1815 netdev_features_t hw_features;
1816 netdev_features_t wanted_features;
1817 netdev_features_t vlan_features;
1818 netdev_features_t hw_enc_features;
1819 netdev_features_t mpls_features;
1820 netdev_features_t gso_partial_features;
1821
1822 int ifindex;
1823 int group;
1824
1825 struct net_device_stats stats;
1826
1827 atomic_long_t rx_dropped;
1828 atomic_long_t tx_dropped;
1829 atomic_long_t rx_nohandler;
1830
1831
1832 atomic_t carrier_up_count;
1833 atomic_t carrier_down_count;
1834
1835#ifdef CONFIG_WIRELESS_EXT
1836 const struct iw_handler_def *wireless_handlers;
1837 struct iw_public_data *wireless_data;
1838#endif
1839 const struct net_device_ops *netdev_ops;
1840 const struct ethtool_ops *ethtool_ops;
1841#ifdef CONFIG_NET_L3_MASTER_DEV
1842 const struct l3mdev_ops *l3mdev_ops;
1843#endif
1844#if IS_ENABLED(CONFIG_IPV6)
1845 const struct ndisc_ops *ndisc_ops;
1846#endif
1847
1848#ifdef CONFIG_XFRM_OFFLOAD
1849 const struct xfrmdev_ops *xfrmdev_ops;
1850#endif
1851
1852#if IS_ENABLED(CONFIG_TLS_DEVICE)
1853 const struct tlsdev_ops *tlsdev_ops;
1854#endif
1855
1856 const struct header_ops *header_ops;
1857
1858 unsigned int flags;
1859 unsigned int priv_flags;
1860
1861 unsigned short gflags;
1862 unsigned short padded;
1863
1864 unsigned char operstate;
1865 unsigned char link_mode;
1866
1867 unsigned char if_port;
1868 unsigned char dma;
1869
1870 unsigned int mtu;
1871 unsigned int min_mtu;
1872 unsigned int max_mtu;
1873 unsigned short type;
1874 unsigned short hard_header_len;
1875 unsigned char min_header_len;
1876
1877 unsigned short needed_headroom;
1878 unsigned short needed_tailroom;
1879
1880
1881 unsigned char perm_addr[MAX_ADDR_LEN];
1882 unsigned char addr_assign_type;
1883 unsigned char addr_len;
1884 unsigned char upper_level;
1885 unsigned char lower_level;
1886 unsigned short neigh_priv_len;
1887 unsigned short dev_id;
1888 unsigned short dev_port;
1889 spinlock_t addr_list_lock;
1890 unsigned char name_assign_type;
1891 bool uc_promisc;
1892 struct netdev_hw_addr_list uc;
1893 struct netdev_hw_addr_list mc;
1894 struct netdev_hw_addr_list dev_addrs;
1895
1896#ifdef CONFIG_SYSFS
1897 struct kset *queues_kset;
1898#endif
1899 unsigned int promiscuity;
1900 unsigned int allmulti;
1901
1902
1903
1904
1905#if IS_ENABLED(CONFIG_VLAN_8021Q)
1906 struct vlan_info __rcu *vlan_info;
1907#endif
1908#if IS_ENABLED(CONFIG_NET_DSA)
1909 struct dsa_port *dsa_ptr;
1910#endif
1911#if IS_ENABLED(CONFIG_TIPC)
1912 struct tipc_bearer __rcu *tipc_ptr;
1913#endif
1914#if IS_ENABLED(CONFIG_IRDA) || IS_ENABLED(CONFIG_ATALK)
1915 void *atalk_ptr;
1916#endif
1917 struct in_device __rcu *ip_ptr;
1918#if IS_ENABLED(CONFIG_DECNET)
1919 struct dn_dev __rcu *dn_ptr;
1920#endif
1921 struct inet6_dev __rcu *ip6_ptr;
1922#if IS_ENABLED(CONFIG_AX25)
1923 void *ax25_ptr;
1924#endif
1925 struct wireless_dev *ieee80211_ptr;
1926 struct wpan_dev *ieee802154_ptr;
1927#if IS_ENABLED(CONFIG_MPLS_ROUTING)
1928 struct mpls_dev __rcu *mpls_ptr;
1929#endif
1930
1931
1932
1933
1934
1935 unsigned char *dev_addr;
1936
1937 struct netdev_rx_queue *_rx;
1938 unsigned int num_rx_queues;
1939 unsigned int real_num_rx_queues;
1940
1941 struct bpf_prog __rcu *xdp_prog;
1942 unsigned long gro_flush_timeout;
1943 rx_handler_func_t __rcu *rx_handler;
1944 void __rcu *rx_handler_data;
1945
1946#ifdef CONFIG_NET_CLS_ACT
1947 struct mini_Qdisc __rcu *miniq_ingress;
1948#endif
1949 struct netdev_queue __rcu *ingress_queue;
1950#ifdef CONFIG_NETFILTER_INGRESS
1951 struct nf_hook_entries __rcu *nf_hooks_ingress;
1952#endif
1953
1954 unsigned char broadcast[MAX_ADDR_LEN];
1955#ifdef CONFIG_RFS_ACCEL
1956 struct cpu_rmap *rx_cpu_rmap;
1957#endif
1958 struct hlist_node index_hlist;
1959
1960
1961
1962
1963 struct netdev_queue *_tx ____cacheline_aligned_in_smp;
1964 unsigned int num_tx_queues;
1965 unsigned int real_num_tx_queues;
1966 struct Qdisc *qdisc;
1967#ifdef CONFIG_NET_SCHED
1968 DECLARE_HASHTABLE (qdisc_hash, 4);
1969#endif
1970 unsigned int tx_queue_len;
1971 spinlock_t tx_global_lock;
1972 int watchdog_timeo;
1973
1974#ifdef CONFIG_XPS
1975 struct xps_dev_maps __rcu *xps_cpus_map;
1976 struct xps_dev_maps __rcu *xps_rxqs_map;
1977#endif
1978#ifdef CONFIG_NET_CLS_ACT
1979 struct mini_Qdisc __rcu *miniq_egress;
1980#endif
1981
1982
1983 struct timer_list watchdog_timer;
1984
1985 int __percpu *pcpu_refcnt;
1986 struct list_head todo_list;
1987
1988 struct list_head link_watch_list;
1989
1990 enum { NETREG_UNINITIALIZED=0,
1991 NETREG_REGISTERED,
1992 NETREG_UNREGISTERING,
1993 NETREG_UNREGISTERED,
1994 NETREG_RELEASED,
1995 NETREG_DUMMY,
1996 } reg_state:8;
1997
1998 bool dismantle;
1999
2000 enum {
2001 RTNL_LINK_INITIALIZED,
2002 RTNL_LINK_INITIALIZING,
2003 } rtnl_link_state:16;
2004
2005 bool needs_free_netdev;
2006 void (*priv_destructor)(struct net_device *dev);
2007
2008#ifdef CONFIG_NETPOLL
2009 struct netpoll_info __rcu *npinfo;
2010#endif
2011
2012 possible_net_t nd_net;
2013
2014
2015 union {
2016 void *ml_priv;
2017 struct pcpu_lstats __percpu *lstats;
2018 struct pcpu_sw_netstats __percpu *tstats;
2019 struct pcpu_dstats __percpu *dstats;
2020 };
2021
2022#if IS_ENABLED(CONFIG_GARP)
2023 struct garp_port __rcu *garp_port;
2024#endif
2025#if IS_ENABLED(CONFIG_MRP)
2026 struct mrp_port __rcu *mrp_port;
2027#endif
2028
2029 struct device dev;
2030 const struct attribute_group *sysfs_groups[4];
2031 const struct attribute_group *sysfs_rx_queue_group;
2032
2033 const struct rtnl_link_ops *rtnl_link_ops;
2034
2035
2036#define GSO_MAX_SIZE 65536
2037 unsigned int gso_max_size;
2038#define GSO_MAX_SEGS 65535
2039 u16 gso_max_segs;
2040
2041#ifdef CONFIG_DCB
2042 const struct dcbnl_rtnl_ops *dcbnl_ops;
2043#endif
2044 s16 num_tc;
2045 struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE];
2046 u8 prio_tc_map[TC_BITMASK + 1];
2047
2048#if IS_ENABLED(CONFIG_FCOE)
2049 unsigned int fcoe_ddp_xid;
2050#endif
2051#if IS_ENABLED(CONFIG_CGROUP_NET_PRIO)
2052 struct netprio_map __rcu *priomap;
2053#endif
2054 struct phy_device *phydev;
2055 struct sfp_bus *sfp_bus;
2056 struct lock_class_key qdisc_tx_busylock_key;
2057 struct lock_class_key qdisc_running_key;
2058 struct lock_class_key qdisc_xmit_lock_key;
2059 struct lock_class_key addr_list_lock_key;
2060 bool proto_down;
2061 unsigned wol_enabled:1;
2062};
2063#define to_net_dev(d) container_of(d, struct net_device, dev)
2064
2065static inline bool netif_elide_gro(const struct net_device *dev)
2066{
2067 if (!(dev->features & NETIF_F_GRO) || dev->xdp_prog)
2068 return true;
2069 return false;
2070}
2071
2072#define NETDEV_ALIGN 32
2073
2074static inline
2075int netdev_get_prio_tc_map(const struct net_device *dev, u32 prio)
2076{
2077 return dev->prio_tc_map[prio & TC_BITMASK];
2078}
2079
2080static inline
2081int netdev_set_prio_tc_map(struct net_device *dev, u8 prio, u8 tc)
2082{
2083 if (tc >= dev->num_tc)
2084 return -EINVAL;
2085
2086 dev->prio_tc_map[prio & TC_BITMASK] = tc & TC_BITMASK;
2087 return 0;
2088}
2089
2090int netdev_txq_to_tc(struct net_device *dev, unsigned int txq);
2091void netdev_reset_tc(struct net_device *dev);
2092int netdev_set_tc_queue(struct net_device *dev, u8 tc, u16 count, u16 offset);
2093int netdev_set_num_tc(struct net_device *dev, u8 num_tc);
2094
2095static inline
2096int netdev_get_num_tc(struct net_device *dev)
2097{
2098 return dev->num_tc;
2099}
2100
2101void netdev_unbind_sb_channel(struct net_device *dev,
2102 struct net_device *sb_dev);
2103int netdev_bind_sb_channel_queue(struct net_device *dev,
2104 struct net_device *sb_dev,
2105 u8 tc, u16 count, u16 offset);
2106int netdev_set_sb_channel(struct net_device *dev, u16 channel);
2107static inline int netdev_get_sb_channel(struct net_device *dev)
2108{
2109 return max_t(int, -dev->num_tc, 0);
2110}
2111
2112static inline
2113struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,
2114 unsigned int index)
2115{
2116 return &dev->_tx[index];
2117}
2118
2119static inline struct netdev_queue *skb_get_tx_queue(const struct net_device *dev,
2120 const struct sk_buff *skb)
2121{
2122 return netdev_get_tx_queue(dev, skb_get_queue_mapping(skb));
2123}
2124
2125static inline void netdev_for_each_tx_queue(struct net_device *dev,
2126 void (*f)(struct net_device *,
2127 struct netdev_queue *,
2128 void *),
2129 void *arg)
2130{
2131 unsigned int i;
2132
2133 for (i = 0; i < dev->num_tx_queues; i++)
2134 f(dev, &dev->_tx[i], arg);
2135}
2136
2137u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
2138 struct net_device *sb_dev);
2139struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
2140 struct sk_buff *skb,
2141 struct net_device *sb_dev);
2142
2143
2144
2145
2146static inline unsigned netdev_get_fwd_headroom(struct net_device *dev)
2147{
2148 return dev->priv_flags & IFF_PHONY_HEADROOM ? 0 : dev->needed_headroom;
2149}
2150
2151static inline void netdev_set_rx_headroom(struct net_device *dev, int new_hr)
2152{
2153 if (dev->netdev_ops->ndo_set_rx_headroom)
2154 dev->netdev_ops->ndo_set_rx_headroom(dev, new_hr);
2155}
2156
2157
2158static inline void netdev_reset_rx_headroom(struct net_device *dev)
2159{
2160 netdev_set_rx_headroom(dev, -1);
2161}
2162
2163
2164
2165
2166static inline
2167struct net *dev_net(const struct net_device *dev)
2168{
2169 return read_pnet(&dev->nd_net);
2170}
2171
2172static inline
2173void dev_net_set(struct net_device *dev, struct net *net)
2174{
2175 write_pnet(&dev->nd_net, net);
2176}
2177
2178
2179
2180
2181
2182
2183
2184static inline void *netdev_priv(const struct net_device *dev)
2185{
2186 return (char *)dev + ALIGN(sizeof(struct net_device), NETDEV_ALIGN);
2187}
2188
2189
2190
2191
2192#define SET_NETDEV_DEV(net, pdev) ((net)->dev.parent = (pdev))
2193
2194
2195
2196
2197
2198#define SET_NETDEV_DEVTYPE(net, devtype) ((net)->dev.type = (devtype))
2199
2200
2201
2202
2203#define NAPI_POLL_WEIGHT 64
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
2216 int (*poll)(struct napi_struct *, int), int weight);
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229static inline void netif_tx_napi_add(struct net_device *dev,
2230 struct napi_struct *napi,
2231 int (*poll)(struct napi_struct *, int),
2232 int weight)
2233{
2234 set_bit(NAPI_STATE_NO_BUSY_POLL, &napi->state);
2235 netif_napi_add(dev, napi, poll, weight);
2236}
2237
2238
2239
2240
2241
2242
2243
2244void netif_napi_del(struct napi_struct *napi);
2245
2246struct napi_gro_cb {
2247
2248 void *frag0;
2249
2250
2251 unsigned int frag0_len;
2252
2253
2254 int data_offset;
2255
2256
2257 u16 flush;
2258
2259
2260 u16 flush_id;
2261
2262
2263 u16 count;
2264
2265
2266 u16 gro_remcsum_start;
2267
2268
2269 unsigned long age;
2270
2271
2272 u16 proto;
2273
2274
2275 u8 same_flow:1;
2276
2277
2278 u8 encap_mark:1;
2279
2280
2281 u8 csum_valid:1;
2282
2283
2284 u8 csum_cnt:3;
2285
2286
2287 u8 free:2;
2288#define NAPI_GRO_FREE 1
2289#define NAPI_GRO_FREE_STOLEN_HEAD 2
2290
2291
2292 u8 is_ipv6:1;
2293
2294
2295 u8 is_fou:1;
2296
2297
2298 u8 is_atomic:1;
2299
2300
2301 u8 recursion_counter:4;
2302
2303
2304
2305
2306 __wsum csum;
2307
2308
2309 struct sk_buff *last;
2310};
2311
2312#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb)
2313
2314#define GRO_RECURSION_LIMIT 15
2315static inline int gro_recursion_inc_test(struct sk_buff *skb)
2316{
2317 return ++NAPI_GRO_CB(skb)->recursion_counter == GRO_RECURSION_LIMIT;
2318}
2319
2320typedef struct sk_buff *(*gro_receive_t)(struct list_head *, struct sk_buff *);
2321static inline struct sk_buff *call_gro_receive(gro_receive_t cb,
2322 struct list_head *head,
2323 struct sk_buff *skb)
2324{
2325 if (unlikely(gro_recursion_inc_test(skb))) {
2326 NAPI_GRO_CB(skb)->flush |= 1;
2327 return NULL;
2328 }
2329
2330 return cb(head, skb);
2331}
2332
2333typedef struct sk_buff *(*gro_receive_sk_t)(struct sock *, struct list_head *,
2334 struct sk_buff *);
2335static inline struct sk_buff *call_gro_receive_sk(gro_receive_sk_t cb,
2336 struct sock *sk,
2337 struct list_head *head,
2338 struct sk_buff *skb)
2339{
2340 if (unlikely(gro_recursion_inc_test(skb))) {
2341 NAPI_GRO_CB(skb)->flush |= 1;
2342 return NULL;
2343 }
2344
2345 return cb(sk, head, skb);
2346}
2347
2348struct packet_type {
2349 __be16 type;
2350 bool ignore_outgoing;
2351 struct net_device *dev;
2352 int (*func) (struct sk_buff *,
2353 struct net_device *,
2354 struct packet_type *,
2355 struct net_device *);
2356 void (*list_func) (struct list_head *,
2357 struct packet_type *,
2358 struct net_device *);
2359 bool (*id_match)(struct packet_type *ptype,
2360 struct sock *sk);
2361 void *af_packet_priv;
2362 struct list_head list;
2363};
2364
2365struct offload_callbacks {
2366 struct sk_buff *(*gso_segment)(struct sk_buff *skb,
2367 netdev_features_t features);
2368 struct sk_buff *(*gro_receive)(struct list_head *head,
2369 struct sk_buff *skb);
2370 int (*gro_complete)(struct sk_buff *skb, int nhoff);
2371};
2372
2373struct packet_offload {
2374 __be16 type;
2375 u16 priority;
2376 struct offload_callbacks callbacks;
2377 struct list_head list;
2378};
2379
2380
2381struct pcpu_sw_netstats {
2382 u64 rx_packets;
2383 u64 rx_bytes;
2384 u64 tx_packets;
2385 u64 tx_bytes;
2386 struct u64_stats_sync syncp;
2387} __aligned(4 * sizeof(u64));
2388
2389struct pcpu_lstats {
2390 u64 packets;
2391 u64 bytes;
2392 struct u64_stats_sync syncp;
2393} __aligned(2 * sizeof(u64));
2394
2395#define __netdev_alloc_pcpu_stats(type, gfp) \
2396({ \
2397 typeof(type) __percpu *pcpu_stats = alloc_percpu_gfp(type, gfp);\
2398 if (pcpu_stats) { \
2399 int __cpu; \
2400 for_each_possible_cpu(__cpu) { \
2401 typeof(type) *stat; \
2402 stat = per_cpu_ptr(pcpu_stats, __cpu); \
2403 u64_stats_init(&stat->syncp); \
2404 } \
2405 } \
2406 pcpu_stats; \
2407})
2408
2409#define netdev_alloc_pcpu_stats(type) \
2410 __netdev_alloc_pcpu_stats(type, GFP_KERNEL)
2411
2412enum netdev_lag_tx_type {
2413 NETDEV_LAG_TX_TYPE_UNKNOWN,
2414 NETDEV_LAG_TX_TYPE_RANDOM,
2415 NETDEV_LAG_TX_TYPE_BROADCAST,
2416 NETDEV_LAG_TX_TYPE_ROUNDROBIN,
2417 NETDEV_LAG_TX_TYPE_ACTIVEBACKUP,
2418 NETDEV_LAG_TX_TYPE_HASH,
2419};
2420
2421enum netdev_lag_hash {
2422 NETDEV_LAG_HASH_NONE,
2423 NETDEV_LAG_HASH_L2,
2424 NETDEV_LAG_HASH_L34,
2425 NETDEV_LAG_HASH_L23,
2426 NETDEV_LAG_HASH_E23,
2427 NETDEV_LAG_HASH_E34,
2428 NETDEV_LAG_HASH_UNKNOWN,
2429};
2430
2431struct netdev_lag_upper_info {
2432 enum netdev_lag_tx_type tx_type;
2433 enum netdev_lag_hash hash_type;
2434};
2435
2436struct netdev_lag_lower_state_info {
2437 u8 link_up : 1,
2438 tx_enabled : 1;
2439};
2440
2441#include <linux/notifier.h>
2442
2443
2444
2445
2446
2447enum netdev_cmd {
2448 NETDEV_UP = 1,
2449 NETDEV_DOWN,
2450 NETDEV_REBOOT,
2451
2452
2453
2454 NETDEV_CHANGE,
2455 NETDEV_REGISTER,
2456 NETDEV_UNREGISTER,
2457 NETDEV_CHANGEMTU,
2458 NETDEV_CHANGEADDR,
2459 NETDEV_PRE_CHANGEADDR,
2460 NETDEV_GOING_DOWN,
2461 NETDEV_CHANGENAME,
2462 NETDEV_FEAT_CHANGE,
2463 NETDEV_BONDING_FAILOVER,
2464 NETDEV_PRE_UP,
2465 NETDEV_PRE_TYPE_CHANGE,
2466 NETDEV_POST_TYPE_CHANGE,
2467 NETDEV_POST_INIT,
2468 NETDEV_RELEASE,
2469 NETDEV_NOTIFY_PEERS,
2470 NETDEV_JOIN,
2471 NETDEV_CHANGEUPPER,
2472 NETDEV_RESEND_IGMP,
2473 NETDEV_PRECHANGEMTU,
2474 NETDEV_CHANGEINFODATA,
2475 NETDEV_BONDING_INFO,
2476 NETDEV_PRECHANGEUPPER,
2477 NETDEV_CHANGELOWERSTATE,
2478 NETDEV_UDP_TUNNEL_PUSH_INFO,
2479 NETDEV_UDP_TUNNEL_DROP_INFO,
2480 NETDEV_CHANGE_TX_QUEUE_LEN,
2481 NETDEV_CVLAN_FILTER_PUSH_INFO,
2482 NETDEV_CVLAN_FILTER_DROP_INFO,
2483 NETDEV_SVLAN_FILTER_PUSH_INFO,
2484 NETDEV_SVLAN_FILTER_DROP_INFO,
2485};
2486const char *netdev_cmd_to_name(enum netdev_cmd cmd);
2487
2488int register_netdevice_notifier(struct notifier_block *nb);
2489int unregister_netdevice_notifier(struct notifier_block *nb);
2490
2491struct netdev_notifier_info {
2492 struct net_device *dev;
2493 struct netlink_ext_ack *extack;
2494};
2495
2496struct netdev_notifier_info_ext {
2497 struct netdev_notifier_info info;
2498 union {
2499 u32 mtu;
2500 } ext;
2501};
2502
2503struct netdev_notifier_change_info {
2504 struct netdev_notifier_info info;
2505 unsigned int flags_changed;
2506};
2507
2508struct netdev_notifier_changeupper_info {
2509 struct netdev_notifier_info info;
2510 struct net_device *upper_dev;
2511 bool master;
2512 bool linking;
2513 void *upper_info;
2514};
2515
2516struct netdev_notifier_changelowerstate_info {
2517 struct netdev_notifier_info info;
2518 void *lower_state_info;
2519};
2520
2521struct netdev_notifier_pre_changeaddr_info {
2522 struct netdev_notifier_info info;
2523 const unsigned char *dev_addr;
2524};
2525
2526static inline void netdev_notifier_info_init(struct netdev_notifier_info *info,
2527 struct net_device *dev)
2528{
2529 info->dev = dev;
2530 info->extack = NULL;
2531}
2532
2533static inline struct net_device *
2534netdev_notifier_info_to_dev(const struct netdev_notifier_info *info)
2535{
2536 return info->dev;
2537}
2538
2539static inline struct netlink_ext_ack *
2540netdev_notifier_info_to_extack(const struct netdev_notifier_info *info)
2541{
2542 return info->extack;
2543}
2544
2545int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
2546
2547
2548extern rwlock_t dev_base_lock;
2549
2550#define for_each_netdev(net, d) \
2551 list_for_each_entry(d, &(net)->dev_base_head, dev_list)
2552#define for_each_netdev_reverse(net, d) \
2553 list_for_each_entry_reverse(d, &(net)->dev_base_head, dev_list)
2554#define for_each_netdev_rcu(net, d) \
2555 list_for_each_entry_rcu(d, &(net)->dev_base_head, dev_list)
2556#define for_each_netdev_safe(net, d, n) \
2557 list_for_each_entry_safe(d, n, &(net)->dev_base_head, dev_list)
2558#define for_each_netdev_continue(net, d) \
2559 list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
2560#define for_each_netdev_continue_rcu(net, d) \
2561 list_for_each_entry_continue_rcu(d, &(net)->dev_base_head, dev_list)
2562#define for_each_netdev_in_bond_rcu(bond, slave) \
2563 for_each_netdev_rcu(&init_net, slave) \
2564 if (netdev_master_upper_dev_get_rcu(slave) == (bond))
2565#define net_device_entry(lh) list_entry(lh, struct net_device, dev_list)
2566
2567static inline struct net_device *next_net_device(struct net_device *dev)
2568{
2569 struct list_head *lh;
2570 struct net *net;
2571
2572 net = dev_net(dev);
2573 lh = dev->dev_list.next;
2574 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
2575}
2576
2577static inline struct net_device *next_net_device_rcu(struct net_device *dev)
2578{
2579 struct list_head *lh;
2580 struct net *net;
2581
2582 net = dev_net(dev);
2583 lh = rcu_dereference(list_next_rcu(&dev->dev_list));
2584 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
2585}
2586
2587static inline struct net_device *first_net_device(struct net *net)
2588{
2589 return list_empty(&net->dev_base_head) ? NULL :
2590 net_device_entry(net->dev_base_head.next);
2591}
2592
2593static inline struct net_device *first_net_device_rcu(struct net *net)
2594{
2595 struct list_head *lh = rcu_dereference(list_next_rcu(&net->dev_base_head));
2596
2597 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
2598}
2599
2600int netdev_boot_setup_check(struct net_device *dev);
2601unsigned long netdev_boot_base(const char *prefix, int unit);
2602struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
2603 const char *hwaddr);
2604struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
2605struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
2606void dev_add_pack(struct packet_type *pt);
2607void dev_remove_pack(struct packet_type *pt);
2608void __dev_remove_pack(struct packet_type *pt);
2609void dev_add_offload(struct packet_offload *po);
2610void dev_remove_offload(struct packet_offload *po);
2611
2612int dev_get_iflink(const struct net_device *dev);
2613int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb);
2614struct net_device *__dev_get_by_flags(struct net *net, unsigned short flags,
2615 unsigned short mask);
2616struct net_device *dev_get_by_name(struct net *net, const char *name);
2617struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
2618struct net_device *__dev_get_by_name(struct net *net, const char *name);
2619int dev_alloc_name(struct net_device *dev, const char *name);
2620int dev_open(struct net_device *dev, struct netlink_ext_ack *extack);
2621void dev_close(struct net_device *dev);
2622void dev_close_many(struct list_head *head, bool unlink);
2623void dev_disable_lro(struct net_device *dev);
2624int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb);
2625u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
2626 struct net_device *sb_dev);
2627u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
2628 struct net_device *sb_dev);
2629int dev_queue_xmit(struct sk_buff *skb);
2630int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev);
2631int dev_direct_xmit(struct sk_buff *skb, u16 queue_id);
2632int register_netdevice(struct net_device *dev);
2633void unregister_netdevice_queue(struct net_device *dev, struct list_head *head);
2634void unregister_netdevice_many(struct list_head *head);
2635static inline void unregister_netdevice(struct net_device *dev)
2636{
2637 unregister_netdevice_queue(dev, NULL);
2638}
2639
2640int netdev_refcnt_read(const struct net_device *dev);
2641void free_netdev(struct net_device *dev);
2642void netdev_freemem(struct net_device *dev);
2643void synchronize_net(void);
2644int init_dummy_netdev(struct net_device *dev);
2645
2646struct net_device *dev_get_by_index(struct net *net, int ifindex);
2647struct net_device *__dev_get_by_index(struct net *net, int ifindex);
2648struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
2649struct net_device *dev_get_by_napi_id(unsigned int napi_id);
2650int netdev_get_name(struct net *net, char *name, int ifindex);
2651int dev_restart(struct net_device *dev);
2652int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb);
2653
2654static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
2655{
2656 return NAPI_GRO_CB(skb)->data_offset;
2657}
2658
2659static inline unsigned int skb_gro_len(const struct sk_buff *skb)
2660{
2661 return skb->len - NAPI_GRO_CB(skb)->data_offset;
2662}
2663
2664static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len)
2665{
2666 NAPI_GRO_CB(skb)->data_offset += len;
2667}
2668
2669static inline void *skb_gro_header_fast(struct sk_buff *skb,
2670 unsigned int offset)
2671{
2672 return NAPI_GRO_CB(skb)->frag0 + offset;
2673}
2674
2675static inline int skb_gro_header_hard(struct sk_buff *skb, unsigned int hlen)
2676{
2677 return NAPI_GRO_CB(skb)->frag0_len < hlen;
2678}
2679
2680static inline void skb_gro_frag0_invalidate(struct sk_buff *skb)
2681{
2682 NAPI_GRO_CB(skb)->frag0 = NULL;
2683 NAPI_GRO_CB(skb)->frag0_len = 0;
2684}
2685
2686static inline void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen,
2687 unsigned int offset)
2688{
2689 if (!pskb_may_pull(skb, hlen))
2690 return NULL;
2691
2692 skb_gro_frag0_invalidate(skb);
2693 return skb->data + offset;
2694}
2695
2696static inline void *skb_gro_network_header(struct sk_buff *skb)
2697{
2698 return (NAPI_GRO_CB(skb)->frag0 ?: skb->data) +
2699 skb_network_offset(skb);
2700}
2701
2702static inline void skb_gro_postpull_rcsum(struct sk_buff *skb,
2703 const void *start, unsigned int len)
2704{
2705 if (NAPI_GRO_CB(skb)->csum_valid)
2706 NAPI_GRO_CB(skb)->csum = csum_sub(NAPI_GRO_CB(skb)->csum,
2707 csum_partial(start, len, 0));
2708}
2709
2710
2711
2712
2713
2714
2715__sum16 __skb_gro_checksum_complete(struct sk_buff *skb);
2716
2717static inline bool skb_at_gro_remcsum_start(struct sk_buff *skb)
2718{
2719 return (NAPI_GRO_CB(skb)->gro_remcsum_start == skb_gro_offset(skb));
2720}
2721
2722static inline bool __skb_gro_checksum_validate_needed(struct sk_buff *skb,
2723 bool zero_okay,
2724 __sum16 check)
2725{
2726 return ((skb->ip_summed != CHECKSUM_PARTIAL ||
2727 skb_checksum_start_offset(skb) <
2728 skb_gro_offset(skb)) &&
2729 !skb_at_gro_remcsum_start(skb) &&
2730 NAPI_GRO_CB(skb)->csum_cnt == 0 &&
2731 (!zero_okay || check));
2732}
2733
2734static inline __sum16 __skb_gro_checksum_validate_complete(struct sk_buff *skb,
2735 __wsum psum)
2736{
2737 if (NAPI_GRO_CB(skb)->csum_valid &&
2738 !csum_fold(csum_add(psum, NAPI_GRO_CB(skb)->csum)))
2739 return 0;
2740
2741 NAPI_GRO_CB(skb)->csum = psum;
2742
2743 return __skb_gro_checksum_complete(skb);
2744}
2745
2746static inline void skb_gro_incr_csum_unnecessary(struct sk_buff *skb)
2747{
2748 if (NAPI_GRO_CB(skb)->csum_cnt > 0) {
2749
2750 NAPI_GRO_CB(skb)->csum_cnt--;
2751 } else {
2752
2753
2754
2755
2756 __skb_incr_checksum_unnecessary(skb);
2757 }
2758}
2759
2760#define __skb_gro_checksum_validate(skb, proto, zero_okay, check, \
2761 compute_pseudo) \
2762({ \
2763 __sum16 __ret = 0; \
2764 if (__skb_gro_checksum_validate_needed(skb, zero_okay, check)) \
2765 __ret = __skb_gro_checksum_validate_complete(skb, \
2766 compute_pseudo(skb, proto)); \
2767 if (!__ret) \
2768 skb_gro_incr_csum_unnecessary(skb); \
2769 __ret; \
2770})
2771
2772#define skb_gro_checksum_validate(skb, proto, compute_pseudo) \
2773 __skb_gro_checksum_validate(skb, proto, false, 0, compute_pseudo)
2774
2775#define skb_gro_checksum_validate_zero_check(skb, proto, check, \
2776 compute_pseudo) \
2777 __skb_gro_checksum_validate(skb, proto, true, check, compute_pseudo)
2778
2779#define skb_gro_checksum_simple_validate(skb) \
2780 __skb_gro_checksum_validate(skb, 0, false, 0, null_compute_pseudo)
2781
2782static inline bool __skb_gro_checksum_convert_check(struct sk_buff *skb)
2783{
2784 return (NAPI_GRO_CB(skb)->csum_cnt == 0 &&
2785 !NAPI_GRO_CB(skb)->csum_valid);
2786}
2787
2788static inline void __skb_gro_checksum_convert(struct sk_buff *skb,
2789 __sum16 check, __wsum pseudo)
2790{
2791 NAPI_GRO_CB(skb)->csum = ~pseudo;
2792 NAPI_GRO_CB(skb)->csum_valid = 1;
2793}
2794
2795#define skb_gro_checksum_try_convert(skb, proto, check, compute_pseudo) \
2796do { \
2797 if (__skb_gro_checksum_convert_check(skb)) \
2798 __skb_gro_checksum_convert(skb, check, \
2799 compute_pseudo(skb, proto)); \
2800} while (0)
2801
2802struct gro_remcsum {
2803 int offset;
2804 __wsum delta;
2805};
2806
2807static inline void skb_gro_remcsum_init(struct gro_remcsum *grc)
2808{
2809 grc->offset = 0;
2810 grc->delta = 0;
2811}
2812
2813static inline void *skb_gro_remcsum_process(struct sk_buff *skb, void *ptr,
2814 unsigned int off, size_t hdrlen,
2815 int start, int offset,
2816 struct gro_remcsum *grc,
2817 bool nopartial)
2818{
2819 __wsum delta;
2820 size_t plen = hdrlen + max_t(size_t, offset + sizeof(u16), start);
2821
2822 BUG_ON(!NAPI_GRO_CB(skb)->csum_valid);
2823
2824 if (!nopartial) {
2825 NAPI_GRO_CB(skb)->gro_remcsum_start = off + hdrlen + start;
2826 return ptr;
2827 }
2828
2829 ptr = skb_gro_header_fast(skb, off);
2830 if (skb_gro_header_hard(skb, off + plen)) {
2831 ptr = skb_gro_header_slow(skb, off + plen, off);
2832 if (!ptr)
2833 return NULL;
2834 }
2835
2836 delta = remcsum_adjust(ptr + hdrlen, NAPI_GRO_CB(skb)->csum,
2837 start, offset);
2838
2839
2840 NAPI_GRO_CB(skb)->csum = csum_add(NAPI_GRO_CB(skb)->csum, delta);
2841
2842 grc->offset = off + hdrlen + offset;
2843 grc->delta = delta;
2844
2845 return ptr;
2846}
2847
2848static inline void skb_gro_remcsum_cleanup(struct sk_buff *skb,
2849 struct gro_remcsum *grc)
2850{
2851 void *ptr;
2852 size_t plen = grc->offset + sizeof(u16);
2853
2854 if (!grc->delta)
2855 return;
2856
2857 ptr = skb_gro_header_fast(skb, grc->offset);
2858 if (skb_gro_header_hard(skb, grc->offset + sizeof(u16))) {
2859 ptr = skb_gro_header_slow(skb, plen, grc->offset);
2860 if (!ptr)
2861 return;
2862 }
2863
2864 remcsum_unadjust((__sum16 *)ptr, grc->delta);
2865}
2866
2867#ifdef CONFIG_XFRM_OFFLOAD
2868static inline void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff *pp, int flush)
2869{
2870 if (PTR_ERR(pp) != -EINPROGRESS)
2871 NAPI_GRO_CB(skb)->flush |= flush;
2872}
2873static inline void skb_gro_flush_final_remcsum(struct sk_buff *skb,
2874 struct sk_buff *pp,
2875 int flush,
2876 struct gro_remcsum *grc)
2877{
2878 if (PTR_ERR(pp) != -EINPROGRESS) {
2879 NAPI_GRO_CB(skb)->flush |= flush;
2880 skb_gro_remcsum_cleanup(skb, grc);
2881 skb->remcsum_offload = 0;
2882 }
2883}
2884#else
2885static inline void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff *pp, int flush)
2886{
2887 NAPI_GRO_CB(skb)->flush |= flush;
2888}
2889static inline void skb_gro_flush_final_remcsum(struct sk_buff *skb,
2890 struct sk_buff *pp,
2891 int flush,
2892 struct gro_remcsum *grc)
2893{
2894 NAPI_GRO_CB(skb)->flush |= flush;
2895 skb_gro_remcsum_cleanup(skb, grc);
2896 skb->remcsum_offload = 0;
2897}
2898#endif
2899
2900static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
2901 unsigned short type,
2902 const void *daddr, const void *saddr,
2903 unsigned int len)
2904{
2905 if (!dev->header_ops || !dev->header_ops->create)
2906 return 0;
2907
2908 return dev->header_ops->create(skb, dev, type, daddr, saddr, len);
2909}
2910
2911static inline int dev_parse_header(const struct sk_buff *skb,
2912 unsigned char *haddr)
2913{
2914 const struct net_device *dev = skb->dev;
2915
2916 if (!dev->header_ops || !dev->header_ops->parse)
2917 return 0;
2918 return dev->header_ops->parse(skb, haddr);
2919}
2920
2921static inline __be16 dev_parse_header_protocol(const struct sk_buff *skb)
2922{
2923 const struct net_device *dev = skb->dev;
2924
2925 if (!dev->header_ops || !dev->header_ops->parse_protocol)
2926 return 0;
2927 return dev->header_ops->parse_protocol(skb);
2928}
2929
2930
2931static inline bool dev_validate_header(const struct net_device *dev,
2932 char *ll_header, int len)
2933{
2934 if (likely(len >= dev->hard_header_len))
2935 return true;
2936 if (len < dev->min_header_len)
2937 return false;
2938
2939 if (capable(CAP_SYS_RAWIO)) {
2940 memset(ll_header + len, 0, dev->hard_header_len - len);
2941 return true;
2942 }
2943
2944 if (dev->header_ops && dev->header_ops->validate)
2945 return dev->header_ops->validate(ll_header, len);
2946
2947 return false;
2948}
2949
2950typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr,
2951 int len, int size);
2952int register_gifconf(unsigned int family, gifconf_func_t *gifconf);
2953static inline int unregister_gifconf(unsigned int family)
2954{
2955 return register_gifconf(family, NULL);
2956}
2957
2958#ifdef CONFIG_NET_FLOW_LIMIT
2959#define FLOW_LIMIT_HISTORY (1 << 7)
2960struct sd_flow_limit {
2961 u64 count;
2962 unsigned int num_buckets;
2963 unsigned int history_head;
2964 u16 history[FLOW_LIMIT_HISTORY];
2965 u8 buckets[];
2966};
2967
2968extern int netdev_flow_limit_table_len;
2969#endif
2970
2971
2972
2973
2974struct softnet_data {
2975 struct list_head poll_list;
2976 struct sk_buff_head process_queue;
2977
2978
2979 unsigned int processed;
2980 unsigned int time_squeeze;
2981 unsigned int received_rps;
2982#ifdef CONFIG_RPS
2983 struct softnet_data *rps_ipi_list;
2984#endif
2985#ifdef CONFIG_NET_FLOW_LIMIT
2986 struct sd_flow_limit __rcu *flow_limit;
2987#endif
2988 struct Qdisc *output_queue;
2989 struct Qdisc **output_queue_tailp;
2990 struct sk_buff *completion_queue;
2991#ifdef CONFIG_XFRM_OFFLOAD
2992 struct sk_buff_head xfrm_backlog;
2993#endif
2994
2995 struct {
2996 u16 recursion;
2997 u8 more;
2998 } xmit;
2999#ifdef CONFIG_RPS
3000
3001
3002
3003 unsigned int input_queue_head ____cacheline_aligned_in_smp;
3004
3005
3006 call_single_data_t csd ____cacheline_aligned_in_smp;
3007 struct softnet_data *rps_ipi_next;
3008 unsigned int cpu;
3009 unsigned int input_queue_tail;
3010#endif
3011 unsigned int dropped;
3012 struct sk_buff_head input_pkt_queue;
3013 struct napi_struct backlog;
3014
3015};
3016
3017static inline void input_queue_head_incr(struct softnet_data *sd)
3018{
3019#ifdef CONFIG_RPS
3020 sd->input_queue_head++;
3021#endif
3022}
3023
3024static inline void input_queue_tail_incr_save(struct softnet_data *sd,
3025 unsigned int *qtail)
3026{
3027#ifdef CONFIG_RPS
3028 *qtail = ++sd->input_queue_tail;
3029#endif
3030}
3031
3032DECLARE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
3033
3034static inline int dev_recursion_level(void)
3035{
3036 return this_cpu_read(softnet_data.xmit.recursion);
3037}
3038
3039#define XMIT_RECURSION_LIMIT 10
3040static inline bool dev_xmit_recursion(void)
3041{
3042 return unlikely(__this_cpu_read(softnet_data.xmit.recursion) >
3043 XMIT_RECURSION_LIMIT);
3044}
3045
3046static inline void dev_xmit_recursion_inc(void)
3047{
3048 __this_cpu_inc(softnet_data.xmit.recursion);
3049}
3050
3051static inline void dev_xmit_recursion_dec(void)
3052{
3053 __this_cpu_dec(softnet_data.xmit.recursion);
3054}
3055
3056void __netif_schedule(struct Qdisc *q);
3057void netif_schedule_queue(struct netdev_queue *txq);
3058
3059static inline void netif_tx_schedule_all(struct net_device *dev)
3060{
3061 unsigned int i;
3062
3063 for (i = 0; i < dev->num_tx_queues; i++)
3064 netif_schedule_queue(netdev_get_tx_queue(dev, i));
3065}
3066
3067static __always_inline void netif_tx_start_queue(struct netdev_queue *dev_queue)
3068{
3069 clear_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state);
3070}
3071
3072
3073
3074
3075
3076
3077
3078static inline void netif_start_queue(struct net_device *dev)
3079{
3080 netif_tx_start_queue(netdev_get_tx_queue(dev, 0));
3081}
3082
3083static inline void netif_tx_start_all_queues(struct net_device *dev)
3084{
3085 unsigned int i;
3086
3087 for (i = 0; i < dev->num_tx_queues; i++) {
3088 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
3089 netif_tx_start_queue(txq);
3090 }
3091}
3092
3093void netif_tx_wake_queue(struct netdev_queue *dev_queue);
3094
3095
3096
3097
3098
3099
3100
3101
3102static inline void netif_wake_queue(struct net_device *dev)
3103{
3104 netif_tx_wake_queue(netdev_get_tx_queue(dev, 0));
3105}
3106
3107static inline void netif_tx_wake_all_queues(struct net_device *dev)
3108{
3109 unsigned int i;
3110
3111 for (i = 0; i < dev->num_tx_queues; i++) {
3112 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
3113 netif_tx_wake_queue(txq);
3114 }
3115}
3116
3117static __always_inline void netif_tx_stop_queue(struct netdev_queue *dev_queue)
3118{
3119 set_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state);
3120}
3121
3122
3123
3124
3125
3126
3127
3128
3129static inline void netif_stop_queue(struct net_device *dev)
3130{
3131 netif_tx_stop_queue(netdev_get_tx_queue(dev, 0));
3132}
3133
3134void netif_tx_stop_all_queues(struct net_device *dev);
3135void netdev_update_lockdep_key(struct net_device *dev);
3136
3137static inline bool netif_tx_queue_stopped(const struct netdev_queue *dev_queue)
3138{
3139 return test_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state);
3140}
3141
3142
3143
3144
3145
3146
3147
3148static inline bool netif_queue_stopped(const struct net_device *dev)
3149{
3150 return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0));
3151}
3152
3153static inline bool netif_xmit_stopped(const struct netdev_queue *dev_queue)
3154{
3155 return dev_queue->state & QUEUE_STATE_ANY_XOFF;
3156}
3157
3158static inline bool
3159netif_xmit_frozen_or_stopped(const struct netdev_queue *dev_queue)
3160{
3161 return dev_queue->state & QUEUE_STATE_ANY_XOFF_OR_FROZEN;
3162}
3163
3164static inline bool
3165netif_xmit_frozen_or_drv_stopped(const struct netdev_queue *dev_queue)
3166{
3167 return dev_queue->state & QUEUE_STATE_DRV_XOFF_OR_FROZEN;
3168}
3169
3170
3171
3172
3173
3174
3175
3176
3177static inline void netdev_txq_bql_enqueue_prefetchw(struct netdev_queue *dev_queue)
3178{
3179#ifdef CONFIG_BQL
3180 prefetchw(&dev_queue->dql.num_queued);
3181#endif
3182}
3183
3184
3185
3186
3187
3188
3189
3190
3191static inline void netdev_txq_bql_complete_prefetchw(struct netdev_queue *dev_queue)
3192{
3193#ifdef CONFIG_BQL
3194 prefetchw(&dev_queue->dql.limit);
3195#endif
3196}
3197
3198static inline void netdev_tx_sent_queue(struct netdev_queue *dev_queue,
3199 unsigned int bytes)
3200{
3201#ifdef CONFIG_BQL
3202 dql_queued(&dev_queue->dql, bytes);
3203
3204 if (likely(dql_avail(&dev_queue->dql) >= 0))
3205 return;
3206
3207 set_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state);
3208
3209
3210
3211
3212
3213
3214 smp_mb();
3215
3216
3217 if (unlikely(dql_avail(&dev_queue->dql) >= 0))
3218 clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state);
3219#endif
3220}
3221
3222
3223
3224
3225
3226
3227
3228static inline bool __netdev_tx_sent_queue(struct netdev_queue *dev_queue,
3229 unsigned int bytes,
3230 bool xmit_more)
3231{
3232 if (xmit_more) {
3233#ifdef CONFIG_BQL
3234 dql_queued(&dev_queue->dql, bytes);
3235#endif
3236 return netif_tx_queue_stopped(dev_queue);
3237 }
3238 netdev_tx_sent_queue(dev_queue, bytes);
3239 return true;
3240}
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251static inline void netdev_sent_queue(struct net_device *dev, unsigned int bytes)
3252{
3253 netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes);
3254}
3255
3256static inline bool __netdev_sent_queue(struct net_device *dev,
3257 unsigned int bytes,
3258 bool xmit_more)
3259{
3260 return __netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes,
3261 xmit_more);
3262}
3263
3264static inline void netdev_tx_completed_queue(struct netdev_queue *dev_queue,
3265 unsigned int pkts, unsigned int bytes)
3266{
3267#ifdef CONFIG_BQL
3268 if (unlikely(!bytes))
3269 return;
3270
3271 dql_completed(&dev_queue->dql, bytes);
3272
3273
3274
3275
3276
3277
3278 smp_mb();
3279
3280 if (unlikely(dql_avail(&dev_queue->dql) < 0))
3281 return;
3282
3283 if (test_and_clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state))
3284 netif_schedule_queue(dev_queue);
3285#endif
3286}
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298static inline void netdev_completed_queue(struct net_device *dev,
3299 unsigned int pkts, unsigned int bytes)
3300{
3301 netdev_tx_completed_queue(netdev_get_tx_queue(dev, 0), pkts, bytes);
3302}
3303
3304static inline void netdev_tx_reset_queue(struct netdev_queue *q)
3305{
3306#ifdef CONFIG_BQL
3307 clear_bit(__QUEUE_STATE_STACK_XOFF, &q->state);
3308 dql_reset(&q->dql);
3309#endif
3310}
3311
3312
3313
3314
3315
3316
3317
3318
3319static inline void netdev_reset_queue(struct net_device *dev_queue)
3320{
3321 netdev_tx_reset_queue(netdev_get_tx_queue(dev_queue, 0));
3322}
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332static inline u16 netdev_cap_txqueue(struct net_device *dev, u16 queue_index)
3333{
3334 if (unlikely(queue_index >= dev->real_num_tx_queues)) {
3335 net_warn_ratelimited("%s selects TX queue %d, but real number of TX queues is %d\n",
3336 dev->name, queue_index,
3337 dev->real_num_tx_queues);
3338 return 0;
3339 }
3340
3341 return queue_index;
3342}
3343
3344
3345
3346
3347
3348
3349
3350static inline bool netif_running(const struct net_device *dev)
3351{
3352 return test_bit(__LINK_STATE_START, &dev->state);
3353}
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index)
3370{
3371 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
3372
3373 netif_tx_start_queue(txq);
3374}
3375
3376
3377
3378
3379
3380
3381
3382
3383static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index)
3384{
3385 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
3386 netif_tx_stop_queue(txq);
3387}
3388
3389
3390
3391
3392
3393
3394
3395
3396static inline bool __netif_subqueue_stopped(const struct net_device *dev,
3397 u16 queue_index)
3398{
3399 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
3400
3401 return netif_tx_queue_stopped(txq);
3402}
3403
3404static inline bool netif_subqueue_stopped(const struct net_device *dev,
3405 struct sk_buff *skb)
3406{
3407 return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb));
3408}
3409
3410
3411
3412
3413
3414
3415
3416
3417static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
3418{
3419 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
3420
3421 netif_tx_wake_queue(txq);
3422}
3423
3424#ifdef CONFIG_XPS
3425int netif_set_xps_queue(struct net_device *dev, const struct cpumask *mask,
3426 u16 index);
3427int __netif_set_xps_queue(struct net_device *dev, const unsigned long *mask,
3428 u16 index, bool is_rxqs_map);
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438static inline bool netif_attr_test_mask(unsigned long j,
3439 const unsigned long *mask,
3440 unsigned int nr_bits)
3441{
3442 cpu_max_bits_warn(j, nr_bits);
3443 return test_bit(j, mask);
3444}
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454static inline bool netif_attr_test_online(unsigned long j,
3455 const unsigned long *online_mask,
3456 unsigned int nr_bits)
3457{
3458 cpu_max_bits_warn(j, nr_bits);
3459
3460 if (online_mask)
3461 return test_bit(j, online_mask);
3462
3463 return (j < nr_bits);
3464}
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474static inline unsigned int netif_attrmask_next(int n, const unsigned long *srcp,
3475 unsigned int nr_bits)
3476{
3477
3478 if (n != -1)
3479 cpu_max_bits_warn(n, nr_bits);
3480
3481 if (srcp)
3482 return find_next_bit(srcp, nr_bits, n + 1);
3483
3484 return n + 1;
3485}
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496static inline int netif_attrmask_next_and(int n, const unsigned long *src1p,
3497 const unsigned long *src2p,
3498 unsigned int nr_bits)
3499{
3500
3501 if (n != -1)
3502 cpu_max_bits_warn(n, nr_bits);
3503
3504 if (src1p && src2p)
3505 return find_next_and_bit(src1p, src2p, nr_bits, n + 1);
3506 else if (src1p)
3507 return find_next_bit(src1p, nr_bits, n + 1);
3508 else if (src2p)
3509 return find_next_bit(src2p, nr_bits, n + 1);
3510
3511 return n + 1;
3512}
3513#else
3514static inline int netif_set_xps_queue(struct net_device *dev,
3515 const struct cpumask *mask,
3516 u16 index)
3517{
3518 return 0;
3519}
3520
3521static inline int __netif_set_xps_queue(struct net_device *dev,
3522 const unsigned long *mask,
3523 u16 index, bool is_rxqs_map)
3524{
3525 return 0;
3526}
3527#endif
3528
3529
3530
3531
3532
3533
3534
3535static inline bool netif_is_multiqueue(const struct net_device *dev)
3536{
3537 return dev->num_tx_queues > 1;
3538}
3539
3540int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq);
3541
3542#ifdef CONFIG_SYSFS
3543int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq);
3544#else
3545static inline int netif_set_real_num_rx_queues(struct net_device *dev,
3546 unsigned int rxqs)
3547{
3548 dev->real_num_rx_queues = rxqs;
3549 return 0;
3550}
3551#endif
3552
3553static inline struct netdev_rx_queue *
3554__netif_get_rx_queue(struct net_device *dev, unsigned int rxq)
3555{
3556 return dev->_rx + rxq;
3557}
3558
3559#ifdef CONFIG_SYSFS
3560static inline unsigned int get_netdev_rx_queue_index(
3561 struct netdev_rx_queue *queue)
3562{
3563 struct net_device *dev = queue->dev;
3564 int index = queue - dev->_rx;
3565
3566 BUG_ON(index >= dev->num_rx_queues);
3567 return index;
3568}
3569#endif
3570
3571#define DEFAULT_MAX_NUM_RSS_QUEUES (8)
3572int netif_get_num_default_rss_queues(void);
3573
3574enum skb_free_reason {
3575 SKB_REASON_CONSUMED,
3576 SKB_REASON_DROPPED,
3577};
3578
3579void __dev_kfree_skb_irq(struct sk_buff *skb, enum skb_free_reason reason);
3580void __dev_kfree_skb_any(struct sk_buff *skb, enum skb_free_reason reason);
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601static inline void dev_kfree_skb_irq(struct sk_buff *skb)
3602{
3603 __dev_kfree_skb_irq(skb, SKB_REASON_DROPPED);
3604}
3605
3606static inline void dev_consume_skb_irq(struct sk_buff *skb)
3607{
3608 __dev_kfree_skb_irq(skb, SKB_REASON_CONSUMED);
3609}
3610
3611static inline void dev_kfree_skb_any(struct sk_buff *skb)
3612{
3613 __dev_kfree_skb_any(skb, SKB_REASON_DROPPED);
3614}
3615
3616static inline void dev_consume_skb_any(struct sk_buff *skb)
3617{
3618 __dev_kfree_skb_any(skb, SKB_REASON_CONSUMED);
3619}
3620
3621void generic_xdp_tx(struct sk_buff *skb, struct bpf_prog *xdp_prog);
3622int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb);
3623int netif_rx(struct sk_buff *skb);
3624int netif_rx_ni(struct sk_buff *skb);
3625int netif_receive_skb(struct sk_buff *skb);
3626int netif_receive_skb_core(struct sk_buff *skb);
3627void netif_receive_skb_list(struct list_head *head);
3628gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb);
3629void napi_gro_flush(struct napi_struct *napi, bool flush_old);
3630struct sk_buff *napi_get_frags(struct napi_struct *napi);
3631gro_result_t napi_gro_frags(struct napi_struct *napi);
3632struct packet_offload *gro_find_receive_by_type(__be16 type);
3633struct packet_offload *gro_find_complete_by_type(__be16 type);
3634
3635static inline void napi_free_frags(struct napi_struct *napi)
3636{
3637 kfree_skb(napi->skb);
3638 napi->skb = NULL;
3639}
3640
3641bool netdev_is_rx_handler_busy(struct net_device *dev);
3642int netdev_rx_handler_register(struct net_device *dev,
3643 rx_handler_func_t *rx_handler,
3644 void *rx_handler_data);
3645void netdev_rx_handler_unregister(struct net_device *dev);
3646
3647bool dev_valid_name(const char *name);
3648int dev_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr,
3649 bool *need_copyout);
3650int dev_ifconf(struct net *net, struct ifconf *, int);
3651int dev_ethtool(struct net *net, struct ifreq *);
3652unsigned int dev_get_flags(const struct net_device *);
3653int __dev_change_flags(struct net_device *dev, unsigned int flags,
3654 struct netlink_ext_ack *extack);
3655int dev_change_flags(struct net_device *dev, unsigned int flags,
3656 struct netlink_ext_ack *extack);
3657void __dev_notify_flags(struct net_device *, unsigned int old_flags,
3658 unsigned int gchanges);
3659int dev_change_name(struct net_device *, const char *);
3660int dev_set_alias(struct net_device *, const char *, size_t);
3661int dev_get_alias(const struct net_device *, char *, size_t);
3662int dev_change_net_namespace(struct net_device *, struct net *, const char *);
3663int __dev_set_mtu(struct net_device *, int);
3664int dev_set_mtu_ext(struct net_device *dev, int mtu,
3665 struct netlink_ext_ack *extack);
3666int dev_set_mtu(struct net_device *, int);
3667int dev_change_tx_queue_len(struct net_device *, unsigned long);
3668void dev_set_group(struct net_device *, int);
3669int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
3670 struct netlink_ext_ack *extack);
3671int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
3672 struct netlink_ext_ack *extack);
3673int dev_change_carrier(struct net_device *, bool new_carrier);
3674int dev_get_phys_port_id(struct net_device *dev,
3675 struct netdev_phys_item_id *ppid);
3676int dev_get_phys_port_name(struct net_device *dev,
3677 char *name, size_t len);
3678int dev_get_port_parent_id(struct net_device *dev,
3679 struct netdev_phys_item_id *ppid, bool recurse);
3680bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b);
3681int dev_change_proto_down(struct net_device *dev, bool proto_down);
3682int dev_change_proto_down_generic(struct net_device *dev, bool proto_down);
3683struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev, bool *again);
3684struct sk_buff *dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
3685 struct netdev_queue *txq, int *ret);
3686
3687typedef int (*bpf_op_t)(struct net_device *dev, struct netdev_bpf *bpf);
3688int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack,
3689 int fd, u32 flags);
3690u32 __dev_xdp_query(struct net_device *dev, bpf_op_t xdp_op,
3691 enum bpf_netdev_command cmd);
3692int xdp_umem_query(struct net_device *dev, u16 queue_id);
3693
3694int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
3695int dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
3696bool is_skb_forwardable(const struct net_device *dev,
3697 const struct sk_buff *skb);
3698
3699static __always_inline int ____dev_forward_skb(struct net_device *dev,
3700 struct sk_buff *skb)
3701{
3702 if (skb_orphan_frags(skb, GFP_ATOMIC) ||
3703 unlikely(!is_skb_forwardable(dev, skb))) {
3704 atomic_long_inc(&dev->rx_dropped);
3705 kfree_skb(skb);
3706 return NET_RX_DROP;
3707 }
3708
3709 skb_scrub_packet(skb, true);
3710 skb->priority = 0;
3711 return 0;
3712}
3713
3714bool dev_nit_active(struct net_device *dev);
3715void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev);
3716
3717extern int netdev_budget;
3718extern unsigned int netdev_budget_usecs;
3719
3720
3721void netdev_run_todo(void);
3722
3723
3724
3725
3726
3727
3728
3729static inline void dev_put(struct net_device *dev)
3730{
3731 this_cpu_dec(*dev->pcpu_refcnt);
3732}
3733
3734
3735
3736
3737
3738
3739
3740static inline void dev_hold(struct net_device *dev)
3741{
3742 this_cpu_inc(*dev->pcpu_refcnt);
3743}
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754void linkwatch_init_dev(struct net_device *dev);
3755void linkwatch_fire_event(struct net_device *dev);
3756void linkwatch_forget_dev(struct net_device *dev);
3757
3758
3759
3760
3761
3762
3763
3764static inline bool netif_carrier_ok(const struct net_device *dev)
3765{
3766 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
3767}
3768
3769unsigned long dev_trans_start(struct net_device *dev);
3770
3771void __netdev_watchdog_up(struct net_device *dev);
3772
3773void netif_carrier_on(struct net_device *dev);
3774
3775void netif_carrier_off(struct net_device *dev);
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789static inline void netif_dormant_on(struct net_device *dev)
3790{
3791 if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state))
3792 linkwatch_fire_event(dev);
3793}
3794
3795
3796
3797
3798
3799
3800
3801static inline void netif_dormant_off(struct net_device *dev)
3802{
3803 if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state))
3804 linkwatch_fire_event(dev);
3805}
3806
3807
3808
3809
3810
3811
3812
3813static inline bool netif_dormant(const struct net_device *dev)
3814{
3815 return test_bit(__LINK_STATE_DORMANT, &dev->state);
3816}
3817
3818
3819
3820
3821
3822
3823
3824
3825static inline bool netif_oper_up(const struct net_device *dev)
3826{
3827 return (dev->operstate == IF_OPER_UP ||
3828 dev->operstate == IF_OPER_UNKNOWN );
3829}
3830
3831
3832
3833
3834
3835
3836
3837static inline bool netif_device_present(struct net_device *dev)
3838{
3839 return test_bit(__LINK_STATE_PRESENT, &dev->state);
3840}
3841
3842void netif_device_detach(struct net_device *dev);
3843
3844void netif_device_attach(struct net_device *dev);
3845
3846
3847
3848
3849
3850enum {
3851 NETIF_MSG_DRV = 0x0001,
3852 NETIF_MSG_PROBE = 0x0002,
3853 NETIF_MSG_LINK = 0x0004,
3854 NETIF_MSG_TIMER = 0x0008,
3855 NETIF_MSG_IFDOWN = 0x0010,
3856 NETIF_MSG_IFUP = 0x0020,
3857 NETIF_MSG_RX_ERR = 0x0040,
3858 NETIF_MSG_TX_ERR = 0x0080,
3859 NETIF_MSG_TX_QUEUED = 0x0100,
3860 NETIF_MSG_INTR = 0x0200,
3861 NETIF_MSG_TX_DONE = 0x0400,
3862 NETIF_MSG_RX_STATUS = 0x0800,
3863 NETIF_MSG_PKTDATA = 0x1000,
3864 NETIF_MSG_HW = 0x2000,
3865 NETIF_MSG_WOL = 0x4000,
3866};
3867
3868#define netif_msg_drv(p) ((p)->msg_enable & NETIF_MSG_DRV)
3869#define netif_msg_probe(p) ((p)->msg_enable & NETIF_MSG_PROBE)
3870#define netif_msg_link(p) ((p)->msg_enable & NETIF_MSG_LINK)
3871#define netif_msg_timer(p) ((p)->msg_enable & NETIF_MSG_TIMER)
3872#define netif_msg_ifdown(p) ((p)->msg_enable & NETIF_MSG_IFDOWN)
3873#define netif_msg_ifup(p) ((p)->msg_enable & NETIF_MSG_IFUP)
3874#define netif_msg_rx_err(p) ((p)->msg_enable & NETIF_MSG_RX_ERR)
3875#define netif_msg_tx_err(p) ((p)->msg_enable & NETIF_MSG_TX_ERR)
3876#define netif_msg_tx_queued(p) ((p)->msg_enable & NETIF_MSG_TX_QUEUED)
3877#define netif_msg_intr(p) ((p)->msg_enable & NETIF_MSG_INTR)
3878#define netif_msg_tx_done(p) ((p)->msg_enable & NETIF_MSG_TX_DONE)
3879#define netif_msg_rx_status(p) ((p)->msg_enable & NETIF_MSG_RX_STATUS)
3880#define netif_msg_pktdata(p) ((p)->msg_enable & NETIF_MSG_PKTDATA)
3881#define netif_msg_hw(p) ((p)->msg_enable & NETIF_MSG_HW)
3882#define netif_msg_wol(p) ((p)->msg_enable & NETIF_MSG_WOL)
3883
3884static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
3885{
3886
3887 if (debug_value < 0 || debug_value >= (sizeof(u32) * 8))
3888 return default_msg_enable_bits;
3889 if (debug_value == 0)
3890 return 0;
3891
3892 return (1U << debug_value) - 1;
3893}
3894
3895static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
3896{
3897 spin_lock(&txq->_xmit_lock);
3898 txq->xmit_lock_owner = cpu;
3899}
3900
3901static inline bool __netif_tx_acquire(struct netdev_queue *txq)
3902{
3903 __acquire(&txq->_xmit_lock);
3904 return true;
3905}
3906
3907static inline void __netif_tx_release(struct netdev_queue *txq)
3908{
3909 __release(&txq->_xmit_lock);
3910}
3911
3912static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
3913{
3914 spin_lock_bh(&txq->_xmit_lock);
3915 txq->xmit_lock_owner = smp_processor_id();
3916}
3917
3918static inline bool __netif_tx_trylock(struct netdev_queue *txq)
3919{
3920 bool ok = spin_trylock(&txq->_xmit_lock);
3921 if (likely(ok))
3922 txq->xmit_lock_owner = smp_processor_id();
3923 return ok;
3924}
3925
3926static inline void __netif_tx_unlock(struct netdev_queue *txq)
3927{
3928 txq->xmit_lock_owner = -1;
3929 spin_unlock(&txq->_xmit_lock);
3930}
3931
3932static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
3933{
3934 txq->xmit_lock_owner = -1;
3935 spin_unlock_bh(&txq->_xmit_lock);
3936}
3937
3938static inline void txq_trans_update(struct netdev_queue *txq)
3939{
3940 if (txq->xmit_lock_owner != -1)
3941 txq->trans_start = jiffies;
3942}
3943
3944
3945static inline void netif_trans_update(struct net_device *dev)
3946{
3947 struct netdev_queue *txq = netdev_get_tx_queue(dev, 0);
3948
3949 if (txq->trans_start != jiffies)
3950 txq->trans_start = jiffies;
3951}
3952
3953
3954
3955
3956
3957
3958
3959static inline void netif_tx_lock(struct net_device *dev)
3960{
3961 unsigned int i;
3962 int cpu;
3963
3964 spin_lock(&dev->tx_global_lock);
3965 cpu = smp_processor_id();
3966 for (i = 0; i < dev->num_tx_queues; i++) {
3967 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
3968
3969
3970
3971
3972
3973
3974
3975 __netif_tx_lock(txq, cpu);
3976 set_bit(__QUEUE_STATE_FROZEN, &txq->state);
3977 __netif_tx_unlock(txq);
3978 }
3979}
3980
3981static inline void netif_tx_lock_bh(struct net_device *dev)
3982{
3983 local_bh_disable();
3984 netif_tx_lock(dev);
3985}
3986
3987static inline void netif_tx_unlock(struct net_device *dev)
3988{
3989 unsigned int i;
3990
3991 for (i = 0; i < dev->num_tx_queues; i++) {
3992 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
3993
3994
3995
3996
3997
3998 clear_bit(__QUEUE_STATE_FROZEN, &txq->state);
3999 netif_schedule_queue(txq);
4000 }
4001 spin_unlock(&dev->tx_global_lock);
4002}
4003
4004static inline void netif_tx_unlock_bh(struct net_device *dev)
4005{
4006 netif_tx_unlock(dev);
4007 local_bh_enable();
4008}
4009
4010#define HARD_TX_LOCK(dev, txq, cpu) { \
4011 if ((dev->features & NETIF_F_LLTX) == 0) { \
4012 __netif_tx_lock(txq, cpu); \
4013 } else { \
4014 __netif_tx_acquire(txq); \
4015 } \
4016}
4017
4018#define HARD_TX_TRYLOCK(dev, txq) \
4019 (((dev->features & NETIF_F_LLTX) == 0) ? \
4020 __netif_tx_trylock(txq) : \
4021 __netif_tx_acquire(txq))
4022
4023#define HARD_TX_UNLOCK(dev, txq) { \
4024 if ((dev->features & NETIF_F_LLTX) == 0) { \
4025 __netif_tx_unlock(txq); \
4026 } else { \
4027 __netif_tx_release(txq); \
4028 } \
4029}
4030
4031static inline void netif_tx_disable(struct net_device *dev)
4032{
4033 unsigned int i;
4034 int cpu;
4035
4036 local_bh_disable();
4037 cpu = smp_processor_id();
4038 for (i = 0; i < dev->num_tx_queues; i++) {
4039 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
4040
4041 __netif_tx_lock(txq, cpu);
4042 netif_tx_stop_queue(txq);
4043 __netif_tx_unlock(txq);
4044 }
4045 local_bh_enable();
4046}
4047
4048static inline void netif_addr_lock(struct net_device *dev)
4049{
4050 spin_lock(&dev->addr_list_lock);
4051}
4052
4053static inline void netif_addr_lock_bh(struct net_device *dev)
4054{
4055 spin_lock_bh(&dev->addr_list_lock);
4056}
4057
4058static inline void netif_addr_unlock(struct net_device *dev)
4059{
4060 spin_unlock(&dev->addr_list_lock);
4061}
4062
4063static inline void netif_addr_unlock_bh(struct net_device *dev)
4064{
4065 spin_unlock_bh(&dev->addr_list_lock);
4066}
4067
4068
4069
4070
4071
4072#define for_each_dev_addr(dev, ha) \
4073 list_for_each_entry_rcu(ha, &dev->dev_addrs.list, list)
4074
4075
4076
4077void ether_setup(struct net_device *dev);
4078
4079
4080struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
4081 unsigned char name_assign_type,
4082 void (*setup)(struct net_device *),
4083 unsigned int txqs, unsigned int rxqs);
4084int dev_get_valid_name(struct net *net, struct net_device *dev,
4085 const char *name);
4086
4087#define alloc_netdev(sizeof_priv, name, name_assign_type, setup) \
4088 alloc_netdev_mqs(sizeof_priv, name, name_assign_type, setup, 1, 1)
4089
4090#define alloc_netdev_mq(sizeof_priv, name, name_assign_type, setup, count) \
4091 alloc_netdev_mqs(sizeof_priv, name, name_assign_type, setup, count, \
4092 count)
4093
4094int register_netdev(struct net_device *dev);
4095void unregister_netdev(struct net_device *dev);
4096
4097
4098int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
4099 struct netdev_hw_addr_list *from_list, int addr_len);
4100void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
4101 struct netdev_hw_addr_list *from_list, int addr_len);
4102int __hw_addr_sync_dev(struct netdev_hw_addr_list *list,
4103 struct net_device *dev,
4104 int (*sync)(struct net_device *, const unsigned char *),
4105 int (*unsync)(struct net_device *,
4106 const unsigned char *));
4107int __hw_addr_ref_sync_dev(struct netdev_hw_addr_list *list,
4108 struct net_device *dev,
4109 int (*sync)(struct net_device *,
4110 const unsigned char *, int),
4111 int (*unsync)(struct net_device *,
4112 const unsigned char *, int));
4113void __hw_addr_ref_unsync_dev(struct netdev_hw_addr_list *list,
4114 struct net_device *dev,
4115 int (*unsync)(struct net_device *,
4116 const unsigned char *, int));
4117void __hw_addr_unsync_dev(struct netdev_hw_addr_list *list,
4118 struct net_device *dev,
4119 int (*unsync)(struct net_device *,
4120 const unsigned char *));
4121void __hw_addr_init(struct netdev_hw_addr_list *list);
4122
4123
4124int dev_addr_add(struct net_device *dev, const unsigned char *addr,
4125 unsigned char addr_type);
4126int dev_addr_del(struct net_device *dev, const unsigned char *addr,
4127 unsigned char addr_type);
4128void dev_addr_flush(struct net_device *dev);
4129int dev_addr_init(struct net_device *dev);
4130
4131
4132int dev_uc_add(struct net_device *dev, const unsigned char *addr);
4133int dev_uc_add_excl(struct net_device *dev, const unsigned char *addr);
4134int dev_uc_del(struct net_device *dev, const unsigned char *addr);
4135int dev_uc_sync(struct net_device *to, struct net_device *from);
4136int dev_uc_sync_multiple(struct net_device *to, struct net_device *from);
4137void dev_uc_unsync(struct net_device *to, struct net_device *from);
4138void dev_uc_flush(struct net_device *dev);
4139void dev_uc_init(struct net_device *dev);
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150static inline int __dev_uc_sync(struct net_device *dev,
4151 int (*sync)(struct net_device *,
4152 const unsigned char *),
4153 int (*unsync)(struct net_device *,
4154 const unsigned char *))
4155{
4156 return __hw_addr_sync_dev(&dev->uc, dev, sync, unsync);
4157}
4158
4159
4160
4161
4162
4163
4164
4165
4166static inline void __dev_uc_unsync(struct net_device *dev,
4167 int (*unsync)(struct net_device *,
4168 const unsigned char *))
4169{
4170 __hw_addr_unsync_dev(&dev->uc, dev, unsync);
4171}
4172
4173
4174int dev_mc_add(struct net_device *dev, const unsigned char *addr);
4175int dev_mc_add_global(struct net_device *dev, const unsigned char *addr);
4176int dev_mc_add_excl(struct net_device *dev, const unsigned char *addr);
4177int dev_mc_del(struct net_device *dev, const unsigned char *addr);
4178int dev_mc_del_global(struct net_device *dev, const unsigned char *addr);
4179int dev_mc_sync(struct net_device *to, struct net_device *from);
4180int dev_mc_sync_multiple(struct net_device *to, struct net_device *from);
4181void dev_mc_unsync(struct net_device *to, struct net_device *from);
4182void dev_mc_flush(struct net_device *dev);
4183void dev_mc_init(struct net_device *dev);
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194static inline int __dev_mc_sync(struct net_device *dev,
4195 int (*sync)(struct net_device *,
4196 const unsigned char *),
4197 int (*unsync)(struct net_device *,
4198 const unsigned char *))
4199{
4200 return __hw_addr_sync_dev(&dev->mc, dev, sync, unsync);
4201}
4202
4203
4204
4205
4206
4207
4208
4209
4210static inline void __dev_mc_unsync(struct net_device *dev,
4211 int (*unsync)(struct net_device *,
4212 const unsigned char *))
4213{
4214 __hw_addr_unsync_dev(&dev->mc, dev, unsync);
4215}
4216
4217
4218void dev_set_rx_mode(struct net_device *dev);
4219void __dev_set_rx_mode(struct net_device *dev);
4220int dev_set_promiscuity(struct net_device *dev, int inc);
4221int dev_set_allmulti(struct net_device *dev, int inc);
4222void netdev_state_change(struct net_device *dev);
4223void netdev_notify_peers(struct net_device *dev);
4224void netdev_features_change(struct net_device *dev);
4225
4226void dev_load(struct net *net, const char *name);
4227struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
4228 struct rtnl_link_stats64 *storage);
4229void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
4230 const struct net_device_stats *netdev_stats);
4231
4232extern int netdev_max_backlog;
4233extern int netdev_tstamp_prequeue;
4234extern int weight_p;
4235extern int dev_weight_rx_bias;
4236extern int dev_weight_tx_bias;
4237extern int dev_rx_weight;
4238extern int dev_tx_weight;
4239extern int gro_normal_batch;
4240
4241bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev);
4242struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,
4243 struct list_head **iter);
4244struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev,
4245 struct list_head **iter);
4246
4247
4248#define netdev_for_each_upper_dev_rcu(dev, updev, iter) \
4249 for (iter = &(dev)->adj_list.upper, \
4250 updev = netdev_upper_get_next_dev_rcu(dev, &(iter)); \
4251 updev; \
4252 updev = netdev_upper_get_next_dev_rcu(dev, &(iter)))
4253
4254int netdev_walk_all_upper_dev_rcu(struct net_device *dev,
4255 int (*fn)(struct net_device *upper_dev,
4256 void *data),
4257 void *data);
4258
4259bool netdev_has_upper_dev_all_rcu(struct net_device *dev,
4260 struct net_device *upper_dev);
4261
4262bool netdev_has_any_upper_dev(struct net_device *dev);
4263
4264void *netdev_lower_get_next_private(struct net_device *dev,
4265 struct list_head **iter);
4266void *netdev_lower_get_next_private_rcu(struct net_device *dev,
4267 struct list_head **iter);
4268
4269#define netdev_for_each_lower_private(dev, priv, iter) \
4270 for (iter = (dev)->adj_list.lower.next, \
4271 priv = netdev_lower_get_next_private(dev, &(iter)); \
4272 priv; \
4273 priv = netdev_lower_get_next_private(dev, &(iter)))
4274
4275#define netdev_for_each_lower_private_rcu(dev, priv, iter) \
4276 for (iter = &(dev)->adj_list.lower, \
4277 priv = netdev_lower_get_next_private_rcu(dev, &(iter)); \
4278 priv; \
4279 priv = netdev_lower_get_next_private_rcu(dev, &(iter)))
4280
4281void *netdev_lower_get_next(struct net_device *dev,
4282 struct list_head **iter);
4283
4284#define netdev_for_each_lower_dev(dev, ldev, iter) \
4285 for (iter = (dev)->adj_list.lower.next, \
4286 ldev = netdev_lower_get_next(dev, &(iter)); \
4287 ldev; \
4288 ldev = netdev_lower_get_next(dev, &(iter)))
4289
4290struct net_device *netdev_all_lower_get_next(struct net_device *dev,
4291 struct list_head **iter);
4292struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev,
4293 struct list_head **iter);
4294
4295int netdev_walk_all_lower_dev(struct net_device *dev,
4296 int (*fn)(struct net_device *lower_dev,
4297 void *data),
4298 void *data);
4299int netdev_walk_all_lower_dev_rcu(struct net_device *dev,
4300 int (*fn)(struct net_device *lower_dev,
4301 void *data),
4302 void *data);
4303
4304void *netdev_adjacent_get_private(struct list_head *adj_list);
4305void *netdev_lower_get_first_private_rcu(struct net_device *dev);
4306struct net_device *netdev_master_upper_dev_get(struct net_device *dev);
4307struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev);
4308int netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev,
4309 struct netlink_ext_ack *extack);
4310int netdev_master_upper_dev_link(struct net_device *dev,
4311 struct net_device *upper_dev,
4312 void *upper_priv, void *upper_info,
4313 struct netlink_ext_ack *extack);
4314void netdev_upper_dev_unlink(struct net_device *dev,
4315 struct net_device *upper_dev);
4316int netdev_adjacent_change_prepare(struct net_device *old_dev,
4317 struct net_device *new_dev,
4318 struct net_device *dev,
4319 struct netlink_ext_ack *extack);
4320void netdev_adjacent_change_commit(struct net_device *old_dev,
4321 struct net_device *new_dev,
4322 struct net_device *dev);
4323void netdev_adjacent_change_abort(struct net_device *old_dev,
4324 struct net_device *new_dev,
4325 struct net_device *dev);
4326void netdev_adjacent_rename_links(struct net_device *dev, char *oldname);
4327void *netdev_lower_dev_get_private(struct net_device *dev,
4328 struct net_device *lower_dev);
4329void netdev_lower_state_changed(struct net_device *lower_dev,
4330 void *lower_state_info);
4331
4332
4333#define NETDEV_RSS_KEY_LEN 52
4334extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly;
4335void netdev_rss_key_fill(void *buffer, size_t len);
4336
4337int skb_checksum_help(struct sk_buff *skb);
4338int skb_crc32c_csum_help(struct sk_buff *skb);
4339int skb_csum_hwoffload_help(struct sk_buff *skb,
4340 const netdev_features_t features);
4341
4342struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
4343 netdev_features_t features, bool tx_path);
4344struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,
4345 netdev_features_t features);
4346
4347struct netdev_bonding_info {
4348 ifslave slave;
4349 ifbond master;
4350};
4351
4352struct netdev_notifier_bonding_info {
4353 struct netdev_notifier_info info;
4354 struct netdev_bonding_info bonding_info;
4355};
4356
4357void netdev_bonding_info_change(struct net_device *dev,
4358 struct netdev_bonding_info *bonding_info);
4359
4360static inline
4361struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features)
4362{
4363 return __skb_gso_segment(skb, features, true);
4364}
4365__be16 skb_network_protocol(struct sk_buff *skb, int *depth);
4366
4367static inline bool can_checksum_protocol(netdev_features_t features,
4368 __be16 protocol)
4369{
4370 if (protocol == htons(ETH_P_FCOE))
4371 return !!(features & NETIF_F_FCOE_CRC);
4372
4373
4374
4375 if (features & NETIF_F_HW_CSUM) {
4376
4377 return true;
4378 }
4379
4380 switch (protocol) {
4381 case htons(ETH_P_IP):
4382 return !!(features & NETIF_F_IP_CSUM);
4383 case htons(ETH_P_IPV6):
4384 return !!(features & NETIF_F_IPV6_CSUM);
4385 default:
4386 return false;
4387 }
4388}
4389
4390#ifdef CONFIG_BUG
4391void netdev_rx_csum_fault(struct net_device *dev, struct sk_buff *skb);
4392#else
4393static inline void netdev_rx_csum_fault(struct net_device *dev,
4394 struct sk_buff *skb)
4395{
4396}
4397#endif
4398
4399void net_enable_timestamp(void);
4400void net_disable_timestamp(void);
4401
4402#ifdef CONFIG_PROC_FS
4403int __init dev_proc_init(void);
4404#else
4405#define dev_proc_init() 0
4406#endif
4407
4408static inline netdev_tx_t __netdev_start_xmit(const struct net_device_ops *ops,
4409 struct sk_buff *skb, struct net_device *dev,
4410 bool more)
4411{
4412 __this_cpu_write(softnet_data.xmit.more, more);
4413 return ops->ndo_start_xmit(skb, dev);
4414}
4415
4416static inline bool netdev_xmit_more(void)
4417{
4418 return __this_cpu_read(softnet_data.xmit.more);
4419}
4420
4421static inline netdev_tx_t netdev_start_xmit(struct sk_buff *skb, struct net_device *dev,
4422 struct netdev_queue *txq, bool more)
4423{
4424 const struct net_device_ops *ops = dev->netdev_ops;
4425 netdev_tx_t rc;
4426
4427 rc = __netdev_start_xmit(ops, skb, dev, more);
4428 if (rc == NETDEV_TX_OK)
4429 txq_trans_update(txq);
4430
4431 return rc;
4432}
4433
4434int netdev_class_create_file_ns(const struct class_attribute *class_attr,
4435 const void *ns);
4436void netdev_class_remove_file_ns(const struct class_attribute *class_attr,
4437 const void *ns);
4438
4439static inline int netdev_class_create_file(const struct class_attribute *class_attr)
4440{
4441 return netdev_class_create_file_ns(class_attr, NULL);
4442}
4443
4444static inline void netdev_class_remove_file(const struct class_attribute *class_attr)
4445{
4446 netdev_class_remove_file_ns(class_attr, NULL);
4447}
4448
4449extern const struct kobj_ns_type_operations net_ns_type_operations;
4450
4451const char *netdev_drivername(const struct net_device *dev);
4452
4453void linkwatch_run_queue(void);
4454
4455static inline netdev_features_t netdev_intersect_features(netdev_features_t f1,
4456 netdev_features_t f2)
4457{
4458 if ((f1 ^ f2) & NETIF_F_HW_CSUM) {
4459 if (f1 & NETIF_F_HW_CSUM)
4460 f1 |= (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
4461 else
4462 f2 |= (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
4463 }
4464
4465 return f1 & f2;
4466}
4467
4468static inline netdev_features_t netdev_get_wanted_features(
4469 struct net_device *dev)
4470{
4471 return (dev->features & ~dev->hw_features) | dev->wanted_features;
4472}
4473netdev_features_t netdev_increment_features(netdev_features_t all,
4474 netdev_features_t one, netdev_features_t mask);
4475
4476
4477
4478
4479
4480static inline netdev_features_t netdev_add_tso_features(netdev_features_t features,
4481 netdev_features_t mask)
4482{
4483 return netdev_increment_features(features, NETIF_F_ALL_TSO, mask);
4484}
4485
4486int __netdev_update_features(struct net_device *dev);
4487void netdev_update_features(struct net_device *dev);
4488void netdev_change_features(struct net_device *dev);
4489
4490void netif_stacked_transfer_operstate(const struct net_device *rootdev,
4491 struct net_device *dev);
4492
4493netdev_features_t passthru_features_check(struct sk_buff *skb,
4494 struct net_device *dev,
4495 netdev_features_t features);
4496netdev_features_t netif_skb_features(struct sk_buff *skb);
4497
4498static inline bool net_gso_ok(netdev_features_t features, int gso_type)
4499{
4500 netdev_features_t feature = (netdev_features_t)gso_type << NETIF_F_GSO_SHIFT;
4501
4502
4503 BUILD_BUG_ON(SKB_GSO_TCPV4 != (NETIF_F_TSO >> NETIF_F_GSO_SHIFT));
4504 BUILD_BUG_ON(SKB_GSO_DODGY != (NETIF_F_GSO_ROBUST >> NETIF_F_GSO_SHIFT));
4505 BUILD_BUG_ON(SKB_GSO_TCP_ECN != (NETIF_F_TSO_ECN >> NETIF_F_GSO_SHIFT));
4506 BUILD_BUG_ON(SKB_GSO_TCP_FIXEDID != (NETIF_F_TSO_MANGLEID >> NETIF_F_GSO_SHIFT));
4507 BUILD_BUG_ON(SKB_GSO_TCPV6 != (NETIF_F_TSO6 >> NETIF_F_GSO_SHIFT));
4508 BUILD_BUG_ON(SKB_GSO_FCOE != (NETIF_F_FSO >> NETIF_F_GSO_SHIFT));
4509 BUILD_BUG_ON(SKB_GSO_GRE != (NETIF_F_GSO_GRE >> NETIF_F_GSO_SHIFT));
4510 BUILD_BUG_ON(SKB_GSO_GRE_CSUM != (NETIF_F_GSO_GRE_CSUM >> NETIF_F_GSO_SHIFT));
4511 BUILD_BUG_ON(SKB_GSO_IPXIP4 != (NETIF_F_GSO_IPXIP4 >> NETIF_F_GSO_SHIFT));
4512 BUILD_BUG_ON(SKB_GSO_IPXIP6 != (NETIF_F_GSO_IPXIP6 >> NETIF_F_GSO_SHIFT));
4513 BUILD_BUG_ON(SKB_GSO_UDP_TUNNEL != (NETIF_F_GSO_UDP_TUNNEL >> NETIF_F_GSO_SHIFT));
4514 BUILD_BUG_ON(SKB_GSO_UDP_TUNNEL_CSUM != (NETIF_F_GSO_UDP_TUNNEL_CSUM >> NETIF_F_GSO_SHIFT));
4515 BUILD_BUG_ON(SKB_GSO_PARTIAL != (NETIF_F_GSO_PARTIAL >> NETIF_F_GSO_SHIFT));
4516 BUILD_BUG_ON(SKB_GSO_TUNNEL_REMCSUM != (NETIF_F_GSO_TUNNEL_REMCSUM >> NETIF_F_GSO_SHIFT));
4517 BUILD_BUG_ON(SKB_GSO_SCTP != (NETIF_F_GSO_SCTP >> NETIF_F_GSO_SHIFT));
4518 BUILD_BUG_ON(SKB_GSO_ESP != (NETIF_F_GSO_ESP >> NETIF_F_GSO_SHIFT));
4519 BUILD_BUG_ON(SKB_GSO_UDP != (NETIF_F_GSO_UDP >> NETIF_F_GSO_SHIFT));
4520 BUILD_BUG_ON(SKB_GSO_UDP_L4 != (NETIF_F_GSO_UDP_L4 >> NETIF_F_GSO_SHIFT));
4521
4522 return (features & feature) == feature;
4523}
4524
4525static inline bool skb_gso_ok(struct sk_buff *skb, netdev_features_t features)
4526{
4527 return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&
4528 (!skb_has_frag_list(skb) || (features & NETIF_F_FRAGLIST));
4529}
4530
4531static inline bool netif_needs_gso(struct sk_buff *skb,
4532 netdev_features_t features)
4533{
4534 return skb_is_gso(skb) && (!skb_gso_ok(skb, features) ||
4535 unlikely((skb->ip_summed != CHECKSUM_PARTIAL) &&
4536 (skb->ip_summed != CHECKSUM_UNNECESSARY)));
4537}
4538
4539static inline void netif_set_gso_max_size(struct net_device *dev,
4540 unsigned int size)
4541{
4542 dev->gso_max_size = size;
4543}
4544
4545static inline void skb_gso_error_unwind(struct sk_buff *skb, __be16 protocol,
4546 int pulled_hlen, u16 mac_offset,
4547 int mac_len)
4548{
4549 skb->protocol = protocol;
4550 skb->encapsulation = 1;
4551 skb_push(skb, pulled_hlen);
4552 skb_reset_transport_header(skb);
4553 skb->mac_header = mac_offset;
4554 skb->network_header = skb->mac_header + mac_len;
4555 skb->mac_len = mac_len;
4556}
4557
4558static inline bool netif_is_macsec(const struct net_device *dev)
4559{
4560 return dev->priv_flags & IFF_MACSEC;
4561}
4562
4563static inline bool netif_is_macvlan(const struct net_device *dev)
4564{
4565 return dev->priv_flags & IFF_MACVLAN;
4566}
4567
4568static inline bool netif_is_macvlan_port(const struct net_device *dev)
4569{
4570 return dev->priv_flags & IFF_MACVLAN_PORT;
4571}
4572
4573static inline bool netif_is_bond_master(const struct net_device *dev)
4574{
4575 return dev->flags & IFF_MASTER && dev->priv_flags & IFF_BONDING;
4576}
4577
4578static inline bool netif_is_bond_slave(const struct net_device *dev)
4579{
4580 return dev->flags & IFF_SLAVE && dev->priv_flags & IFF_BONDING;
4581}
4582
4583static inline bool netif_supports_nofcs(struct net_device *dev)
4584{
4585 return dev->priv_flags & IFF_SUPP_NOFCS;
4586}
4587
4588static inline bool netif_has_l3_rx_handler(const struct net_device *dev)
4589{
4590 return dev->priv_flags & IFF_L3MDEV_RX_HANDLER;
4591}
4592
4593static inline bool netif_is_l3_master(const struct net_device *dev)
4594{
4595 return dev->priv_flags & IFF_L3MDEV_MASTER;
4596}
4597
4598static inline bool netif_is_l3_slave(const struct net_device *dev)
4599{
4600 return dev->priv_flags & IFF_L3MDEV_SLAVE;
4601}
4602
4603static inline bool netif_is_bridge_master(const struct net_device *dev)
4604{
4605 return dev->priv_flags & IFF_EBRIDGE;
4606}
4607
4608static inline bool netif_is_bridge_port(const struct net_device *dev)
4609{
4610 return dev->priv_flags & IFF_BRIDGE_PORT;
4611}
4612
4613static inline bool netif_is_ovs_master(const struct net_device *dev)
4614{
4615 return dev->priv_flags & IFF_OPENVSWITCH;
4616}
4617
4618static inline bool netif_is_ovs_port(const struct net_device *dev)
4619{
4620 return dev->priv_flags & IFF_OVS_DATAPATH;
4621}
4622
4623static inline bool netif_is_team_master(const struct net_device *dev)
4624{
4625 return dev->priv_flags & IFF_TEAM;
4626}
4627
4628static inline bool netif_is_team_port(const struct net_device *dev)
4629{
4630 return dev->priv_flags & IFF_TEAM_PORT;
4631}
4632
4633static inline bool netif_is_lag_master(const struct net_device *dev)
4634{
4635 return netif_is_bond_master(dev) || netif_is_team_master(dev);
4636}
4637
4638static inline bool netif_is_lag_port(const struct net_device *dev)
4639{
4640 return netif_is_bond_slave(dev) || netif_is_team_port(dev);
4641}
4642
4643static inline bool netif_is_rxfh_configured(const struct net_device *dev)
4644{
4645 return dev->priv_flags & IFF_RXFH_CONFIGURED;
4646}
4647
4648static inline bool netif_is_failover(const struct net_device *dev)
4649{
4650 return dev->priv_flags & IFF_FAILOVER;
4651}
4652
4653static inline bool netif_is_failover_slave(const struct net_device *dev)
4654{
4655 return dev->priv_flags & IFF_FAILOVER_SLAVE;
4656}
4657
4658
4659static inline void netif_keep_dst(struct net_device *dev)
4660{
4661 dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM);
4662}
4663
4664
4665static inline bool netif_reduces_vlan_mtu(struct net_device *dev)
4666{
4667
4668 return dev->priv_flags & IFF_MACSEC;
4669}
4670
4671extern struct pernet_operations __net_initdata loopback_net_ops;
4672
4673
4674
4675
4676
4677static inline const char *netdev_name(const struct net_device *dev)
4678{
4679 if (!dev->name[0] || strchr(dev->name, '%'))
4680 return "(unnamed net_device)";
4681 return dev->name;
4682}
4683
4684static inline bool netdev_unregistering(const struct net_device *dev)
4685{
4686 return dev->reg_state == NETREG_UNREGISTERING;
4687}
4688
4689static inline const char *netdev_reg_state(const struct net_device *dev)
4690{
4691 switch (dev->reg_state) {
4692 case NETREG_UNINITIALIZED: return " (uninitialized)";
4693 case NETREG_REGISTERED: return "";
4694 case NETREG_UNREGISTERING: return " (unregistering)";
4695 case NETREG_UNREGISTERED: return " (unregistered)";
4696 case NETREG_RELEASED: return " (released)";
4697 case NETREG_DUMMY: return " (dummy)";
4698 }
4699
4700 WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state);
4701 return " (unknown)";
4702}
4703
4704__printf(3, 4) __cold
4705void netdev_printk(const char *level, const struct net_device *dev,
4706 const char *format, ...);
4707__printf(2, 3) __cold
4708void netdev_emerg(const struct net_device *dev, const char *format, ...);
4709__printf(2, 3) __cold
4710void netdev_alert(const struct net_device *dev, const char *format, ...);
4711__printf(2, 3) __cold
4712void netdev_crit(const struct net_device *dev, const char *format, ...);
4713__printf(2, 3) __cold
4714void netdev_err(const struct net_device *dev, const char *format, ...);
4715__printf(2, 3) __cold
4716void netdev_warn(const struct net_device *dev, const char *format, ...);
4717__printf(2, 3) __cold
4718void netdev_notice(const struct net_device *dev, const char *format, ...);
4719__printf(2, 3) __cold
4720void netdev_info(const struct net_device *dev, const char *format, ...);
4721
4722#define netdev_level_once(level, dev, fmt, ...) \
4723do { \
4724 static bool __print_once __read_mostly; \
4725 \
4726 if (!__print_once) { \
4727 __print_once = true; \
4728 netdev_printk(level, dev, fmt, ##__VA_ARGS__); \
4729 } \
4730} while (0)
4731
4732#define netdev_emerg_once(dev, fmt, ...) \
4733 netdev_level_once(KERN_EMERG, dev, fmt, ##__VA_ARGS__)
4734#define netdev_alert_once(dev, fmt, ...) \
4735 netdev_level_once(KERN_ALERT, dev, fmt, ##__VA_ARGS__)
4736#define netdev_crit_once(dev, fmt, ...) \
4737 netdev_level_once(KERN_CRIT, dev, fmt, ##__VA_ARGS__)
4738#define netdev_err_once(dev, fmt, ...) \
4739 netdev_level_once(KERN_ERR, dev, fmt, ##__VA_ARGS__)
4740#define netdev_warn_once(dev, fmt, ...) \
4741 netdev_level_once(KERN_WARNING, dev, fmt, ##__VA_ARGS__)
4742#define netdev_notice_once(dev, fmt, ...) \
4743 netdev_level_once(KERN_NOTICE, dev, fmt, ##__VA_ARGS__)
4744#define netdev_info_once(dev, fmt, ...) \
4745 netdev_level_once(KERN_INFO, dev, fmt, ##__VA_ARGS__)
4746
4747#define MODULE_ALIAS_NETDEV(device) \
4748 MODULE_ALIAS("netdev-" device)
4749
4750#if defined(CONFIG_DYNAMIC_DEBUG)
4751#define netdev_dbg(__dev, format, args...) \
4752do { \
4753 dynamic_netdev_dbg(__dev, format, ##args); \
4754} while (0)
4755#elif defined(DEBUG)
4756#define netdev_dbg(__dev, format, args...) \
4757 netdev_printk(KERN_DEBUG, __dev, format, ##args)
4758#else
4759#define netdev_dbg(__dev, format, args...) \
4760({ \
4761 if (0) \
4762 netdev_printk(KERN_DEBUG, __dev, format, ##args); \
4763})
4764#endif
4765
4766#if defined(VERBOSE_DEBUG)
4767#define netdev_vdbg netdev_dbg
4768#else
4769
4770#define netdev_vdbg(dev, format, args...) \
4771({ \
4772 if (0) \
4773 netdev_printk(KERN_DEBUG, dev, format, ##args); \
4774 0; \
4775})
4776#endif
4777
4778
4779
4780
4781
4782
4783#define netdev_WARN(dev, format, args...) \
4784 WARN(1, "netdevice: %s%s: " format, netdev_name(dev), \
4785 netdev_reg_state(dev), ##args)
4786
4787#define netdev_WARN_ONCE(dev, format, args...) \
4788 WARN_ONCE(1, "netdevice: %s%s: " format, netdev_name(dev), \
4789 netdev_reg_state(dev), ##args)
4790
4791
4792
4793#define netif_printk(priv, type, level, dev, fmt, args...) \
4794do { \
4795 if (netif_msg_##type(priv)) \
4796 netdev_printk(level, (dev), fmt, ##args); \
4797} while (0)
4798
4799#define netif_level(level, priv, type, dev, fmt, args...) \
4800do { \
4801 if (netif_msg_##type(priv)) \
4802 netdev_##level(dev, fmt, ##args); \
4803} while (0)
4804
4805#define netif_emerg(priv, type, dev, fmt, args...) \
4806 netif_level(emerg, priv, type, dev, fmt, ##args)
4807#define netif_alert(priv, type, dev, fmt, args...) \
4808 netif_level(alert, priv, type, dev, fmt, ##args)
4809#define netif_crit(priv, type, dev, fmt, args...) \
4810 netif_level(crit, priv, type, dev, fmt, ##args)
4811#define netif_err(priv, type, dev, fmt, args...) \
4812 netif_level(err, priv, type, dev, fmt, ##args)
4813#define netif_warn(priv, type, dev, fmt, args...) \
4814 netif_level(warn, priv, type, dev, fmt, ##args)
4815#define netif_notice(priv, type, dev, fmt, args...) \
4816 netif_level(notice, priv, type, dev, fmt, ##args)
4817#define netif_info(priv, type, dev, fmt, args...) \
4818 netif_level(info, priv, type, dev, fmt, ##args)
4819
4820#if defined(CONFIG_DYNAMIC_DEBUG)
4821#define netif_dbg(priv, type, netdev, format, args...) \
4822do { \
4823 if (netif_msg_##type(priv)) \
4824 dynamic_netdev_dbg(netdev, format, ##args); \
4825} while (0)
4826#elif defined(DEBUG)
4827#define netif_dbg(priv, type, dev, format, args...) \
4828 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args)
4829#else
4830#define netif_dbg(priv, type, dev, format, args...) \
4831({ \
4832 if (0) \
4833 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args); \
4834 0; \
4835})
4836#endif
4837
4838
4839#define netif_cond_dbg(priv, type, netdev, cond, level, fmt, args...) \
4840 do { \
4841 if (cond) \
4842 netif_dbg(priv, type, netdev, fmt, ##args); \
4843 else \
4844 netif_ ## level(priv, type, netdev, fmt, ##args); \
4845 } while (0)
4846
4847#if defined(VERBOSE_DEBUG)
4848#define netif_vdbg netif_dbg
4849#else
4850#define netif_vdbg(priv, type, dev, format, args...) \
4851({ \
4852 if (0) \
4853 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args); \
4854 0; \
4855})
4856#endif
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877#define PTYPE_HASH_SIZE (16)
4878#define PTYPE_HASH_MASK (PTYPE_HASH_SIZE - 1)
4879
4880extern struct net_device *blackhole_netdev;
4881
4882#endif
4883