1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#ifndef _LINUX_NETDEVICE_H
26#define _LINUX_NETDEVICE_H
27
28#include <linux/if.h>
29#include <linux/if_ether.h>
30#include <linux/if_packet.h>
31#include <linux/if_link.h>
32
33#ifdef __KERNEL__
34#include <linux/pm_qos.h>
35#include <linux/timer.h>
36#include <linux/delay.h>
37#include <linux/atomic.h>
38#include <asm/cache.h>
39#include <asm/byteorder.h>
40
41#include <linux/device.h>
42#include <linux/percpu.h>
43#include <linux/rculist.h>
44#include <linux/dmaengine.h>
45#include <linux/workqueue.h>
46
47#include <linux/ethtool.h>
48#include <net/net_namespace.h>
49#include <net/dsa.h>
50#ifdef CONFIG_DCB
51#include <net/dcbnl.h>
52#endif
53
54struct vlan_group;
55struct netpoll_info;
56struct phy_device;
57
58struct wireless_dev;
59
60#define SET_ETHTOOL_OPS(netdev,ops) \
61 ( (netdev)->ethtool_ops = (ops) )
62
63
64#define NET_ADDR_PERM 0
65#define NET_ADDR_RANDOM 1
66#define NET_ADDR_STOLEN 2
67
68
69#define NET_RX_SUCCESS 0
70#define NET_RX_DROP 1
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90#define NET_XMIT_SUCCESS 0x00
91#define NET_XMIT_DROP 0x01
92#define NET_XMIT_CN 0x02
93#define NET_XMIT_POLICED 0x03
94#define NET_XMIT_MASK 0x0f
95
96
97
98
99#define net_xmit_eval(e) ((e) == NET_XMIT_CN ? 0 : (e))
100#define net_xmit_errno(e) ((e) != NET_XMIT_CN ? -ENOBUFS : 0)
101
102
103#define NETDEV_TX_MASK 0xf0
104
105enum netdev_tx {
106 __NETDEV_TX_MIN = INT_MIN,
107 NETDEV_TX_OK = 0x00,
108 NETDEV_TX_BUSY = 0x10,
109 NETDEV_TX_LOCKED = 0x20,
110};
111typedef enum netdev_tx netdev_tx_t;
112
113
114
115
116
117static inline bool dev_xmit_complete(int rc)
118{
119
120
121
122
123
124
125 if (likely(rc < NET_XMIT_MASK))
126 return true;
127
128 return false;
129}
130
131#endif
132
133#define MAX_ADDR_LEN 32
134
135
136#define INIT_NETDEV_GROUP 0
137
138#ifdef __KERNEL__
139
140
141
142
143
144#if defined(CONFIG_WLAN) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
145# if defined(CONFIG_MAC80211_MESH)
146# define LL_MAX_HEADER 128
147# else
148# define LL_MAX_HEADER 96
149# endif
150#elif defined(CONFIG_TR) || defined(CONFIG_TR_MODULE)
151# define LL_MAX_HEADER 48
152#else
153# define LL_MAX_HEADER 32
154#endif
155
156#if !defined(CONFIG_NET_IPIP) && !defined(CONFIG_NET_IPIP_MODULE) && \
157 !defined(CONFIG_NET_IPGRE) && !defined(CONFIG_NET_IPGRE_MODULE) && \
158 !defined(CONFIG_IPV6_SIT) && !defined(CONFIG_IPV6_SIT_MODULE) && \
159 !defined(CONFIG_IPV6_TUNNEL) && !defined(CONFIG_IPV6_TUNNEL_MODULE)
160#define MAX_HEADER LL_MAX_HEADER
161#else
162#define MAX_HEADER (LL_MAX_HEADER + 48)
163#endif
164
165
166
167
168
169
170struct net_device_stats {
171 unsigned long rx_packets;
172 unsigned long tx_packets;
173 unsigned long rx_bytes;
174 unsigned long tx_bytes;
175 unsigned long rx_errors;
176 unsigned long tx_errors;
177 unsigned long rx_dropped;
178 unsigned long tx_dropped;
179 unsigned long multicast;
180 unsigned long collisions;
181 unsigned long rx_length_errors;
182 unsigned long rx_over_errors;
183 unsigned long rx_crc_errors;
184 unsigned long rx_frame_errors;
185 unsigned long rx_fifo_errors;
186 unsigned long rx_missed_errors;
187 unsigned long tx_aborted_errors;
188 unsigned long tx_carrier_errors;
189 unsigned long tx_fifo_errors;
190 unsigned long tx_heartbeat_errors;
191 unsigned long tx_window_errors;
192 unsigned long rx_compressed;
193 unsigned long tx_compressed;
194};
195
196#endif
197
198
199
200enum {
201 IF_PORT_UNKNOWN = 0,
202 IF_PORT_10BASE2,
203 IF_PORT_10BASET,
204 IF_PORT_AUI,
205 IF_PORT_100BASET,
206 IF_PORT_100BASETX,
207 IF_PORT_100BASEFX
208};
209
210#ifdef __KERNEL__
211
212#include <linux/cache.h>
213#include <linux/skbuff.h>
214
215struct neighbour;
216struct neigh_parms;
217struct sk_buff;
218
219struct netdev_hw_addr {
220 struct list_head list;
221 unsigned char addr[MAX_ADDR_LEN];
222 unsigned char type;
223#define NETDEV_HW_ADDR_T_LAN 1
224#define NETDEV_HW_ADDR_T_SAN 2
225#define NETDEV_HW_ADDR_T_SLAVE 3
226#define NETDEV_HW_ADDR_T_UNICAST 4
227#define NETDEV_HW_ADDR_T_MULTICAST 5
228 bool synced;
229 bool global_use;
230 int refcount;
231 struct rcu_head rcu_head;
232};
233
234struct netdev_hw_addr_list {
235 struct list_head list;
236 int count;
237};
238
239#define netdev_hw_addr_list_count(l) ((l)->count)
240#define netdev_hw_addr_list_empty(l) (netdev_hw_addr_list_count(l) == 0)
241#define netdev_hw_addr_list_for_each(ha, l) \
242 list_for_each_entry(ha, &(l)->list, list)
243
244#define netdev_uc_count(dev) netdev_hw_addr_list_count(&(dev)->uc)
245#define netdev_uc_empty(dev) netdev_hw_addr_list_empty(&(dev)->uc)
246#define netdev_for_each_uc_addr(ha, dev) \
247 netdev_hw_addr_list_for_each(ha, &(dev)->uc)
248
249#define netdev_mc_count(dev) netdev_hw_addr_list_count(&(dev)->mc)
250#define netdev_mc_empty(dev) netdev_hw_addr_list_empty(&(dev)->mc)
251#define netdev_for_each_mc_addr(ha, dev) \
252 netdev_hw_addr_list_for_each(ha, &(dev)->mc)
253
254struct hh_cache {
255 u16 hh_len;
256 u16 __pad;
257 seqlock_t hh_lock;
258
259
260#define HH_DATA_MOD 16
261#define HH_DATA_OFF(__len) \
262 (HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))
263#define HH_DATA_ALIGN(__len) \
264 (((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))
265 unsigned long hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];
266};
267
268
269
270
271
272
273
274
275
276
277
278
279#define LL_RESERVED_SPACE(dev) \
280 ((((dev)->hard_header_len+(dev)->needed_headroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
281#define LL_RESERVED_SPACE_EXTRA(dev,extra) \
282 ((((dev)->hard_header_len+(dev)->needed_headroom+(extra))&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
283#define LL_ALLOCATED_SPACE(dev) \
284 ((((dev)->hard_header_len+(dev)->needed_headroom+(dev)->needed_tailroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
285
286struct header_ops {
287 int (*create) (struct sk_buff *skb, struct net_device *dev,
288 unsigned short type, const void *daddr,
289 const void *saddr, unsigned len);
290 int (*parse)(const struct sk_buff *skb, unsigned char *haddr);
291 int (*rebuild)(struct sk_buff *skb);
292 int (*cache)(const struct neighbour *neigh, struct hh_cache *hh, __be16 type);
293 void (*cache_update)(struct hh_cache *hh,
294 const struct net_device *dev,
295 const unsigned char *haddr);
296};
297
298
299
300
301
302
303enum netdev_state_t {
304 __LINK_STATE_START,
305 __LINK_STATE_PRESENT,
306 __LINK_STATE_NOCARRIER,
307 __LINK_STATE_LINKWATCH_PENDING,
308 __LINK_STATE_DORMANT,
309};
310
311
312
313
314
315
316struct netdev_boot_setup {
317 char name[IFNAMSIZ];
318 struct ifmap map;
319};
320#define NETDEV_BOOT_SETUP_MAX 8
321
322extern int __init netdev_boot_setup(char *str);
323
324
325
326
327struct napi_struct {
328
329
330
331
332
333
334 struct list_head poll_list;
335
336 unsigned long state;
337 int weight;
338 int (*poll)(struct napi_struct *, int);
339#ifdef CONFIG_NETPOLL
340 spinlock_t poll_lock;
341 int poll_owner;
342#endif
343
344 unsigned int gro_count;
345
346 struct net_device *dev;
347 struct list_head dev_list;
348 struct sk_buff *gro_list;
349 struct sk_buff *skb;
350};
351
352enum {
353 NAPI_STATE_SCHED,
354 NAPI_STATE_DISABLE,
355 NAPI_STATE_NPSVC,
356};
357
358enum gro_result {
359 GRO_MERGED,
360 GRO_MERGED_FREE,
361 GRO_HELD,
362 GRO_NORMAL,
363 GRO_DROP,
364};
365typedef enum gro_result gro_result_t;
366
367
368
369
370
371
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
408enum rx_handler_result {
409 RX_HANDLER_CONSUMED,
410 RX_HANDLER_ANOTHER,
411 RX_HANDLER_EXACT,
412 RX_HANDLER_PASS,
413};
414typedef enum rx_handler_result rx_handler_result_t;
415typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);
416
417extern void __napi_schedule(struct napi_struct *n);
418
419static inline int napi_disable_pending(struct napi_struct *n)
420{
421 return test_bit(NAPI_STATE_DISABLE, &n->state);
422}
423
424
425
426
427
428
429
430
431
432
433static inline int napi_schedule_prep(struct napi_struct *n)
434{
435 return !napi_disable_pending(n) &&
436 !test_and_set_bit(NAPI_STATE_SCHED, &n->state);
437}
438
439
440
441
442
443
444
445
446static inline void napi_schedule(struct napi_struct *n)
447{
448 if (napi_schedule_prep(n))
449 __napi_schedule(n);
450}
451
452
453static inline int napi_reschedule(struct napi_struct *napi)
454{
455 if (napi_schedule_prep(napi)) {
456 __napi_schedule(napi);
457 return 1;
458 }
459 return 0;
460}
461
462
463
464
465
466
467
468extern void __napi_complete(struct napi_struct *n);
469extern void napi_complete(struct napi_struct *n);
470
471
472
473
474
475
476
477
478static inline void napi_disable(struct napi_struct *n)
479{
480 set_bit(NAPI_STATE_DISABLE, &n->state);
481 while (test_and_set_bit(NAPI_STATE_SCHED, &n->state))
482 msleep(1);
483 clear_bit(NAPI_STATE_DISABLE, &n->state);
484}
485
486
487
488
489
490
491
492
493static inline void napi_enable(struct napi_struct *n)
494{
495 BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
496 smp_mb__before_clear_bit();
497 clear_bit(NAPI_STATE_SCHED, &n->state);
498}
499
500#ifdef CONFIG_SMP
501
502
503
504
505
506
507
508
509static inline void napi_synchronize(const struct napi_struct *n)
510{
511 while (test_bit(NAPI_STATE_SCHED, &n->state))
512 msleep(1);
513}
514#else
515# define napi_synchronize(n) barrier()
516#endif
517
518enum netdev_queue_state_t {
519 __QUEUE_STATE_XOFF,
520 __QUEUE_STATE_FROZEN,
521#define QUEUE_STATE_XOFF_OR_FROZEN ((1 << __QUEUE_STATE_XOFF) | \
522 (1 << __QUEUE_STATE_FROZEN))
523};
524
525struct netdev_queue {
526
527
528
529 struct net_device *dev;
530 struct Qdisc *qdisc;
531 unsigned long state;
532 struct Qdisc *qdisc_sleeping;
533#if defined(CONFIG_RPS) || defined(CONFIG_XPS)
534 struct kobject kobj;
535#endif
536#if defined(CONFIG_XPS) && defined(CONFIG_NUMA)
537 int numa_node;
538#endif
539
540
541
542 spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
543 int xmit_lock_owner;
544
545
546
547 unsigned long trans_start;
548} ____cacheline_aligned_in_smp;
549
550static inline int netdev_queue_numa_node_read(const struct netdev_queue *q)
551{
552#if defined(CONFIG_XPS) && defined(CONFIG_NUMA)
553 return q->numa_node;
554#else
555 return NUMA_NO_NODE;
556#endif
557}
558
559static inline void netdev_queue_numa_node_write(struct netdev_queue *q, int node)
560{
561#if defined(CONFIG_XPS) && defined(CONFIG_NUMA)
562 q->numa_node = node;
563#endif
564}
565
566#ifdef CONFIG_RPS
567
568
569
570
571struct rps_map {
572 unsigned int len;
573 struct rcu_head rcu;
574 u16 cpus[0];
575};
576#define RPS_MAP_SIZE(_num) (sizeof(struct rps_map) + (_num * sizeof(u16)))
577
578
579
580
581
582
583struct rps_dev_flow {
584 u16 cpu;
585 u16 filter;
586 unsigned int last_qtail;
587};
588#define RPS_NO_FILTER 0xffff
589
590
591
592
593struct rps_dev_flow_table {
594 unsigned int mask;
595 struct rcu_head rcu;
596 struct work_struct free_work;
597 struct rps_dev_flow flows[0];
598};
599#define RPS_DEV_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_dev_flow_table) + \
600 (_num * sizeof(struct rps_dev_flow)))
601
602
603
604
605
606struct rps_sock_flow_table {
607 unsigned int mask;
608 u16 ents[0];
609};
610#define RPS_SOCK_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_sock_flow_table) + \
611 (_num * sizeof(u16)))
612
613#define RPS_NO_CPU 0xffff
614
615static inline void rps_record_sock_flow(struct rps_sock_flow_table *table,
616 u32 hash)
617{
618 if (table && hash) {
619 unsigned int cpu, index = hash & table->mask;
620
621
622 cpu = raw_smp_processor_id();
623
624 if (table->ents[index] != cpu)
625 table->ents[index] = cpu;
626 }
627}
628
629static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table,
630 u32 hash)
631{
632 if (table && hash)
633 table->ents[hash & table->mask] = RPS_NO_CPU;
634}
635
636extern struct rps_sock_flow_table __rcu *rps_sock_flow_table;
637
638#ifdef CONFIG_RFS_ACCEL
639extern bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index,
640 u32 flow_id, u16 filter_id);
641#endif
642
643
644struct netdev_rx_queue {
645 struct rps_map __rcu *rps_map;
646 struct rps_dev_flow_table __rcu *rps_flow_table;
647 struct kobject kobj;
648 struct net_device *dev;
649} ____cacheline_aligned_in_smp;
650#endif
651
652#ifdef CONFIG_XPS
653
654
655
656
657struct xps_map {
658 unsigned int len;
659 unsigned int alloc_len;
660 struct rcu_head rcu;
661 u16 queues[0];
662};
663#define XPS_MAP_SIZE(_num) (sizeof(struct xps_map) + (_num * sizeof(u16)))
664#define XPS_MIN_MAP_ALLOC ((L1_CACHE_BYTES - sizeof(struct xps_map)) \
665 / sizeof(u16))
666
667
668
669
670struct xps_dev_maps {
671 struct rcu_head rcu;
672 struct xps_map __rcu *cpu_map[0];
673};
674#define XPS_DEV_MAPS_SIZE (sizeof(struct xps_dev_maps) + \
675 (nr_cpu_ids * sizeof(struct xps_map *)))
676#endif
677
678#define TC_MAX_QUEUE 16
679#define TC_BITMASK 15
680
681struct netdev_tc_txq {
682 u16 count;
683 u16 offset;
684};
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859struct net_device_ops {
860 int (*ndo_init)(struct net_device *dev);
861 void (*ndo_uninit)(struct net_device *dev);
862 int (*ndo_open)(struct net_device *dev);
863 int (*ndo_stop)(struct net_device *dev);
864 netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb,
865 struct net_device *dev);
866 u16 (*ndo_select_queue)(struct net_device *dev,
867 struct sk_buff *skb);
868 void (*ndo_change_rx_flags)(struct net_device *dev,
869 int flags);
870 void (*ndo_set_rx_mode)(struct net_device *dev);
871 int (*ndo_set_mac_address)(struct net_device *dev,
872 void *addr);
873 int (*ndo_validate_addr)(struct net_device *dev);
874 int (*ndo_do_ioctl)(struct net_device *dev,
875 struct ifreq *ifr, int cmd);
876 int (*ndo_set_config)(struct net_device *dev,
877 struct ifmap *map);
878 int (*ndo_change_mtu)(struct net_device *dev,
879 int new_mtu);
880 int (*ndo_neigh_setup)(struct net_device *dev,
881 struct neigh_parms *);
882 void (*ndo_tx_timeout) (struct net_device *dev);
883
884 struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev,
885 struct rtnl_link_stats64 *storage);
886 struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
887
888 void (*ndo_vlan_rx_add_vid)(struct net_device *dev,
889 unsigned short vid);
890 void (*ndo_vlan_rx_kill_vid)(struct net_device *dev,
891 unsigned short vid);
892#ifdef CONFIG_NET_POLL_CONTROLLER
893 void (*ndo_poll_controller)(struct net_device *dev);
894 int (*ndo_netpoll_setup)(struct net_device *dev,
895 struct netpoll_info *info);
896 void (*ndo_netpoll_cleanup)(struct net_device *dev);
897#endif
898 int (*ndo_set_vf_mac)(struct net_device *dev,
899 int queue, u8 *mac);
900 int (*ndo_set_vf_vlan)(struct net_device *dev,
901 int queue, u16 vlan, u8 qos);
902 int (*ndo_set_vf_tx_rate)(struct net_device *dev,
903 int vf, int rate);
904 int (*ndo_set_vf_spoofchk)(struct net_device *dev,
905 int vf, bool setting);
906 int (*ndo_get_vf_config)(struct net_device *dev,
907 int vf,
908 struct ifla_vf_info *ivf);
909 int (*ndo_set_vf_port)(struct net_device *dev,
910 int vf,
911 struct nlattr *port[]);
912 int (*ndo_get_vf_port)(struct net_device *dev,
913 int vf, struct sk_buff *skb);
914 int (*ndo_setup_tc)(struct net_device *dev, u8 tc);
915#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
916 int (*ndo_fcoe_enable)(struct net_device *dev);
917 int (*ndo_fcoe_disable)(struct net_device *dev);
918 int (*ndo_fcoe_ddp_setup)(struct net_device *dev,
919 u16 xid,
920 struct scatterlist *sgl,
921 unsigned int sgc);
922 int (*ndo_fcoe_ddp_done)(struct net_device *dev,
923 u16 xid);
924 int (*ndo_fcoe_ddp_target)(struct net_device *dev,
925 u16 xid,
926 struct scatterlist *sgl,
927 unsigned int sgc);
928#endif
929
930#if defined(CONFIG_LIBFCOE) || defined(CONFIG_LIBFCOE_MODULE)
931#define NETDEV_FCOE_WWNN 0
932#define NETDEV_FCOE_WWPN 1
933 int (*ndo_fcoe_get_wwn)(struct net_device *dev,
934 u64 *wwn, int type);
935#endif
936
937#ifdef CONFIG_RFS_ACCEL
938 int (*ndo_rx_flow_steer)(struct net_device *dev,
939 const struct sk_buff *skb,
940 u16 rxq_index,
941 u32 flow_id);
942#endif
943 int (*ndo_add_slave)(struct net_device *dev,
944 struct net_device *slave_dev);
945 int (*ndo_del_slave)(struct net_device *dev,
946 struct net_device *slave_dev);
947 u32 (*ndo_fix_features)(struct net_device *dev,
948 u32 features);
949 int (*ndo_set_features)(struct net_device *dev,
950 u32 features);
951};
952
953
954
955
956
957
958
959
960
961
962
963struct net_device {
964
965
966
967
968
969
970 char name[IFNAMSIZ];
971
972 struct pm_qos_request pm_qos_req;
973
974
975 struct hlist_node name_hlist;
976
977 char *ifalias;
978
979
980
981
982
983 unsigned long mem_end;
984 unsigned long mem_start;
985 unsigned long base_addr;
986 unsigned int irq;
987
988
989
990
991
992
993 unsigned long state;
994
995 struct list_head dev_list;
996 struct list_head napi_list;
997 struct list_head unreg_list;
998
999
1000 u32 features;
1001
1002 u32 hw_features;
1003
1004 u32 wanted_features;
1005
1006 u32 vlan_features;
1007
1008
1009
1010
1011#define NETIF_F_SG 1
1012#define NETIF_F_IP_CSUM 2
1013#define NETIF_F_NO_CSUM 4
1014#define NETIF_F_HW_CSUM 8
1015#define NETIF_F_IPV6_CSUM 16
1016#define NETIF_F_HIGHDMA 32
1017#define NETIF_F_FRAGLIST 64
1018#define NETIF_F_HW_VLAN_TX 128
1019#define NETIF_F_HW_VLAN_RX 256
1020#define NETIF_F_HW_VLAN_FILTER 512
1021#define NETIF_F_VLAN_CHALLENGED 1024
1022#define NETIF_F_GSO 2048
1023#define NETIF_F_LLTX 4096
1024
1025#define NETIF_F_NETNS_LOCAL 8192
1026#define NETIF_F_GRO 16384
1027#define NETIF_F_LRO 32768
1028
1029
1030#define NETIF_F_FCOE_CRC (1 << 24)
1031#define NETIF_F_SCTP_CSUM (1 << 25)
1032#define NETIF_F_FCOE_MTU (1 << 26)
1033#define NETIF_F_NTUPLE (1 << 27)
1034#define NETIF_F_RXHASH (1 << 28)
1035#define NETIF_F_RXCSUM (1 << 29)
1036#define NETIF_F_NOCACHE_COPY (1 << 30)
1037#define NETIF_F_LOOPBACK (1 << 31)
1038
1039
1040#define NETIF_F_GSO_SHIFT 16
1041#define NETIF_F_GSO_MASK 0x00ff0000
1042#define NETIF_F_TSO (SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT)
1043#define NETIF_F_UFO (SKB_GSO_UDP << NETIF_F_GSO_SHIFT)
1044#define NETIF_F_GSO_ROBUST (SKB_GSO_DODGY << NETIF_F_GSO_SHIFT)
1045#define NETIF_F_TSO_ECN (SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT)
1046#define NETIF_F_TSO6 (SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT)
1047#define NETIF_F_FSO (SKB_GSO_FCOE << NETIF_F_GSO_SHIFT)
1048
1049
1050
1051#define NETIF_F_NEVER_CHANGE (NETIF_F_VLAN_CHALLENGED | \
1052 NETIF_F_LLTX | NETIF_F_NETNS_LOCAL)
1053#define NETIF_F_ETHTOOL_BITS (0xff3fffff & ~NETIF_F_NEVER_CHANGE)
1054
1055
1056#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | \
1057 NETIF_F_TSO6 | NETIF_F_UFO)
1058
1059
1060#define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM)
1061#define NETIF_F_V4_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IP_CSUM)
1062#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
1063#define NETIF_F_ALL_CSUM (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
1064
1065#define NETIF_F_ALL_TSO (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
1066
1067#define NETIF_F_ALL_FCOE (NETIF_F_FCOE_CRC | NETIF_F_FCOE_MTU | \
1068 NETIF_F_FSO)
1069
1070
1071
1072
1073
1074#define NETIF_F_ONE_FOR_ALL (NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ROBUST | \
1075 NETIF_F_SG | NETIF_F_HIGHDMA | \
1076 NETIF_F_FRAGLIST | NETIF_F_VLAN_CHALLENGED)
1077
1078
1079
1080
1081#define NETIF_F_ALL_FOR_ALL (NETIF_F_NOCACHE_COPY | NETIF_F_FSO)
1082
1083
1084#define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO)
1085
1086
1087 int ifindex;
1088 int iflink;
1089
1090 struct net_device_stats stats;
1091 atomic_long_t rx_dropped;
1092
1093
1094
1095#ifdef CONFIG_WIRELESS_EXT
1096
1097
1098 const struct iw_handler_def * wireless_handlers;
1099
1100 struct iw_public_data * wireless_data;
1101#endif
1102
1103 const struct net_device_ops *netdev_ops;
1104 const struct ethtool_ops *ethtool_ops;
1105
1106
1107 const struct header_ops *header_ops;
1108
1109 unsigned int flags;
1110 unsigned int priv_flags;
1111 unsigned short gflags;
1112 unsigned short padded;
1113
1114 unsigned char operstate;
1115 unsigned char link_mode;
1116
1117 unsigned char if_port;
1118 unsigned char dma;
1119
1120 unsigned int mtu;
1121 unsigned short type;
1122 unsigned short hard_header_len;
1123
1124
1125
1126
1127
1128 unsigned short needed_headroom;
1129 unsigned short needed_tailroom;
1130
1131
1132 unsigned char perm_addr[MAX_ADDR_LEN];
1133 unsigned char addr_assign_type;
1134 unsigned char addr_len;
1135 unsigned short dev_id;
1136
1137 spinlock_t addr_list_lock;
1138 struct netdev_hw_addr_list uc;
1139 struct netdev_hw_addr_list mc;
1140 bool uc_promisc;
1141 unsigned int promiscuity;
1142 unsigned int allmulti;
1143
1144
1145
1146
1147#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
1148 struct vlan_group __rcu *vlgrp;
1149#endif
1150#ifdef CONFIG_NET_DSA
1151 void *dsa_ptr;
1152#endif
1153 void *atalk_ptr;
1154 struct in_device __rcu *ip_ptr;
1155 struct dn_dev __rcu *dn_ptr;
1156 struct inet6_dev __rcu *ip6_ptr;
1157 void *ec_ptr;
1158 void *ax25_ptr;
1159 struct wireless_dev *ieee80211_ptr;
1160
1161
1162
1163
1164
1165 unsigned long last_rx;
1166
1167
1168
1169
1170
1171
1172
1173 struct net_device *master;
1174
1175
1176
1177
1178 unsigned char *dev_addr;
1179
1180
1181
1182 struct netdev_hw_addr_list dev_addrs;
1183
1184
1185 unsigned char broadcast[MAX_ADDR_LEN];
1186
1187#if defined(CONFIG_RPS) || defined(CONFIG_XPS)
1188 struct kset *queues_kset;
1189
1190 struct netdev_rx_queue *_rx;
1191
1192
1193 unsigned int num_rx_queues;
1194
1195
1196 unsigned int real_num_rx_queues;
1197
1198#ifdef CONFIG_RFS_ACCEL
1199
1200
1201
1202 struct cpu_rmap *rx_cpu_rmap;
1203#endif
1204#endif
1205
1206 rx_handler_func_t __rcu *rx_handler;
1207 void __rcu *rx_handler_data;
1208
1209 struct netdev_queue __rcu *ingress_queue;
1210
1211
1212
1213
1214 struct netdev_queue *_tx ____cacheline_aligned_in_smp;
1215
1216
1217 unsigned int num_tx_queues;
1218
1219
1220 unsigned int real_num_tx_queues;
1221
1222
1223 struct Qdisc *qdisc;
1224
1225 unsigned long tx_queue_len;
1226 spinlock_t tx_global_lock;
1227
1228#ifdef CONFIG_XPS
1229 struct xps_dev_maps __rcu *xps_maps;
1230#endif
1231
1232
1233
1234
1235
1236
1237
1238 unsigned long trans_start;
1239
1240 int watchdog_timeo;
1241 struct timer_list watchdog_timer;
1242
1243
1244 int __percpu *pcpu_refcnt;
1245
1246
1247 struct list_head todo_list;
1248
1249 struct hlist_node index_hlist;
1250
1251 struct list_head link_watch_list;
1252
1253
1254 enum { NETREG_UNINITIALIZED=0,
1255 NETREG_REGISTERED,
1256 NETREG_UNREGISTERING,
1257 NETREG_UNREGISTERED,
1258 NETREG_RELEASED,
1259 NETREG_DUMMY,
1260 } reg_state:8;
1261
1262 bool dismantle;
1263
1264 enum {
1265 RTNL_LINK_INITIALIZED,
1266 RTNL_LINK_INITIALIZING,
1267 } rtnl_link_state:16;
1268
1269
1270 void (*destructor)(struct net_device *dev);
1271
1272#ifdef CONFIG_NETPOLL
1273 struct netpoll_info *npinfo;
1274#endif
1275
1276#ifdef CONFIG_NET_NS
1277
1278 struct net *nd_net;
1279#endif
1280
1281
1282 union {
1283 void *ml_priv;
1284 struct pcpu_lstats __percpu *lstats;
1285 struct pcpu_tstats __percpu *tstats;
1286 struct pcpu_dstats __percpu *dstats;
1287 };
1288
1289 struct garp_port __rcu *garp_port;
1290
1291
1292 struct device dev;
1293
1294 const struct attribute_group *sysfs_groups[4];
1295
1296
1297 const struct rtnl_link_ops *rtnl_link_ops;
1298
1299
1300#define GSO_MAX_SIZE 65536
1301 unsigned int gso_max_size;
1302
1303#ifdef CONFIG_DCB
1304
1305 const struct dcbnl_rtnl_ops *dcbnl_ops;
1306#endif
1307 u8 num_tc;
1308 struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE];
1309 u8 prio_tc_map[TC_BITMASK + 1];
1310
1311#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
1312
1313 unsigned int fcoe_ddp_xid;
1314#endif
1315
1316 struct phy_device *phydev;
1317
1318
1319 int group;
1320};
1321#define to_net_dev(d) container_of(d, struct net_device, dev)
1322
1323#define NETDEV_ALIGN 32
1324
1325static inline
1326int netdev_get_prio_tc_map(const struct net_device *dev, u32 prio)
1327{
1328 return dev->prio_tc_map[prio & TC_BITMASK];
1329}
1330
1331static inline
1332int netdev_set_prio_tc_map(struct net_device *dev, u8 prio, u8 tc)
1333{
1334 if (tc >= dev->num_tc)
1335 return -EINVAL;
1336
1337 dev->prio_tc_map[prio & TC_BITMASK] = tc & TC_BITMASK;
1338 return 0;
1339}
1340
1341static inline
1342void netdev_reset_tc(struct net_device *dev)
1343{
1344 dev->num_tc = 0;
1345 memset(dev->tc_to_txq, 0, sizeof(dev->tc_to_txq));
1346 memset(dev->prio_tc_map, 0, sizeof(dev->prio_tc_map));
1347}
1348
1349static inline
1350int netdev_set_tc_queue(struct net_device *dev, u8 tc, u16 count, u16 offset)
1351{
1352 if (tc >= dev->num_tc)
1353 return -EINVAL;
1354
1355 dev->tc_to_txq[tc].count = count;
1356 dev->tc_to_txq[tc].offset = offset;
1357 return 0;
1358}
1359
1360static inline
1361int netdev_set_num_tc(struct net_device *dev, u8 num_tc)
1362{
1363 if (num_tc > TC_MAX_QUEUE)
1364 return -EINVAL;
1365
1366 dev->num_tc = num_tc;
1367 return 0;
1368}
1369
1370static inline
1371int netdev_get_num_tc(struct net_device *dev)
1372{
1373 return dev->num_tc;
1374}
1375
1376static inline
1377struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,
1378 unsigned int index)
1379{
1380 return &dev->_tx[index];
1381}
1382
1383static inline void netdev_for_each_tx_queue(struct net_device *dev,
1384 void (*f)(struct net_device *,
1385 struct netdev_queue *,
1386 void *),
1387 void *arg)
1388{
1389 unsigned int i;
1390
1391 for (i = 0; i < dev->num_tx_queues; i++)
1392 f(dev, &dev->_tx[i], arg);
1393}
1394
1395
1396
1397
1398static inline
1399struct net *dev_net(const struct net_device *dev)
1400{
1401 return read_pnet(&dev->nd_net);
1402}
1403
1404static inline
1405void dev_net_set(struct net_device *dev, struct net *net)
1406{
1407#ifdef CONFIG_NET_NS
1408 release_net(dev->nd_net);
1409 dev->nd_net = hold_net(net);
1410#endif
1411}
1412
1413static inline bool netdev_uses_dsa_tags(struct net_device *dev)
1414{
1415#ifdef CONFIG_NET_DSA_TAG_DSA
1416 if (dev->dsa_ptr != NULL)
1417 return dsa_uses_dsa_tags(dev->dsa_ptr);
1418#endif
1419
1420 return 0;
1421}
1422
1423#ifndef CONFIG_NET_NS
1424static inline void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
1425{
1426 skb->dev = dev;
1427}
1428#else
1429void skb_set_dev(struct sk_buff *skb, struct net_device *dev);
1430#endif
1431
1432static inline bool netdev_uses_trailer_tags(struct net_device *dev)
1433{
1434#ifdef CONFIG_NET_DSA_TAG_TRAILER
1435 if (dev->dsa_ptr != NULL)
1436 return dsa_uses_trailer_tags(dev->dsa_ptr);
1437#endif
1438
1439 return 0;
1440}
1441
1442
1443
1444
1445
1446
1447
1448static inline void *netdev_priv(const struct net_device *dev)
1449{
1450 return (char *)dev + ALIGN(sizeof(struct net_device), NETDEV_ALIGN);
1451}
1452
1453
1454
1455
1456#define SET_NETDEV_DEV(net, pdev) ((net)->dev.parent = (pdev))
1457
1458
1459
1460
1461
1462#define SET_NETDEV_DEVTYPE(net, devtype) ((net)->dev.type = (devtype))
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
1475 int (*poll)(struct napi_struct *, int), int weight);
1476
1477
1478
1479
1480
1481
1482
1483void netif_napi_del(struct napi_struct *napi);
1484
1485struct napi_gro_cb {
1486
1487 void *frag0;
1488
1489
1490 unsigned int frag0_len;
1491
1492
1493 int data_offset;
1494
1495
1496 int same_flow;
1497
1498
1499 int flush;
1500
1501
1502 int count;
1503
1504
1505 int free;
1506};
1507
1508#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb)
1509
1510struct packet_type {
1511 __be16 type;
1512 struct net_device *dev;
1513 int (*func) (struct sk_buff *,
1514 struct net_device *,
1515 struct packet_type *,
1516 struct net_device *);
1517 struct sk_buff *(*gso_segment)(struct sk_buff *skb,
1518 u32 features);
1519 int (*gso_send_check)(struct sk_buff *skb);
1520 struct sk_buff **(*gro_receive)(struct sk_buff **head,
1521 struct sk_buff *skb);
1522 int (*gro_complete)(struct sk_buff *skb);
1523 void *af_packet_priv;
1524 struct list_head list;
1525};
1526
1527#include <linux/notifier.h>
1528
1529
1530
1531
1532
1533#define NETDEV_UP 0x0001
1534#define NETDEV_DOWN 0x0002
1535#define NETDEV_REBOOT 0x0003
1536
1537
1538
1539#define NETDEV_CHANGE 0x0004
1540#define NETDEV_REGISTER 0x0005
1541#define NETDEV_UNREGISTER 0x0006
1542#define NETDEV_CHANGEMTU 0x0007
1543#define NETDEV_CHANGEADDR 0x0008
1544#define NETDEV_GOING_DOWN 0x0009
1545#define NETDEV_CHANGENAME 0x000A
1546#define NETDEV_FEAT_CHANGE 0x000B
1547#define NETDEV_BONDING_FAILOVER 0x000C
1548#define NETDEV_PRE_UP 0x000D
1549#define NETDEV_PRE_TYPE_CHANGE 0x000E
1550#define NETDEV_POST_TYPE_CHANGE 0x000F
1551#define NETDEV_POST_INIT 0x0010
1552#define NETDEV_UNREGISTER_BATCH 0x0011
1553#define NETDEV_RELEASE 0x0012
1554#define NETDEV_NOTIFY_PEERS 0x0013
1555#define NETDEV_JOIN 0x0014
1556
1557extern int register_netdevice_notifier(struct notifier_block *nb);
1558extern int unregister_netdevice_notifier(struct notifier_block *nb);
1559extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
1560
1561
1562extern rwlock_t dev_base_lock;
1563
1564
1565#define for_each_netdev(net, d) \
1566 list_for_each_entry(d, &(net)->dev_base_head, dev_list)
1567#define for_each_netdev_reverse(net, d) \
1568 list_for_each_entry_reverse(d, &(net)->dev_base_head, dev_list)
1569#define for_each_netdev_rcu(net, d) \
1570 list_for_each_entry_rcu(d, &(net)->dev_base_head, dev_list)
1571#define for_each_netdev_safe(net, d, n) \
1572 list_for_each_entry_safe(d, n, &(net)->dev_base_head, dev_list)
1573#define for_each_netdev_continue(net, d) \
1574 list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
1575#define for_each_netdev_continue_rcu(net, d) \
1576 list_for_each_entry_continue_rcu(d, &(net)->dev_base_head, dev_list)
1577#define net_device_entry(lh) list_entry(lh, struct net_device, dev_list)
1578
1579static inline struct net_device *next_net_device(struct net_device *dev)
1580{
1581 struct list_head *lh;
1582 struct net *net;
1583
1584 net = dev_net(dev);
1585 lh = dev->dev_list.next;
1586 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1587}
1588
1589static inline struct net_device *next_net_device_rcu(struct net_device *dev)
1590{
1591 struct list_head *lh;
1592 struct net *net;
1593
1594 net = dev_net(dev);
1595 lh = rcu_dereference(list_next_rcu(&dev->dev_list));
1596 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1597}
1598
1599static inline struct net_device *first_net_device(struct net *net)
1600{
1601 return list_empty(&net->dev_base_head) ? NULL :
1602 net_device_entry(net->dev_base_head.next);
1603}
1604
1605static inline struct net_device *first_net_device_rcu(struct net *net)
1606{
1607 struct list_head *lh = rcu_dereference(list_next_rcu(&net->dev_base_head));
1608
1609 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1610}
1611
1612extern int netdev_boot_setup_check(struct net_device *dev);
1613extern unsigned long netdev_boot_base(const char *prefix, int unit);
1614extern struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
1615 const char *hwaddr);
1616extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
1617extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
1618extern void dev_add_pack(struct packet_type *pt);
1619extern void dev_remove_pack(struct packet_type *pt);
1620extern void __dev_remove_pack(struct packet_type *pt);
1621
1622extern struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short flags,
1623 unsigned short mask);
1624extern struct net_device *dev_get_by_name(struct net *net, const char *name);
1625extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
1626extern struct net_device *__dev_get_by_name(struct net *net, const char *name);
1627extern int dev_alloc_name(struct net_device *dev, const char *name);
1628extern int dev_open(struct net_device *dev);
1629extern int dev_close(struct net_device *dev);
1630extern void dev_disable_lro(struct net_device *dev);
1631extern int dev_queue_xmit(struct sk_buff *skb);
1632extern int register_netdevice(struct net_device *dev);
1633extern void unregister_netdevice_queue(struct net_device *dev,
1634 struct list_head *head);
1635extern void unregister_netdevice_many(struct list_head *head);
1636static inline void unregister_netdevice(struct net_device *dev)
1637{
1638 unregister_netdevice_queue(dev, NULL);
1639}
1640
1641extern int netdev_refcnt_read(const struct net_device *dev);
1642extern void free_netdev(struct net_device *dev);
1643extern void synchronize_net(void);
1644extern int init_dummy_netdev(struct net_device *dev);
1645extern void netdev_resync_ops(struct net_device *dev);
1646
1647extern struct net_device *dev_get_by_index(struct net *net, int ifindex);
1648extern struct net_device *__dev_get_by_index(struct net *net, int ifindex);
1649extern struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
1650extern int dev_restart(struct net_device *dev);
1651#ifdef CONFIG_NETPOLL_TRAP
1652extern int netpoll_trap(void);
1653#endif
1654extern int skb_gro_receive(struct sk_buff **head,
1655 struct sk_buff *skb);
1656extern void skb_gro_reset_offset(struct sk_buff *skb);
1657
1658static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
1659{
1660 return NAPI_GRO_CB(skb)->data_offset;
1661}
1662
1663static inline unsigned int skb_gro_len(const struct sk_buff *skb)
1664{
1665 return skb->len - NAPI_GRO_CB(skb)->data_offset;
1666}
1667
1668static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len)
1669{
1670 NAPI_GRO_CB(skb)->data_offset += len;
1671}
1672
1673static inline void *skb_gro_header_fast(struct sk_buff *skb,
1674 unsigned int offset)
1675{
1676 return NAPI_GRO_CB(skb)->frag0 + offset;
1677}
1678
1679static inline int skb_gro_header_hard(struct sk_buff *skb, unsigned int hlen)
1680{
1681 return NAPI_GRO_CB(skb)->frag0_len < hlen;
1682}
1683
1684static inline void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen,
1685 unsigned int offset)
1686{
1687 if (!pskb_may_pull(skb, hlen))
1688 return NULL;
1689
1690 NAPI_GRO_CB(skb)->frag0 = NULL;
1691 NAPI_GRO_CB(skb)->frag0_len = 0;
1692 return skb->data + offset;
1693}
1694
1695static inline void *skb_gro_mac_header(struct sk_buff *skb)
1696{
1697 return NAPI_GRO_CB(skb)->frag0 ?: skb_mac_header(skb);
1698}
1699
1700static inline void *skb_gro_network_header(struct sk_buff *skb)
1701{
1702 return (NAPI_GRO_CB(skb)->frag0 ?: skb->data) +
1703 skb_network_offset(skb);
1704}
1705
1706static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
1707 unsigned short type,
1708 const void *daddr, const void *saddr,
1709 unsigned len)
1710{
1711 if (!dev->header_ops || !dev->header_ops->create)
1712 return 0;
1713
1714 return dev->header_ops->create(skb, dev, type, daddr, saddr, len);
1715}
1716
1717static inline int dev_parse_header(const struct sk_buff *skb,
1718 unsigned char *haddr)
1719{
1720 const struct net_device *dev = skb->dev;
1721
1722 if (!dev->header_ops || !dev->header_ops->parse)
1723 return 0;
1724 return dev->header_ops->parse(skb, haddr);
1725}
1726
1727typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
1728extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
1729static inline int unregister_gifconf(unsigned int family)
1730{
1731 return register_gifconf(family, NULL);
1732}
1733
1734
1735
1736
1737struct softnet_data {
1738 struct Qdisc *output_queue;
1739 struct Qdisc **output_queue_tailp;
1740 struct list_head poll_list;
1741 struct sk_buff *completion_queue;
1742 struct sk_buff_head process_queue;
1743
1744
1745 unsigned int processed;
1746 unsigned int time_squeeze;
1747 unsigned int cpu_collision;
1748 unsigned int received_rps;
1749
1750#ifdef CONFIG_RPS
1751 struct softnet_data *rps_ipi_list;
1752
1753
1754 struct call_single_data csd ____cacheline_aligned_in_smp;
1755 struct softnet_data *rps_ipi_next;
1756 unsigned int cpu;
1757 unsigned int input_queue_head;
1758 unsigned int input_queue_tail;
1759#endif
1760 unsigned dropped;
1761 struct sk_buff_head input_pkt_queue;
1762 struct napi_struct backlog;
1763};
1764
1765static inline void input_queue_head_incr(struct softnet_data *sd)
1766{
1767#ifdef CONFIG_RPS
1768 sd->input_queue_head++;
1769#endif
1770}
1771
1772static inline void input_queue_tail_incr_save(struct softnet_data *sd,
1773 unsigned int *qtail)
1774{
1775#ifdef CONFIG_RPS
1776 *qtail = ++sd->input_queue_tail;
1777#endif
1778}
1779
1780DECLARE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
1781
1782extern void __netif_schedule(struct Qdisc *q);
1783
1784static inline void netif_schedule_queue(struct netdev_queue *txq)
1785{
1786 if (!test_bit(__QUEUE_STATE_XOFF, &txq->state))
1787 __netif_schedule(txq->qdisc);
1788}
1789
1790static inline void netif_tx_schedule_all(struct net_device *dev)
1791{
1792 unsigned int i;
1793
1794 for (i = 0; i < dev->num_tx_queues; i++)
1795 netif_schedule_queue(netdev_get_tx_queue(dev, i));
1796}
1797
1798static inline void netif_tx_start_queue(struct netdev_queue *dev_queue)
1799{
1800 clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1801}
1802
1803
1804
1805
1806
1807
1808
1809static inline void netif_start_queue(struct net_device *dev)
1810{
1811 netif_tx_start_queue(netdev_get_tx_queue(dev, 0));
1812}
1813
1814static inline void netif_tx_start_all_queues(struct net_device *dev)
1815{
1816 unsigned int i;
1817
1818 for (i = 0; i < dev->num_tx_queues; i++) {
1819 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1820 netif_tx_start_queue(txq);
1821 }
1822}
1823
1824static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue)
1825{
1826#ifdef CONFIG_NETPOLL_TRAP
1827 if (netpoll_trap()) {
1828 netif_tx_start_queue(dev_queue);
1829 return;
1830 }
1831#endif
1832 if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state))
1833 __netif_schedule(dev_queue->qdisc);
1834}
1835
1836
1837
1838
1839
1840
1841
1842
1843static inline void netif_wake_queue(struct net_device *dev)
1844{
1845 netif_tx_wake_queue(netdev_get_tx_queue(dev, 0));
1846}
1847
1848static inline void netif_tx_wake_all_queues(struct net_device *dev)
1849{
1850 unsigned int i;
1851
1852 for (i = 0; i < dev->num_tx_queues; i++) {
1853 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1854 netif_tx_wake_queue(txq);
1855 }
1856}
1857
1858static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue)
1859{
1860 if (WARN_ON(!dev_queue)) {
1861 pr_info("netif_stop_queue() cannot be called before register_netdev()\n");
1862 return;
1863 }
1864 set_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1865}
1866
1867
1868
1869
1870
1871
1872
1873
1874static inline void netif_stop_queue(struct net_device *dev)
1875{
1876 netif_tx_stop_queue(netdev_get_tx_queue(dev, 0));
1877}
1878
1879static inline void netif_tx_stop_all_queues(struct net_device *dev)
1880{
1881 unsigned int i;
1882
1883 for (i = 0; i < dev->num_tx_queues; i++) {
1884 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1885 netif_tx_stop_queue(txq);
1886 }
1887}
1888
1889static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue)
1890{
1891 return test_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1892}
1893
1894
1895
1896
1897
1898
1899
1900static inline int netif_queue_stopped(const struct net_device *dev)
1901{
1902 return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0));
1903}
1904
1905static inline int netif_tx_queue_frozen_or_stopped(const struct netdev_queue *dev_queue)
1906{
1907 return dev_queue->state & QUEUE_STATE_XOFF_OR_FROZEN;
1908}
1909
1910
1911
1912
1913
1914
1915
1916static inline int netif_running(const struct net_device *dev)
1917{
1918 return test_bit(__LINK_STATE_START, &dev->state);
1919}
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index)
1936{
1937 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1938
1939 netif_tx_start_queue(txq);
1940}
1941
1942
1943
1944
1945
1946
1947
1948
1949static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index)
1950{
1951 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1952#ifdef CONFIG_NETPOLL_TRAP
1953 if (netpoll_trap())
1954 return;
1955#endif
1956 netif_tx_stop_queue(txq);
1957}
1958
1959
1960
1961
1962
1963
1964
1965
1966static inline int __netif_subqueue_stopped(const struct net_device *dev,
1967 u16 queue_index)
1968{
1969 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1970
1971 return netif_tx_queue_stopped(txq);
1972}
1973
1974static inline int netif_subqueue_stopped(const struct net_device *dev,
1975 struct sk_buff *skb)
1976{
1977 return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb));
1978}
1979
1980
1981
1982
1983
1984
1985
1986
1987static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
1988{
1989 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1990#ifdef CONFIG_NETPOLL_TRAP
1991 if (netpoll_trap())
1992 return;
1993#endif
1994 if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state))
1995 __netif_schedule(txq->qdisc);
1996}
1997
1998
1999
2000
2001
2002static inline u16 skb_tx_hash(const struct net_device *dev,
2003 const struct sk_buff *skb)
2004{
2005 return __skb_tx_hash(dev, skb, dev->real_num_tx_queues);
2006}
2007
2008
2009
2010
2011
2012
2013
2014static inline int netif_is_multiqueue(const struct net_device *dev)
2015{
2016 return dev->num_tx_queues > 1;
2017}
2018
2019extern int netif_set_real_num_tx_queues(struct net_device *dev,
2020 unsigned int txq);
2021
2022#ifdef CONFIG_RPS
2023extern int netif_set_real_num_rx_queues(struct net_device *dev,
2024 unsigned int rxq);
2025#else
2026static inline int netif_set_real_num_rx_queues(struct net_device *dev,
2027 unsigned int rxq)
2028{
2029 return 0;
2030}
2031#endif
2032
2033static inline int netif_copy_real_num_queues(struct net_device *to_dev,
2034 const struct net_device *from_dev)
2035{
2036 netif_set_real_num_tx_queues(to_dev, from_dev->real_num_tx_queues);
2037#ifdef CONFIG_RPS
2038 return netif_set_real_num_rx_queues(to_dev,
2039 from_dev->real_num_rx_queues);
2040#else
2041 return 0;
2042#endif
2043}
2044
2045
2046
2047
2048
2049extern void dev_kfree_skb_irq(struct sk_buff *skb);
2050
2051
2052
2053
2054
2055extern void dev_kfree_skb_any(struct sk_buff *skb);
2056
2057extern int netif_rx(struct sk_buff *skb);
2058extern int netif_rx_ni(struct sk_buff *skb);
2059extern int netif_receive_skb(struct sk_buff *skb);
2060extern gro_result_t dev_gro_receive(struct napi_struct *napi,
2061 struct sk_buff *skb);
2062extern gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb);
2063extern gro_result_t napi_gro_receive(struct napi_struct *napi,
2064 struct sk_buff *skb);
2065extern void napi_gro_flush(struct napi_struct *napi);
2066extern struct sk_buff * napi_get_frags(struct napi_struct *napi);
2067extern gro_result_t napi_frags_finish(struct napi_struct *napi,
2068 struct sk_buff *skb,
2069 gro_result_t ret);
2070extern struct sk_buff * napi_frags_skb(struct napi_struct *napi);
2071extern gro_result_t napi_gro_frags(struct napi_struct *napi);
2072
2073static inline void napi_free_frags(struct napi_struct *napi)
2074{
2075 kfree_skb(napi->skb);
2076 napi->skb = NULL;
2077}
2078
2079extern int netdev_rx_handler_register(struct net_device *dev,
2080 rx_handler_func_t *rx_handler,
2081 void *rx_handler_data);
2082extern void netdev_rx_handler_unregister(struct net_device *dev);
2083
2084extern int dev_valid_name(const char *name);
2085extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
2086extern int dev_ethtool(struct net *net, struct ifreq *);
2087extern unsigned dev_get_flags(const struct net_device *);
2088extern int __dev_change_flags(struct net_device *, unsigned int flags);
2089extern int dev_change_flags(struct net_device *, unsigned);
2090extern void __dev_notify_flags(struct net_device *, unsigned int old_flags);
2091extern int dev_change_name(struct net_device *, const char *);
2092extern int dev_set_alias(struct net_device *, const char *, size_t);
2093extern int dev_change_net_namespace(struct net_device *,
2094 struct net *, const char *);
2095extern int dev_set_mtu(struct net_device *, int);
2096extern void dev_set_group(struct net_device *, int);
2097extern int dev_set_mac_address(struct net_device *,
2098 struct sockaddr *);
2099extern int dev_hard_start_xmit(struct sk_buff *skb,
2100 struct net_device *dev,
2101 struct netdev_queue *txq);
2102extern int dev_forward_skb(struct net_device *dev,
2103 struct sk_buff *skb);
2104
2105extern int netdev_budget;
2106
2107
2108extern void netdev_run_todo(void);
2109
2110
2111
2112
2113
2114
2115
2116static inline void dev_put(struct net_device *dev)
2117{
2118 irqsafe_cpu_dec(*dev->pcpu_refcnt);
2119}
2120
2121
2122
2123
2124
2125
2126
2127static inline void dev_hold(struct net_device *dev)
2128{
2129 irqsafe_cpu_inc(*dev->pcpu_refcnt);
2130}
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141extern void linkwatch_fire_event(struct net_device *dev);
2142extern void linkwatch_forget_dev(struct net_device *dev);
2143
2144
2145
2146
2147
2148
2149
2150static inline int netif_carrier_ok(const struct net_device *dev)
2151{
2152 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
2153}
2154
2155extern unsigned long dev_trans_start(struct net_device *dev);
2156
2157extern void __netdev_watchdog_up(struct net_device *dev);
2158
2159extern void netif_carrier_on(struct net_device *dev);
2160
2161extern void netif_carrier_off(struct net_device *dev);
2162
2163extern void netif_notify_peers(struct net_device *dev);
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178static inline void netif_dormant_on(struct net_device *dev)
2179{
2180 if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state))
2181 linkwatch_fire_event(dev);
2182}
2183
2184
2185
2186
2187
2188
2189
2190static inline void netif_dormant_off(struct net_device *dev)
2191{
2192 if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state))
2193 linkwatch_fire_event(dev);
2194}
2195
2196
2197
2198
2199
2200
2201
2202static inline int netif_dormant(const struct net_device *dev)
2203{
2204 return test_bit(__LINK_STATE_DORMANT, &dev->state);
2205}
2206
2207
2208
2209
2210
2211
2212
2213
2214static inline int netif_oper_up(const struct net_device *dev)
2215{
2216 return (dev->operstate == IF_OPER_UP ||
2217 dev->operstate == IF_OPER_UNKNOWN );
2218}
2219
2220
2221
2222
2223
2224
2225
2226static inline int netif_device_present(struct net_device *dev)
2227{
2228 return test_bit(__LINK_STATE_PRESENT, &dev->state);
2229}
2230
2231extern void netif_device_detach(struct net_device *dev);
2232
2233extern void netif_device_attach(struct net_device *dev);
2234
2235
2236
2237
2238
2239enum {
2240 NETIF_MSG_DRV = 0x0001,
2241 NETIF_MSG_PROBE = 0x0002,
2242 NETIF_MSG_LINK = 0x0004,
2243 NETIF_MSG_TIMER = 0x0008,
2244 NETIF_MSG_IFDOWN = 0x0010,
2245 NETIF_MSG_IFUP = 0x0020,
2246 NETIF_MSG_RX_ERR = 0x0040,
2247 NETIF_MSG_TX_ERR = 0x0080,
2248 NETIF_MSG_TX_QUEUED = 0x0100,
2249 NETIF_MSG_INTR = 0x0200,
2250 NETIF_MSG_TX_DONE = 0x0400,
2251 NETIF_MSG_RX_STATUS = 0x0800,
2252 NETIF_MSG_PKTDATA = 0x1000,
2253 NETIF_MSG_HW = 0x2000,
2254 NETIF_MSG_WOL = 0x4000,
2255};
2256
2257#define netif_msg_drv(p) ((p)->msg_enable & NETIF_MSG_DRV)
2258#define netif_msg_probe(p) ((p)->msg_enable & NETIF_MSG_PROBE)
2259#define netif_msg_link(p) ((p)->msg_enable & NETIF_MSG_LINK)
2260#define netif_msg_timer(p) ((p)->msg_enable & NETIF_MSG_TIMER)
2261#define netif_msg_ifdown(p) ((p)->msg_enable & NETIF_MSG_IFDOWN)
2262#define netif_msg_ifup(p) ((p)->msg_enable & NETIF_MSG_IFUP)
2263#define netif_msg_rx_err(p) ((p)->msg_enable & NETIF_MSG_RX_ERR)
2264#define netif_msg_tx_err(p) ((p)->msg_enable & NETIF_MSG_TX_ERR)
2265#define netif_msg_tx_queued(p) ((p)->msg_enable & NETIF_MSG_TX_QUEUED)
2266#define netif_msg_intr(p) ((p)->msg_enable & NETIF_MSG_INTR)
2267#define netif_msg_tx_done(p) ((p)->msg_enable & NETIF_MSG_TX_DONE)
2268#define netif_msg_rx_status(p) ((p)->msg_enable & NETIF_MSG_RX_STATUS)
2269#define netif_msg_pktdata(p) ((p)->msg_enable & NETIF_MSG_PKTDATA)
2270#define netif_msg_hw(p) ((p)->msg_enable & NETIF_MSG_HW)
2271#define netif_msg_wol(p) ((p)->msg_enable & NETIF_MSG_WOL)
2272
2273static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
2274{
2275
2276 if (debug_value < 0 || debug_value >= (sizeof(u32) * 8))
2277 return default_msg_enable_bits;
2278 if (debug_value == 0)
2279 return 0;
2280
2281 return (1 << debug_value) - 1;
2282}
2283
2284static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
2285{
2286 spin_lock(&txq->_xmit_lock);
2287 txq->xmit_lock_owner = cpu;
2288}
2289
2290static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
2291{
2292 spin_lock_bh(&txq->_xmit_lock);
2293 txq->xmit_lock_owner = smp_processor_id();
2294}
2295
2296static inline int __netif_tx_trylock(struct netdev_queue *txq)
2297{
2298 int ok = spin_trylock(&txq->_xmit_lock);
2299 if (likely(ok))
2300 txq->xmit_lock_owner = smp_processor_id();
2301 return ok;
2302}
2303
2304static inline void __netif_tx_unlock(struct netdev_queue *txq)
2305{
2306 txq->xmit_lock_owner = -1;
2307 spin_unlock(&txq->_xmit_lock);
2308}
2309
2310static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
2311{
2312 txq->xmit_lock_owner = -1;
2313 spin_unlock_bh(&txq->_xmit_lock);
2314}
2315
2316static inline void txq_trans_update(struct netdev_queue *txq)
2317{
2318 if (txq->xmit_lock_owner != -1)
2319 txq->trans_start = jiffies;
2320}
2321
2322
2323
2324
2325
2326
2327
2328static inline void netif_tx_lock(struct net_device *dev)
2329{
2330 unsigned int i;
2331 int cpu;
2332
2333 spin_lock(&dev->tx_global_lock);
2334 cpu = smp_processor_id();
2335 for (i = 0; i < dev->num_tx_queues; i++) {
2336 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
2337
2338
2339
2340
2341
2342
2343
2344 __netif_tx_lock(txq, cpu);
2345 set_bit(__QUEUE_STATE_FROZEN, &txq->state);
2346 __netif_tx_unlock(txq);
2347 }
2348}
2349
2350static inline void netif_tx_lock_bh(struct net_device *dev)
2351{
2352 local_bh_disable();
2353 netif_tx_lock(dev);
2354}
2355
2356static inline void netif_tx_unlock(struct net_device *dev)
2357{
2358 unsigned int i;
2359
2360 for (i = 0; i < dev->num_tx_queues; i++) {
2361 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
2362
2363
2364
2365
2366
2367 clear_bit(__QUEUE_STATE_FROZEN, &txq->state);
2368 netif_schedule_queue(txq);
2369 }
2370 spin_unlock(&dev->tx_global_lock);
2371}
2372
2373static inline void netif_tx_unlock_bh(struct net_device *dev)
2374{
2375 netif_tx_unlock(dev);
2376 local_bh_enable();
2377}
2378
2379#define HARD_TX_LOCK(dev, txq, cpu) { \
2380 if ((dev->features & NETIF_F_LLTX) == 0) { \
2381 __netif_tx_lock(txq, cpu); \
2382 } \
2383}
2384
2385#define HARD_TX_UNLOCK(dev, txq) { \
2386 if ((dev->features & NETIF_F_LLTX) == 0) { \
2387 __netif_tx_unlock(txq); \
2388 } \
2389}
2390
2391static inline void netif_tx_disable(struct net_device *dev)
2392{
2393 unsigned int i;
2394 int cpu;
2395
2396 local_bh_disable();
2397 cpu = smp_processor_id();
2398 for (i = 0; i < dev->num_tx_queues; i++) {
2399 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
2400
2401 __netif_tx_lock(txq, cpu);
2402 netif_tx_stop_queue(txq);
2403 __netif_tx_unlock(txq);
2404 }
2405 local_bh_enable();
2406}
2407
2408static inline void netif_addr_lock(struct net_device *dev)
2409{
2410 spin_lock(&dev->addr_list_lock);
2411}
2412
2413static inline void netif_addr_lock_bh(struct net_device *dev)
2414{
2415 spin_lock_bh(&dev->addr_list_lock);
2416}
2417
2418static inline void netif_addr_unlock(struct net_device *dev)
2419{
2420 spin_unlock(&dev->addr_list_lock);
2421}
2422
2423static inline void netif_addr_unlock_bh(struct net_device *dev)
2424{
2425 spin_unlock_bh(&dev->addr_list_lock);
2426}
2427
2428
2429
2430
2431
2432#define for_each_dev_addr(dev, ha) \
2433 list_for_each_entry_rcu(ha, &dev->dev_addrs.list, list)
2434
2435
2436
2437extern void ether_setup(struct net_device *dev);
2438
2439
2440extern struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
2441 void (*setup)(struct net_device *),
2442 unsigned int txqs, unsigned int rxqs);
2443#define alloc_netdev(sizeof_priv, name, setup) \
2444 alloc_netdev_mqs(sizeof_priv, name, setup, 1, 1)
2445
2446#define alloc_netdev_mq(sizeof_priv, name, setup, count) \
2447 alloc_netdev_mqs(sizeof_priv, name, setup, count, count)
2448
2449extern int register_netdev(struct net_device *dev);
2450extern void unregister_netdev(struct net_device *dev);
2451
2452
2453extern int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
2454 struct netdev_hw_addr_list *from_list,
2455 int addr_len, unsigned char addr_type);
2456extern void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
2457 struct netdev_hw_addr_list *from_list,
2458 int addr_len, unsigned char addr_type);
2459extern int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
2460 struct netdev_hw_addr_list *from_list,
2461 int addr_len);
2462extern void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
2463 struct netdev_hw_addr_list *from_list,
2464 int addr_len);
2465extern void __hw_addr_flush(struct netdev_hw_addr_list *list);
2466extern void __hw_addr_init(struct netdev_hw_addr_list *list);
2467
2468
2469extern int dev_addr_add(struct net_device *dev, unsigned char *addr,
2470 unsigned char addr_type);
2471extern int dev_addr_del(struct net_device *dev, unsigned char *addr,
2472 unsigned char addr_type);
2473extern int dev_addr_add_multiple(struct net_device *to_dev,
2474 struct net_device *from_dev,
2475 unsigned char addr_type);
2476extern int dev_addr_del_multiple(struct net_device *to_dev,
2477 struct net_device *from_dev,
2478 unsigned char addr_type);
2479extern void dev_addr_flush(struct net_device *dev);
2480extern int dev_addr_init(struct net_device *dev);
2481
2482
2483extern int dev_uc_add(struct net_device *dev, unsigned char *addr);
2484extern int dev_uc_del(struct net_device *dev, unsigned char *addr);
2485extern int dev_uc_sync(struct net_device *to, struct net_device *from);
2486extern void dev_uc_unsync(struct net_device *to, struct net_device *from);
2487extern void dev_uc_flush(struct net_device *dev);
2488extern void dev_uc_init(struct net_device *dev);
2489
2490
2491extern int dev_mc_add(struct net_device *dev, unsigned char *addr);
2492extern int dev_mc_add_global(struct net_device *dev, unsigned char *addr);
2493extern int dev_mc_del(struct net_device *dev, unsigned char *addr);
2494extern int dev_mc_del_global(struct net_device *dev, unsigned char *addr);
2495extern int dev_mc_sync(struct net_device *to, struct net_device *from);
2496extern void dev_mc_unsync(struct net_device *to, struct net_device *from);
2497extern void dev_mc_flush(struct net_device *dev);
2498extern void dev_mc_init(struct net_device *dev);
2499
2500
2501extern void dev_set_rx_mode(struct net_device *dev);
2502extern void __dev_set_rx_mode(struct net_device *dev);
2503extern int dev_set_promiscuity(struct net_device *dev, int inc);
2504extern int dev_set_allmulti(struct net_device *dev, int inc);
2505extern void netdev_state_change(struct net_device *dev);
2506extern int netdev_bonding_change(struct net_device *dev,
2507 unsigned long event);
2508extern void netdev_features_change(struct net_device *dev);
2509
2510extern void dev_load(struct net *net, const char *name);
2511extern void dev_mcast_init(void);
2512extern struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
2513 struct rtnl_link_stats64 *storage);
2514
2515extern int netdev_max_backlog;
2516extern int netdev_tstamp_prequeue;
2517extern int weight_p;
2518extern int bpf_jit_enable;
2519extern int netdev_set_master(struct net_device *dev, struct net_device *master);
2520extern int netdev_set_bond_master(struct net_device *dev,
2521 struct net_device *master);
2522extern int skb_checksum_help(struct sk_buff *skb);
2523extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, u32 features);
2524#ifdef CONFIG_BUG
2525extern void netdev_rx_csum_fault(struct net_device *dev);
2526#else
2527static inline void netdev_rx_csum_fault(struct net_device *dev)
2528{
2529}
2530#endif
2531
2532extern void net_enable_timestamp(void);
2533extern void net_disable_timestamp(void);
2534
2535#ifdef CONFIG_PROC_FS
2536extern void *dev_seq_start(struct seq_file *seq, loff_t *pos);
2537extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
2538extern void dev_seq_stop(struct seq_file *seq, void *v);
2539extern int dev_seq_open_ops(struct inode *inode, struct file *file,
2540 const struct seq_operations *ops);
2541#endif
2542
2543extern int netdev_class_create_file(struct class_attribute *class_attr);
2544extern void netdev_class_remove_file(struct class_attribute *class_attr);
2545
2546extern struct kobj_ns_type_operations net_ns_type_operations;
2547
2548extern const char *netdev_drivername(const struct net_device *dev);
2549
2550extern void linkwatch_run_queue(void);
2551
2552static inline u32 netdev_get_wanted_features(struct net_device *dev)
2553{
2554 return (dev->features & ~dev->hw_features) | dev->wanted_features;
2555}
2556u32 netdev_increment_features(u32 all, u32 one, u32 mask);
2557int __netdev_update_features(struct net_device *dev);
2558void netdev_update_features(struct net_device *dev);
2559void netdev_change_features(struct net_device *dev);
2560
2561void netif_stacked_transfer_operstate(const struct net_device *rootdev,
2562 struct net_device *dev);
2563
2564u32 netif_skb_features(struct sk_buff *skb);
2565
2566static inline int net_gso_ok(u32 features, int gso_type)
2567{
2568 int feature = gso_type << NETIF_F_GSO_SHIFT;
2569 return (features & feature) == feature;
2570}
2571
2572static inline int skb_gso_ok(struct sk_buff *skb, u32 features)
2573{
2574 return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&
2575 (!skb_has_frag_list(skb) || (features & NETIF_F_FRAGLIST));
2576}
2577
2578static inline int netif_needs_gso(struct sk_buff *skb, int features)
2579{
2580 return skb_is_gso(skb) && (!skb_gso_ok(skb, features) ||
2581 unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
2582}
2583
2584static inline void netif_set_gso_max_size(struct net_device *dev,
2585 unsigned int size)
2586{
2587 dev->gso_max_size = size;
2588}
2589
2590static inline int netif_is_bond_slave(struct net_device *dev)
2591{
2592 return dev->flags & IFF_SLAVE && dev->priv_flags & IFF_BONDING;
2593}
2594
2595extern struct pernet_operations __net_initdata loopback_net_ops;
2596
2597static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
2598{
2599 if (dev->features & NETIF_F_RXCSUM)
2600 return 1;
2601 if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum)
2602 return 0;
2603 return dev->ethtool_ops->get_rx_csum(dev);
2604}
2605
2606static inline u32 dev_ethtool_get_flags(struct net_device *dev)
2607{
2608 if (!dev->ethtool_ops || !dev->ethtool_ops->get_flags)
2609 return 0;
2610 return dev->ethtool_ops->get_flags(dev);
2611}
2612
2613
2614
2615
2616
2617static inline const char *netdev_name(const struct net_device *dev)
2618{
2619 if (dev->reg_state != NETREG_REGISTERED)
2620 return "(unregistered net_device)";
2621 return dev->name;
2622}
2623
2624extern int __netdev_printk(const char *level, const struct net_device *dev,
2625 struct va_format *vaf);
2626
2627extern __printf(3, 4)
2628int netdev_printk(const char *level, const struct net_device *dev,
2629 const char *format, ...);
2630extern __printf(2, 3)
2631int netdev_emerg(const struct net_device *dev, const char *format, ...);
2632extern __printf(2, 3)
2633int netdev_alert(const struct net_device *dev, const char *format, ...);
2634extern __printf(2, 3)
2635int netdev_crit(const struct net_device *dev, const char *format, ...);
2636extern __printf(2, 3)
2637int netdev_err(const struct net_device *dev, const char *format, ...);
2638extern __printf(2, 3)
2639int netdev_warn(const struct net_device *dev, const char *format, ...);
2640extern __printf(2, 3)
2641int netdev_notice(const struct net_device *dev, const char *format, ...);
2642extern __printf(2, 3)
2643int netdev_info(const struct net_device *dev, const char *format, ...);
2644
2645#define MODULE_ALIAS_NETDEV(device) \
2646 MODULE_ALIAS("netdev-" device)
2647
2648#if defined(DEBUG)
2649#define netdev_dbg(__dev, format, args...) \
2650 netdev_printk(KERN_DEBUG, __dev, format, ##args)
2651#elif defined(CONFIG_DYNAMIC_DEBUG)
2652#define netdev_dbg(__dev, format, args...) \
2653do { \
2654 dynamic_netdev_dbg(__dev, format, ##args); \
2655} while (0)
2656#else
2657#define netdev_dbg(__dev, format, args...) \
2658({ \
2659 if (0) \
2660 netdev_printk(KERN_DEBUG, __dev, format, ##args); \
2661 0; \
2662})
2663#endif
2664
2665#if defined(VERBOSE_DEBUG)
2666#define netdev_vdbg netdev_dbg
2667#else
2668
2669#define netdev_vdbg(dev, format, args...) \
2670({ \
2671 if (0) \
2672 netdev_printk(KERN_DEBUG, dev, format, ##args); \
2673 0; \
2674})
2675#endif
2676
2677
2678
2679
2680
2681
2682#define netdev_WARN(dev, format, args...) \
2683 WARN(1, "netdevice: %s\n" format, netdev_name(dev), ##args);
2684
2685
2686
2687#define netif_printk(priv, type, level, dev, fmt, args...) \
2688do { \
2689 if (netif_msg_##type(priv)) \
2690 netdev_printk(level, (dev), fmt, ##args); \
2691} while (0)
2692
2693#define netif_level(level, priv, type, dev, fmt, args...) \
2694do { \
2695 if (netif_msg_##type(priv)) \
2696 netdev_##level(dev, fmt, ##args); \
2697} while (0)
2698
2699#define netif_emerg(priv, type, dev, fmt, args...) \
2700 netif_level(emerg, priv, type, dev, fmt, ##args)
2701#define netif_alert(priv, type, dev, fmt, args...) \
2702 netif_level(alert, priv, type, dev, fmt, ##args)
2703#define netif_crit(priv, type, dev, fmt, args...) \
2704 netif_level(crit, priv, type, dev, fmt, ##args)
2705#define netif_err(priv, type, dev, fmt, args...) \
2706 netif_level(err, priv, type, dev, fmt, ##args)
2707#define netif_warn(priv, type, dev, fmt, args...) \
2708 netif_level(warn, priv, type, dev, fmt, ##args)
2709#define netif_notice(priv, type, dev, fmt, args...) \
2710 netif_level(notice, priv, type, dev, fmt, ##args)
2711#define netif_info(priv, type, dev, fmt, args...) \
2712 netif_level(info, priv, type, dev, fmt, ##args)
2713
2714#if defined(DEBUG)
2715#define netif_dbg(priv, type, dev, format, args...) \
2716 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args)
2717#elif defined(CONFIG_DYNAMIC_DEBUG)
2718#define netif_dbg(priv, type, netdev, format, args...) \
2719do { \
2720 if (netif_msg_##type(priv)) \
2721 dynamic_netdev_dbg(netdev, format, ##args); \
2722} while (0)
2723#else
2724#define netif_dbg(priv, type, dev, format, args...) \
2725({ \
2726 if (0) \
2727 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args); \
2728 0; \
2729})
2730#endif
2731
2732#if defined(VERBOSE_DEBUG)
2733#define netif_vdbg netif_dbg
2734#else
2735#define netif_vdbg(priv, type, dev, format, args...) \
2736({ \
2737 if (0) \
2738 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args); \
2739 0; \
2740})
2741#endif
2742
2743#endif
2744
2745#endif
2746