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_params.h>
35#include <linux/timer.h>
36#include <linux/delay.h>
37#include <linux/mm.h>
38#include <asm/atomic.h>
39#include <asm/cache.h>
40#include <asm/byteorder.h>
41
42#include <linux/device.h>
43#include <linux/percpu.h>
44#include <linux/rculist.h>
45#include <linux/dmaengine.h>
46#include <linux/workqueue.h>
47
48#include <linux/ethtool.h>
49#include <net/net_namespace.h>
50#include <net/dsa.h>
51#ifdef CONFIG_DCB
52#include <net/dcbnl.h>
53#endif
54
55struct vlan_group;
56struct netpoll_info;
57
58struct wireless_dev;
59
60#define SET_ETHTOOL_OPS(netdev,ops) \
61 ( (netdev)->ethtool_ops = (ops) )
62
63#define HAVE_ALLOC_NETDEV
64
65#define HAVE_FREE_NETDEV
66#define HAVE_NETDEV_PRIV
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#ifdef __KERNEL__
136
137
138
139
140
141#if defined(CONFIG_WLAN) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
142# if defined(CONFIG_MAC80211_MESH)
143# define LL_MAX_HEADER 128
144# else
145# define LL_MAX_HEADER 96
146# endif
147#elif defined(CONFIG_TR) || defined(CONFIG_TR_MODULE)
148# define LL_MAX_HEADER 48
149#else
150# define LL_MAX_HEADER 32
151#endif
152
153#if !defined(CONFIG_NET_IPIP) && !defined(CONFIG_NET_IPIP_MODULE) && \
154 !defined(CONFIG_NET_IPGRE) && !defined(CONFIG_NET_IPGRE_MODULE) && \
155 !defined(CONFIG_IPV6_SIT) && !defined(CONFIG_IPV6_SIT_MODULE) && \
156 !defined(CONFIG_IPV6_TUNNEL) && !defined(CONFIG_IPV6_TUNNEL_MODULE)
157#define MAX_HEADER LL_MAX_HEADER
158#else
159#define MAX_HEADER (LL_MAX_HEADER + 48)
160#endif
161
162#endif
163
164
165
166
167
168
169struct net_device_stats {
170 unsigned long rx_packets;
171 unsigned long tx_packets;
172 unsigned long rx_bytes;
173 unsigned long tx_bytes;
174 unsigned long rx_errors;
175 unsigned long tx_errors;
176 unsigned long rx_dropped;
177 unsigned long tx_dropped;
178 unsigned long multicast;
179 unsigned long collisions;
180
181
182 unsigned long rx_length_errors;
183 unsigned long rx_over_errors;
184 unsigned long rx_crc_errors;
185 unsigned long rx_frame_errors;
186 unsigned long rx_fifo_errors;
187 unsigned long rx_missed_errors;
188
189
190 unsigned long tx_aborted_errors;
191 unsigned long tx_carrier_errors;
192 unsigned long tx_fifo_errors;
193 unsigned long tx_heartbeat_errors;
194 unsigned long tx_window_errors;
195
196
197 unsigned long rx_compressed;
198 unsigned long tx_compressed;
199};
200
201
202
203enum {
204 IF_PORT_UNKNOWN = 0,
205 IF_PORT_10BASE2,
206 IF_PORT_10BASET,
207 IF_PORT_AUI,
208 IF_PORT_100BASET,
209 IF_PORT_100BASETX,
210 IF_PORT_100BASEFX
211};
212
213#ifdef __KERNEL__
214
215#include <linux/cache.h>
216#include <linux/skbuff.h>
217
218struct neighbour;
219struct neigh_parms;
220struct sk_buff;
221
222struct netdev_hw_addr {
223 struct list_head list;
224 unsigned char addr[MAX_ADDR_LEN];
225 unsigned char type;
226#define NETDEV_HW_ADDR_T_LAN 1
227#define NETDEV_HW_ADDR_T_SAN 2
228#define NETDEV_HW_ADDR_T_SLAVE 3
229#define NETDEV_HW_ADDR_T_UNICAST 4
230#define NETDEV_HW_ADDR_T_MULTICAST 5
231 int refcount;
232 bool synced;
233 bool global_use;
234 struct rcu_head rcu_head;
235};
236
237struct netdev_hw_addr_list {
238 struct list_head list;
239 int count;
240};
241
242#define netdev_hw_addr_list_count(l) ((l)->count)
243#define netdev_hw_addr_list_empty(l) (netdev_hw_addr_list_count(l) == 0)
244#define netdev_hw_addr_list_for_each(ha, l) \
245 list_for_each_entry(ha, &(l)->list, list)
246
247#define netdev_uc_count(dev) netdev_hw_addr_list_count(&(dev)->uc)
248#define netdev_uc_empty(dev) netdev_hw_addr_list_empty(&(dev)->uc)
249#define netdev_for_each_uc_addr(ha, dev) \
250 netdev_hw_addr_list_for_each(ha, &(dev)->uc)
251
252#define netdev_mc_count(dev) netdev_hw_addr_list_count(&(dev)->mc)
253#define netdev_mc_empty(dev) netdev_hw_addr_list_empty(&(dev)->mc)
254#define netdev_for_each_mc_addr(ha, dev) \
255 netdev_hw_addr_list_for_each(ha, &(dev)->mc)
256
257struct hh_cache {
258 struct hh_cache *hh_next;
259 atomic_t hh_refcnt;
260
261
262
263
264
265
266 __be16 hh_type ____cacheline_aligned_in_smp;
267
268
269
270
271 u16 hh_len;
272 int (*hh_output)(struct sk_buff *skb);
273 seqlock_t hh_lock;
274
275
276#define HH_DATA_MOD 16
277#define HH_DATA_OFF(__len) \
278 (HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))
279#define HH_DATA_ALIGN(__len) \
280 (((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))
281 unsigned long hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];
282};
283
284
285
286
287
288
289
290
291
292
293
294
295#define LL_RESERVED_SPACE(dev) \
296 ((((dev)->hard_header_len+(dev)->needed_headroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
297#define LL_RESERVED_SPACE_EXTRA(dev,extra) \
298 ((((dev)->hard_header_len+(dev)->needed_headroom+(extra))&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
299#define LL_ALLOCATED_SPACE(dev) \
300 ((((dev)->hard_header_len+(dev)->needed_headroom+(dev)->needed_tailroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
301
302struct header_ops {
303 int (*create) (struct sk_buff *skb, struct net_device *dev,
304 unsigned short type, const void *daddr,
305 const void *saddr, unsigned len);
306 int (*parse)(const struct sk_buff *skb, unsigned char *haddr);
307 int (*rebuild)(struct sk_buff *skb);
308#define HAVE_HEADER_CACHE
309 int (*cache)(const struct neighbour *neigh, struct hh_cache *hh);
310 void (*cache_update)(struct hh_cache *hh,
311 const struct net_device *dev,
312 const unsigned char *haddr);
313};
314
315
316
317
318
319
320enum netdev_state_t {
321 __LINK_STATE_START,
322 __LINK_STATE_PRESENT,
323 __LINK_STATE_NOCARRIER,
324 __LINK_STATE_LINKWATCH_PENDING,
325 __LINK_STATE_DORMANT,
326};
327
328
329
330
331
332
333struct netdev_boot_setup {
334 char name[IFNAMSIZ];
335 struct ifmap map;
336};
337#define NETDEV_BOOT_SETUP_MAX 8
338
339extern int __init netdev_boot_setup(char *str);
340
341
342
343
344struct napi_struct {
345
346
347
348
349
350
351 struct list_head poll_list;
352
353 unsigned long state;
354 int weight;
355 int (*poll)(struct napi_struct *, int);
356#ifdef CONFIG_NETPOLL
357 spinlock_t poll_lock;
358 int poll_owner;
359#endif
360
361 unsigned int gro_count;
362
363 struct net_device *dev;
364 struct list_head dev_list;
365 struct sk_buff *gro_list;
366 struct sk_buff *skb;
367};
368
369enum {
370 NAPI_STATE_SCHED,
371 NAPI_STATE_DISABLE,
372 NAPI_STATE_NPSVC,
373};
374
375enum gro_result {
376 GRO_MERGED,
377 GRO_MERGED_FREE,
378 GRO_HELD,
379 GRO_NORMAL,
380 GRO_DROP,
381};
382typedef enum gro_result gro_result_t;
383
384extern void __napi_schedule(struct napi_struct *n);
385
386static inline int napi_disable_pending(struct napi_struct *n)
387{
388 return test_bit(NAPI_STATE_DISABLE, &n->state);
389}
390
391
392
393
394
395
396
397
398
399
400static inline int napi_schedule_prep(struct napi_struct *n)
401{
402 return !napi_disable_pending(n) &&
403 !test_and_set_bit(NAPI_STATE_SCHED, &n->state);
404}
405
406
407
408
409
410
411
412
413static inline void napi_schedule(struct napi_struct *n)
414{
415 if (napi_schedule_prep(n))
416 __napi_schedule(n);
417}
418
419
420static inline int napi_reschedule(struct napi_struct *napi)
421{
422 if (napi_schedule_prep(napi)) {
423 __napi_schedule(napi);
424 return 1;
425 }
426 return 0;
427}
428
429
430
431
432
433
434
435extern void __napi_complete(struct napi_struct *n);
436extern void napi_complete(struct napi_struct *n);
437
438
439
440
441
442
443
444
445static inline void napi_disable(struct napi_struct *n)
446{
447 set_bit(NAPI_STATE_DISABLE, &n->state);
448 while (test_and_set_bit(NAPI_STATE_SCHED, &n->state))
449 msleep(1);
450 clear_bit(NAPI_STATE_DISABLE, &n->state);
451}
452
453
454
455
456
457
458
459
460static inline void napi_enable(struct napi_struct *n)
461{
462 BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
463 smp_mb__before_clear_bit();
464 clear_bit(NAPI_STATE_SCHED, &n->state);
465}
466
467#ifdef CONFIG_SMP
468
469
470
471
472
473
474
475
476static inline void napi_synchronize(const struct napi_struct *n)
477{
478 while (test_bit(NAPI_STATE_SCHED, &n->state))
479 msleep(1);
480}
481#else
482# define napi_synchronize(n) barrier()
483#endif
484
485enum netdev_queue_state_t {
486 __QUEUE_STATE_XOFF,
487 __QUEUE_STATE_FROZEN,
488};
489
490struct netdev_queue {
491
492
493
494 struct net_device *dev;
495 struct Qdisc *qdisc;
496 unsigned long state;
497 struct Qdisc *qdisc_sleeping;
498
499
500
501 spinlock_t _xmit_lock ____cacheline_aligned_in_smp;
502 int xmit_lock_owner;
503
504
505
506 unsigned long trans_start;
507 unsigned long tx_bytes;
508 unsigned long tx_packets;
509 unsigned long tx_dropped;
510} ____cacheline_aligned_in_smp;
511
512#ifdef CONFIG_RPS
513
514
515
516
517struct rps_map {
518 unsigned int len;
519 struct rcu_head rcu;
520 u16 cpus[0];
521};
522#define RPS_MAP_SIZE(_num) (sizeof(struct rps_map) + (_num * sizeof(u16)))
523
524
525
526
527
528struct rps_dev_flow {
529 u16 cpu;
530 u16 fill;
531 unsigned int last_qtail;
532};
533
534
535
536
537struct rps_dev_flow_table {
538 unsigned int mask;
539 struct rcu_head rcu;
540 struct work_struct free_work;
541 struct rps_dev_flow flows[0];
542};
543#define RPS_DEV_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_dev_flow_table) + \
544 (_num * sizeof(struct rps_dev_flow)))
545
546
547
548
549
550struct rps_sock_flow_table {
551 unsigned int mask;
552 u16 ents[0];
553};
554#define RPS_SOCK_FLOW_TABLE_SIZE(_num) (sizeof(struct rps_sock_flow_table) + \
555 (_num * sizeof(u16)))
556
557#define RPS_NO_CPU 0xffff
558
559static inline void rps_record_sock_flow(struct rps_sock_flow_table *table,
560 u32 hash)
561{
562 if (table && hash) {
563 unsigned int cpu, index = hash & table->mask;
564
565
566 cpu = raw_smp_processor_id();
567
568 if (table->ents[index] != cpu)
569 table->ents[index] = cpu;
570 }
571}
572
573static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table,
574 u32 hash)
575{
576 if (table && hash)
577 table->ents[hash & table->mask] = RPS_NO_CPU;
578}
579
580extern struct rps_sock_flow_table *rps_sock_flow_table;
581
582
583struct netdev_rx_queue {
584 struct rps_map *rps_map;
585 struct rps_dev_flow_table *rps_flow_table;
586 struct kobject kobj;
587 struct netdev_rx_queue *first;
588 atomic_t count;
589} ____cacheline_aligned_in_smp;
590#endif
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694#define HAVE_NET_DEVICE_OPS
695struct net_device_ops {
696 int (*ndo_init)(struct net_device *dev);
697 void (*ndo_uninit)(struct net_device *dev);
698 int (*ndo_open)(struct net_device *dev);
699 int (*ndo_stop)(struct net_device *dev);
700 netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb,
701 struct net_device *dev);
702 u16 (*ndo_select_queue)(struct net_device *dev,
703 struct sk_buff *skb);
704 void (*ndo_change_rx_flags)(struct net_device *dev,
705 int flags);
706 void (*ndo_set_rx_mode)(struct net_device *dev);
707 void (*ndo_set_multicast_list)(struct net_device *dev);
708 int (*ndo_set_mac_address)(struct net_device *dev,
709 void *addr);
710 int (*ndo_validate_addr)(struct net_device *dev);
711 int (*ndo_do_ioctl)(struct net_device *dev,
712 struct ifreq *ifr, int cmd);
713 int (*ndo_set_config)(struct net_device *dev,
714 struct ifmap *map);
715 int (*ndo_change_mtu)(struct net_device *dev,
716 int new_mtu);
717 int (*ndo_neigh_setup)(struct net_device *dev,
718 struct neigh_parms *);
719 void (*ndo_tx_timeout) (struct net_device *dev);
720
721 struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
722
723 void (*ndo_vlan_rx_register)(struct net_device *dev,
724 struct vlan_group *grp);
725 void (*ndo_vlan_rx_add_vid)(struct net_device *dev,
726 unsigned short vid);
727 void (*ndo_vlan_rx_kill_vid)(struct net_device *dev,
728 unsigned short vid);
729#ifdef CONFIG_NET_POLL_CONTROLLER
730 void (*ndo_poll_controller)(struct net_device *dev);
731 void (*ndo_netpoll_cleanup)(struct net_device *dev);
732#endif
733 int (*ndo_set_vf_mac)(struct net_device *dev,
734 int queue, u8 *mac);
735 int (*ndo_set_vf_vlan)(struct net_device *dev,
736 int queue, u16 vlan, u8 qos);
737 int (*ndo_set_vf_tx_rate)(struct net_device *dev,
738 int vf, int rate);
739 int (*ndo_get_vf_config)(struct net_device *dev,
740 int vf,
741 struct ifla_vf_info *ivf);
742 int (*ndo_set_vf_port)(struct net_device *dev,
743 int vf,
744 struct nlattr *port[]);
745 int (*ndo_get_vf_port)(struct net_device *dev,
746 int vf, struct sk_buff *skb);
747#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
748 int (*ndo_fcoe_enable)(struct net_device *dev);
749 int (*ndo_fcoe_disable)(struct net_device *dev);
750 int (*ndo_fcoe_ddp_setup)(struct net_device *dev,
751 u16 xid,
752 struct scatterlist *sgl,
753 unsigned int sgc);
754 int (*ndo_fcoe_ddp_done)(struct net_device *dev,
755 u16 xid);
756#define NETDEV_FCOE_WWNN 0
757#define NETDEV_FCOE_WWPN 1
758 int (*ndo_fcoe_get_wwn)(struct net_device *dev,
759 u64 *wwn, int type);
760#endif
761};
762
763
764
765
766
767
768
769
770
771
772
773struct net_device {
774
775
776
777
778
779
780 char name[IFNAMSIZ];
781
782 struct pm_qos_request_list *pm_qos_req;
783
784
785 struct hlist_node name_hlist;
786
787 char *ifalias;
788
789
790
791
792
793 unsigned long mem_end;
794 unsigned long mem_start;
795 unsigned long base_addr;
796 unsigned int irq;
797
798
799
800
801
802
803 unsigned char if_port;
804 unsigned char dma;
805
806 unsigned long state;
807
808 struct list_head dev_list;
809 struct list_head napi_list;
810 struct list_head unreg_list;
811
812
813 unsigned long features;
814#define NETIF_F_SG 1
815#define NETIF_F_IP_CSUM 2
816#define NETIF_F_NO_CSUM 4
817#define NETIF_F_HW_CSUM 8
818#define NETIF_F_IPV6_CSUM 16
819#define NETIF_F_HIGHDMA 32
820#define NETIF_F_FRAGLIST 64
821#define NETIF_F_HW_VLAN_TX 128
822#define NETIF_F_HW_VLAN_RX 256
823#define NETIF_F_HW_VLAN_FILTER 512
824#define NETIF_F_VLAN_CHALLENGED 1024
825#define NETIF_F_GSO 2048
826#define NETIF_F_LLTX 4096
827
828#define NETIF_F_NETNS_LOCAL 8192
829#define NETIF_F_GRO 16384
830#define NETIF_F_LRO 32768
831
832
833#define NETIF_F_FCOE_CRC (1 << 24)
834#define NETIF_F_SCTP_CSUM (1 << 25)
835#define NETIF_F_FCOE_MTU (1 << 26)
836#define NETIF_F_NTUPLE (1 << 27)
837#define NETIF_F_RXHASH (1 << 28)
838
839
840#define NETIF_F_GSO_SHIFT 16
841#define NETIF_F_GSO_MASK 0x00ff0000
842#define NETIF_F_TSO (SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT)
843#define NETIF_F_UFO (SKB_GSO_UDP << NETIF_F_GSO_SHIFT)
844#define NETIF_F_GSO_ROBUST (SKB_GSO_DODGY << NETIF_F_GSO_SHIFT)
845#define NETIF_F_TSO_ECN (SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT)
846#define NETIF_F_TSO6 (SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT)
847#define NETIF_F_FSO (SKB_GSO_FCOE << NETIF_F_GSO_SHIFT)
848
849
850#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)
851
852
853#define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM)
854#define NETIF_F_V4_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IP_CSUM)
855#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
856#define NETIF_F_ALL_CSUM (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
857
858
859
860
861
862#define NETIF_F_ONE_FOR_ALL (NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ROBUST | \
863 NETIF_F_SG | NETIF_F_HIGHDMA | \
864 NETIF_F_FRAGLIST)
865
866
867 int ifindex;
868 int iflink;
869
870 struct net_device_stats stats;
871
872#ifdef CONFIG_WIRELESS_EXT
873
874
875 const struct iw_handler_def * wireless_handlers;
876
877 struct iw_public_data * wireless_data;
878#endif
879
880 const struct net_device_ops *netdev_ops;
881 const struct ethtool_ops *ethtool_ops;
882
883
884 const struct header_ops *header_ops;
885
886 unsigned int flags;
887 unsigned short gflags;
888 unsigned short priv_flags;
889 unsigned short padded;
890
891 unsigned char operstate;
892 unsigned char link_mode;
893
894 unsigned int mtu;
895 unsigned short type;
896 unsigned short hard_header_len;
897
898
899
900
901
902 unsigned short needed_headroom;
903 unsigned short needed_tailroom;
904
905 struct net_device *master;
906
907
908
909
910 unsigned char perm_addr[MAX_ADDR_LEN];
911 unsigned char addr_len;
912 unsigned short dev_id;
913
914 spinlock_t addr_list_lock;
915 struct netdev_hw_addr_list uc;
916 struct netdev_hw_addr_list mc;
917 int uc_promisc;
918 unsigned int promiscuity;
919 unsigned int allmulti;
920
921
922
923
924#ifdef CONFIG_NET_DSA
925 void *dsa_ptr;
926#endif
927 void *atalk_ptr;
928 void *ip_ptr;
929 void *dn_ptr;
930 void *ip6_ptr;
931 void *ec_ptr;
932 void *ax25_ptr;
933 struct wireless_dev *ieee80211_ptr;
934
935
936
937
938
939 unsigned long last_rx;
940
941 unsigned char *dev_addr;
942
943
944
945 struct netdev_hw_addr_list dev_addrs;
946
947
948 unsigned char broadcast[MAX_ADDR_LEN];
949
950#ifdef CONFIG_RPS
951 struct kset *queues_kset;
952
953 struct netdev_rx_queue *_rx;
954
955
956 unsigned int num_rx_queues;
957#endif
958
959 struct netdev_queue rx_queue;
960
961 struct netdev_queue *_tx ____cacheline_aligned_in_smp;
962
963
964 unsigned int num_tx_queues;
965
966
967 unsigned int real_num_tx_queues;
968
969
970 struct Qdisc *qdisc;
971
972 unsigned long tx_queue_len;
973 spinlock_t tx_global_lock;
974
975
976
977
978
979
980
981
982
983 unsigned long trans_start;
984
985 int watchdog_timeo;
986 struct timer_list watchdog_timer;
987
988
989 atomic_t refcnt ____cacheline_aligned_in_smp;
990
991
992 struct list_head todo_list;
993
994 struct hlist_node index_hlist;
995
996 struct list_head link_watch_list;
997
998
999 enum { NETREG_UNINITIALIZED=0,
1000 NETREG_REGISTERED,
1001 NETREG_UNREGISTERING,
1002 NETREG_UNREGISTERED,
1003 NETREG_RELEASED,
1004 NETREG_DUMMY,
1005 } reg_state:16;
1006
1007 enum {
1008 RTNL_LINK_INITIALIZED,
1009 RTNL_LINK_INITIALIZING,
1010 } rtnl_link_state:16;
1011
1012
1013 void (*destructor)(struct net_device *dev);
1014
1015#ifdef CONFIG_NETPOLL
1016 struct netpoll_info *npinfo;
1017#endif
1018
1019#ifdef CONFIG_NET_NS
1020
1021 struct net *nd_net;
1022#endif
1023
1024
1025 void *ml_priv;
1026
1027
1028 struct net_bridge_port *br_port;
1029
1030 struct macvlan_port *macvlan_port;
1031
1032 struct garp_port *garp_port;
1033
1034
1035 struct device dev;
1036
1037 const struct attribute_group *sysfs_groups[4];
1038
1039
1040 const struct rtnl_link_ops *rtnl_link_ops;
1041
1042
1043 unsigned long vlan_features;
1044
1045
1046#define GSO_MAX_SIZE 65536
1047 unsigned int gso_max_size;
1048
1049#ifdef CONFIG_DCB
1050
1051 const struct dcbnl_rtnl_ops *dcbnl_ops;
1052#endif
1053
1054#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
1055
1056 unsigned int fcoe_ddp_xid;
1057#endif
1058
1059 struct ethtool_rx_ntuple_list ethtool_ntuple_list;
1060};
1061#define to_net_dev(d) container_of(d, struct net_device, dev)
1062
1063#define NETDEV_ALIGN 32
1064
1065static inline
1066struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,
1067 unsigned int index)
1068{
1069 return &dev->_tx[index];
1070}
1071
1072static inline void netdev_for_each_tx_queue(struct net_device *dev,
1073 void (*f)(struct net_device *,
1074 struct netdev_queue *,
1075 void *),
1076 void *arg)
1077{
1078 unsigned int i;
1079
1080 for (i = 0; i < dev->num_tx_queues; i++)
1081 f(dev, &dev->_tx[i], arg);
1082}
1083
1084
1085
1086
1087static inline
1088struct net *dev_net(const struct net_device *dev)
1089{
1090#ifdef CONFIG_NET_NS
1091 return dev->nd_net;
1092#else
1093 return &init_net;
1094#endif
1095}
1096
1097static inline
1098void dev_net_set(struct net_device *dev, struct net *net)
1099{
1100#ifdef CONFIG_NET_NS
1101 release_net(dev->nd_net);
1102 dev->nd_net = hold_net(net);
1103#endif
1104}
1105
1106static inline bool netdev_uses_dsa_tags(struct net_device *dev)
1107{
1108#ifdef CONFIG_NET_DSA_TAG_DSA
1109 if (dev->dsa_ptr != NULL)
1110 return dsa_uses_dsa_tags(dev->dsa_ptr);
1111#endif
1112
1113 return 0;
1114}
1115
1116#ifndef CONFIG_NET_NS
1117static inline void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
1118{
1119 skb->dev = dev;
1120}
1121#else
1122void skb_set_dev(struct sk_buff *skb, struct net_device *dev);
1123#endif
1124
1125static inline bool netdev_uses_trailer_tags(struct net_device *dev)
1126{
1127#ifdef CONFIG_NET_DSA_TAG_TRAILER
1128 if (dev->dsa_ptr != NULL)
1129 return dsa_uses_trailer_tags(dev->dsa_ptr);
1130#endif
1131
1132 return 0;
1133}
1134
1135
1136
1137
1138
1139
1140
1141static inline void *netdev_priv(const struct net_device *dev)
1142{
1143 return (char *)dev + ALIGN(sizeof(struct net_device), NETDEV_ALIGN);
1144}
1145
1146
1147
1148
1149#define SET_NETDEV_DEV(net, pdev) ((net)->dev.parent = (pdev))
1150
1151
1152
1153
1154
1155#define SET_NETDEV_DEVTYPE(net, devtype) ((net)->dev.type = (devtype))
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
1168 int (*poll)(struct napi_struct *, int), int weight);
1169
1170
1171
1172
1173
1174
1175
1176void netif_napi_del(struct napi_struct *napi);
1177
1178struct napi_gro_cb {
1179
1180 void *frag0;
1181
1182
1183 unsigned int frag0_len;
1184
1185
1186 int data_offset;
1187
1188
1189 int same_flow;
1190
1191
1192 int flush;
1193
1194
1195 int count;
1196
1197
1198 int free;
1199};
1200
1201#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb)
1202
1203struct packet_type {
1204 __be16 type;
1205 struct net_device *dev;
1206 int (*func) (struct sk_buff *,
1207 struct net_device *,
1208 struct packet_type *,
1209 struct net_device *);
1210 struct sk_buff *(*gso_segment)(struct sk_buff *skb,
1211 int features);
1212 int (*gso_send_check)(struct sk_buff *skb);
1213 struct sk_buff **(*gro_receive)(struct sk_buff **head,
1214 struct sk_buff *skb);
1215 int (*gro_complete)(struct sk_buff *skb);
1216 void *af_packet_priv;
1217 struct list_head list;
1218};
1219
1220#include <linux/interrupt.h>
1221#include <linux/notifier.h>
1222
1223extern rwlock_t dev_base_lock;
1224
1225
1226#define for_each_netdev(net, d) \
1227 list_for_each_entry(d, &(net)->dev_base_head, dev_list)
1228#define for_each_netdev_reverse(net, d) \
1229 list_for_each_entry_reverse(d, &(net)->dev_base_head, dev_list)
1230#define for_each_netdev_rcu(net, d) \
1231 list_for_each_entry_rcu(d, &(net)->dev_base_head, dev_list)
1232#define for_each_netdev_safe(net, d, n) \
1233 list_for_each_entry_safe(d, n, &(net)->dev_base_head, dev_list)
1234#define for_each_netdev_continue(net, d) \
1235 list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
1236#define for_each_netdev_continue_rcu(net, d) \
1237 list_for_each_entry_continue_rcu(d, &(net)->dev_base_head, dev_list)
1238#define net_device_entry(lh) list_entry(lh, struct net_device, dev_list)
1239
1240static inline struct net_device *next_net_device(struct net_device *dev)
1241{
1242 struct list_head *lh;
1243 struct net *net;
1244
1245 net = dev_net(dev);
1246 lh = dev->dev_list.next;
1247 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1248}
1249
1250static inline struct net_device *next_net_device_rcu(struct net_device *dev)
1251{
1252 struct list_head *lh;
1253 struct net *net;
1254
1255 net = dev_net(dev);
1256 lh = rcu_dereference(dev->dev_list.next);
1257 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1258}
1259
1260static inline struct net_device *first_net_device(struct net *net)
1261{
1262 return list_empty(&net->dev_base_head) ? NULL :
1263 net_device_entry(net->dev_base_head.next);
1264}
1265
1266extern int netdev_boot_setup_check(struct net_device *dev);
1267extern unsigned long netdev_boot_base(const char *prefix, int unit);
1268extern struct net_device *dev_getbyhwaddr(struct net *net, unsigned short type, char *hwaddr);
1269extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
1270extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
1271extern void dev_add_pack(struct packet_type *pt);
1272extern void dev_remove_pack(struct packet_type *pt);
1273extern void __dev_remove_pack(struct packet_type *pt);
1274
1275extern struct net_device *dev_get_by_flags(struct net *net, unsigned short flags,
1276 unsigned short mask);
1277extern struct net_device *dev_get_by_name(struct net *net, const char *name);
1278extern struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);
1279extern struct net_device *__dev_get_by_name(struct net *net, const char *name);
1280extern int dev_alloc_name(struct net_device *dev, const char *name);
1281extern int dev_open(struct net_device *dev);
1282extern int dev_close(struct net_device *dev);
1283extern void dev_disable_lro(struct net_device *dev);
1284extern int dev_queue_xmit(struct sk_buff *skb);
1285extern int register_netdevice(struct net_device *dev);
1286extern void unregister_netdevice_queue(struct net_device *dev,
1287 struct list_head *head);
1288extern void unregister_netdevice_many(struct list_head *head);
1289static inline void unregister_netdevice(struct net_device *dev)
1290{
1291 unregister_netdevice_queue(dev, NULL);
1292}
1293
1294extern void free_netdev(struct net_device *dev);
1295extern void synchronize_net(void);
1296extern int register_netdevice_notifier(struct notifier_block *nb);
1297extern int unregister_netdevice_notifier(struct notifier_block *nb);
1298extern int init_dummy_netdev(struct net_device *dev);
1299extern void netdev_resync_ops(struct net_device *dev);
1300
1301extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
1302extern struct net_device *dev_get_by_index(struct net *net, int ifindex);
1303extern struct net_device *__dev_get_by_index(struct net *net, int ifindex);
1304extern struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
1305extern int dev_restart(struct net_device *dev);
1306#ifdef CONFIG_NETPOLL_TRAP
1307extern int netpoll_trap(void);
1308#endif
1309extern int skb_gro_receive(struct sk_buff **head,
1310 struct sk_buff *skb);
1311extern void skb_gro_reset_offset(struct sk_buff *skb);
1312
1313static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
1314{
1315 return NAPI_GRO_CB(skb)->data_offset;
1316}
1317
1318static inline unsigned int skb_gro_len(const struct sk_buff *skb)
1319{
1320 return skb->len - NAPI_GRO_CB(skb)->data_offset;
1321}
1322
1323static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len)
1324{
1325 NAPI_GRO_CB(skb)->data_offset += len;
1326}
1327
1328static inline void *skb_gro_header_fast(struct sk_buff *skb,
1329 unsigned int offset)
1330{
1331 return NAPI_GRO_CB(skb)->frag0 + offset;
1332}
1333
1334static inline int skb_gro_header_hard(struct sk_buff *skb, unsigned int hlen)
1335{
1336 return NAPI_GRO_CB(skb)->frag0_len < hlen;
1337}
1338
1339static inline void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen,
1340 unsigned int offset)
1341{
1342 NAPI_GRO_CB(skb)->frag0 = NULL;
1343 NAPI_GRO_CB(skb)->frag0_len = 0;
1344 return pskb_may_pull(skb, hlen) ? skb->data + offset : NULL;
1345}
1346
1347static inline void *skb_gro_mac_header(struct sk_buff *skb)
1348{
1349 return NAPI_GRO_CB(skb)->frag0 ?: skb_mac_header(skb);
1350}
1351
1352static inline void *skb_gro_network_header(struct sk_buff *skb)
1353{
1354 return (NAPI_GRO_CB(skb)->frag0 ?: skb->data) +
1355 skb_network_offset(skb);
1356}
1357
1358static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
1359 unsigned short type,
1360 const void *daddr, const void *saddr,
1361 unsigned len)
1362{
1363 if (!dev->header_ops || !dev->header_ops->create)
1364 return 0;
1365
1366 return dev->header_ops->create(skb, dev, type, daddr, saddr, len);
1367}
1368
1369static inline int dev_parse_header(const struct sk_buff *skb,
1370 unsigned char *haddr)
1371{
1372 const struct net_device *dev = skb->dev;
1373
1374 if (!dev->header_ops || !dev->header_ops->parse)
1375 return 0;
1376 return dev->header_ops->parse(skb, haddr);
1377}
1378
1379typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
1380extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
1381static inline int unregister_gifconf(unsigned int family)
1382{
1383 return register_gifconf(family, NULL);
1384}
1385
1386
1387
1388
1389struct softnet_data {
1390 struct Qdisc *output_queue;
1391 struct Qdisc **output_queue_tailp;
1392 struct list_head poll_list;
1393 struct sk_buff *completion_queue;
1394 struct sk_buff_head process_queue;
1395
1396
1397 unsigned int processed;
1398 unsigned int time_squeeze;
1399 unsigned int cpu_collision;
1400 unsigned int received_rps;
1401
1402#ifdef CONFIG_RPS
1403 struct softnet_data *rps_ipi_list;
1404
1405
1406 struct call_single_data csd ____cacheline_aligned_in_smp;
1407 struct softnet_data *rps_ipi_next;
1408 unsigned int cpu;
1409 unsigned int input_queue_head;
1410 unsigned int input_queue_tail;
1411#endif
1412 unsigned dropped;
1413 struct sk_buff_head input_pkt_queue;
1414 struct napi_struct backlog;
1415};
1416
1417static inline void input_queue_head_incr(struct softnet_data *sd)
1418{
1419#ifdef CONFIG_RPS
1420 sd->input_queue_head++;
1421#endif
1422}
1423
1424static inline void input_queue_tail_incr_save(struct softnet_data *sd,
1425 unsigned int *qtail)
1426{
1427#ifdef CONFIG_RPS
1428 *qtail = ++sd->input_queue_tail;
1429#endif
1430}
1431
1432DECLARE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
1433
1434#define HAVE_NETIF_QUEUE
1435
1436extern void __netif_schedule(struct Qdisc *q);
1437
1438static inline void netif_schedule_queue(struct netdev_queue *txq)
1439{
1440 if (!test_bit(__QUEUE_STATE_XOFF, &txq->state))
1441 __netif_schedule(txq->qdisc);
1442}
1443
1444static inline void netif_tx_schedule_all(struct net_device *dev)
1445{
1446 unsigned int i;
1447
1448 for (i = 0; i < dev->num_tx_queues; i++)
1449 netif_schedule_queue(netdev_get_tx_queue(dev, i));
1450}
1451
1452static inline void netif_tx_start_queue(struct netdev_queue *dev_queue)
1453{
1454 clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1455}
1456
1457
1458
1459
1460
1461
1462
1463static inline void netif_start_queue(struct net_device *dev)
1464{
1465 netif_tx_start_queue(netdev_get_tx_queue(dev, 0));
1466}
1467
1468static inline void netif_tx_start_all_queues(struct net_device *dev)
1469{
1470 unsigned int i;
1471
1472 for (i = 0; i < dev->num_tx_queues; i++) {
1473 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1474 netif_tx_start_queue(txq);
1475 }
1476}
1477
1478static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue)
1479{
1480#ifdef CONFIG_NETPOLL_TRAP
1481 if (netpoll_trap()) {
1482 netif_tx_start_queue(dev_queue);
1483 return;
1484 }
1485#endif
1486 if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state))
1487 __netif_schedule(dev_queue->qdisc);
1488}
1489
1490
1491
1492
1493
1494
1495
1496
1497static inline void netif_wake_queue(struct net_device *dev)
1498{
1499 netif_tx_wake_queue(netdev_get_tx_queue(dev, 0));
1500}
1501
1502static inline void netif_tx_wake_all_queues(struct net_device *dev)
1503{
1504 unsigned int i;
1505
1506 for (i = 0; i < dev->num_tx_queues; i++) {
1507 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1508 netif_tx_wake_queue(txq);
1509 }
1510}
1511
1512static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue)
1513{
1514 set_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1515}
1516
1517
1518
1519
1520
1521
1522
1523
1524static inline void netif_stop_queue(struct net_device *dev)
1525{
1526 netif_tx_stop_queue(netdev_get_tx_queue(dev, 0));
1527}
1528
1529static inline void netif_tx_stop_all_queues(struct net_device *dev)
1530{
1531 unsigned int i;
1532
1533 for (i = 0; i < dev->num_tx_queues; i++) {
1534 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1535 netif_tx_stop_queue(txq);
1536 }
1537}
1538
1539static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue)
1540{
1541 return test_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1542}
1543
1544
1545
1546
1547
1548
1549
1550static inline int netif_queue_stopped(const struct net_device *dev)
1551{
1552 return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0));
1553}
1554
1555static inline int netif_tx_queue_frozen(const struct netdev_queue *dev_queue)
1556{
1557 return test_bit(__QUEUE_STATE_FROZEN, &dev_queue->state);
1558}
1559
1560
1561
1562
1563
1564
1565
1566static inline int netif_running(const struct net_device *dev)
1567{
1568 return test_bit(__LINK_STATE_START, &dev->state);
1569}
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index)
1586{
1587 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1588
1589 netif_tx_start_queue(txq);
1590}
1591
1592
1593
1594
1595
1596
1597
1598
1599static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index)
1600{
1601 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1602#ifdef CONFIG_NETPOLL_TRAP
1603 if (netpoll_trap())
1604 return;
1605#endif
1606 netif_tx_stop_queue(txq);
1607}
1608
1609
1610
1611
1612
1613
1614
1615
1616static inline int __netif_subqueue_stopped(const struct net_device *dev,
1617 u16 queue_index)
1618{
1619 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1620
1621 return netif_tx_queue_stopped(txq);
1622}
1623
1624static inline int netif_subqueue_stopped(const struct net_device *dev,
1625 struct sk_buff *skb)
1626{
1627 return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb));
1628}
1629
1630
1631
1632
1633
1634
1635
1636
1637static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
1638{
1639 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1640#ifdef CONFIG_NETPOLL_TRAP
1641 if (netpoll_trap())
1642 return;
1643#endif
1644 if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state))
1645 __netif_schedule(txq->qdisc);
1646}
1647
1648
1649
1650
1651
1652
1653
1654static inline int netif_is_multiqueue(const struct net_device *dev)
1655{
1656 return (dev->num_tx_queues > 1);
1657}
1658
1659extern void netif_set_real_num_tx_queues(struct net_device *dev,
1660 unsigned int txq);
1661
1662
1663
1664
1665
1666extern void dev_kfree_skb_irq(struct sk_buff *skb);
1667
1668
1669
1670
1671
1672extern void dev_kfree_skb_any(struct sk_buff *skb);
1673
1674#define HAVE_NETIF_RX 1
1675extern int netif_rx(struct sk_buff *skb);
1676extern int netif_rx_ni(struct sk_buff *skb);
1677#define HAVE_NETIF_RECEIVE_SKB 1
1678extern int netif_receive_skb(struct sk_buff *skb);
1679extern gro_result_t dev_gro_receive(struct napi_struct *napi,
1680 struct sk_buff *skb);
1681extern gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb);
1682extern gro_result_t napi_gro_receive(struct napi_struct *napi,
1683 struct sk_buff *skb);
1684extern void napi_reuse_skb(struct napi_struct *napi,
1685 struct sk_buff *skb);
1686extern struct sk_buff * napi_get_frags(struct napi_struct *napi);
1687extern gro_result_t napi_frags_finish(struct napi_struct *napi,
1688 struct sk_buff *skb,
1689 gro_result_t ret);
1690extern struct sk_buff * napi_frags_skb(struct napi_struct *napi);
1691extern gro_result_t napi_gro_frags(struct napi_struct *napi);
1692
1693static inline void napi_free_frags(struct napi_struct *napi)
1694{
1695 kfree_skb(napi->skb);
1696 napi->skb = NULL;
1697}
1698
1699extern void netif_nit_deliver(struct sk_buff *skb);
1700extern int dev_valid_name(const char *name);
1701extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
1702extern int dev_ethtool(struct net *net, struct ifreq *);
1703extern unsigned dev_get_flags(const struct net_device *);
1704extern int __dev_change_flags(struct net_device *, unsigned int flags);
1705extern int dev_change_flags(struct net_device *, unsigned);
1706extern void __dev_notify_flags(struct net_device *, unsigned int old_flags);
1707extern int dev_change_name(struct net_device *, const char *);
1708extern int dev_set_alias(struct net_device *, const char *, size_t);
1709extern int dev_change_net_namespace(struct net_device *,
1710 struct net *, const char *);
1711extern int dev_set_mtu(struct net_device *, int);
1712extern int dev_set_mac_address(struct net_device *,
1713 struct sockaddr *);
1714extern int dev_hard_start_xmit(struct sk_buff *skb,
1715 struct net_device *dev,
1716 struct netdev_queue *txq);
1717extern int dev_forward_skb(struct net_device *dev,
1718 struct sk_buff *skb);
1719
1720extern int netdev_budget;
1721
1722
1723extern void netdev_run_todo(void);
1724
1725
1726
1727
1728
1729
1730
1731static inline void dev_put(struct net_device *dev)
1732{
1733 atomic_dec(&dev->refcnt);
1734}
1735
1736
1737
1738
1739
1740
1741
1742static inline void dev_hold(struct net_device *dev)
1743{
1744 atomic_inc(&dev->refcnt);
1745}
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756extern void linkwatch_fire_event(struct net_device *dev);
1757extern void linkwatch_forget_dev(struct net_device *dev);
1758
1759
1760
1761
1762
1763
1764
1765static inline int netif_carrier_ok(const struct net_device *dev)
1766{
1767 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
1768}
1769
1770extern unsigned long dev_trans_start(struct net_device *dev);
1771
1772extern void __netdev_watchdog_up(struct net_device *dev);
1773
1774extern void netif_carrier_on(struct net_device *dev);
1775
1776extern void netif_carrier_off(struct net_device *dev);
1777
1778extern void netif_notify_peers(struct net_device *dev);
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793static inline void netif_dormant_on(struct net_device *dev)
1794{
1795 if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state))
1796 linkwatch_fire_event(dev);
1797}
1798
1799
1800
1801
1802
1803
1804
1805static inline void netif_dormant_off(struct net_device *dev)
1806{
1807 if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state))
1808 linkwatch_fire_event(dev);
1809}
1810
1811
1812
1813
1814
1815
1816
1817static inline int netif_dormant(const struct net_device *dev)
1818{
1819 return test_bit(__LINK_STATE_DORMANT, &dev->state);
1820}
1821
1822
1823
1824
1825
1826
1827
1828
1829static inline int netif_oper_up(const struct net_device *dev)
1830{
1831 return (dev->operstate == IF_OPER_UP ||
1832 dev->operstate == IF_OPER_UNKNOWN );
1833}
1834
1835
1836
1837
1838
1839
1840
1841static inline int netif_device_present(struct net_device *dev)
1842{
1843 return test_bit(__LINK_STATE_PRESENT, &dev->state);
1844}
1845
1846extern void netif_device_detach(struct net_device *dev);
1847
1848extern void netif_device_attach(struct net_device *dev);
1849
1850
1851
1852
1853#define HAVE_NETIF_MSG 1
1854
1855enum {
1856 NETIF_MSG_DRV = 0x0001,
1857 NETIF_MSG_PROBE = 0x0002,
1858 NETIF_MSG_LINK = 0x0004,
1859 NETIF_MSG_TIMER = 0x0008,
1860 NETIF_MSG_IFDOWN = 0x0010,
1861 NETIF_MSG_IFUP = 0x0020,
1862 NETIF_MSG_RX_ERR = 0x0040,
1863 NETIF_MSG_TX_ERR = 0x0080,
1864 NETIF_MSG_TX_QUEUED = 0x0100,
1865 NETIF_MSG_INTR = 0x0200,
1866 NETIF_MSG_TX_DONE = 0x0400,
1867 NETIF_MSG_RX_STATUS = 0x0800,
1868 NETIF_MSG_PKTDATA = 0x1000,
1869 NETIF_MSG_HW = 0x2000,
1870 NETIF_MSG_WOL = 0x4000,
1871};
1872
1873#define netif_msg_drv(p) ((p)->msg_enable & NETIF_MSG_DRV)
1874#define netif_msg_probe(p) ((p)->msg_enable & NETIF_MSG_PROBE)
1875#define netif_msg_link(p) ((p)->msg_enable & NETIF_MSG_LINK)
1876#define netif_msg_timer(p) ((p)->msg_enable & NETIF_MSG_TIMER)
1877#define netif_msg_ifdown(p) ((p)->msg_enable & NETIF_MSG_IFDOWN)
1878#define netif_msg_ifup(p) ((p)->msg_enable & NETIF_MSG_IFUP)
1879#define netif_msg_rx_err(p) ((p)->msg_enable & NETIF_MSG_RX_ERR)
1880#define netif_msg_tx_err(p) ((p)->msg_enable & NETIF_MSG_TX_ERR)
1881#define netif_msg_tx_queued(p) ((p)->msg_enable & NETIF_MSG_TX_QUEUED)
1882#define netif_msg_intr(p) ((p)->msg_enable & NETIF_MSG_INTR)
1883#define netif_msg_tx_done(p) ((p)->msg_enable & NETIF_MSG_TX_DONE)
1884#define netif_msg_rx_status(p) ((p)->msg_enable & NETIF_MSG_RX_STATUS)
1885#define netif_msg_pktdata(p) ((p)->msg_enable & NETIF_MSG_PKTDATA)
1886#define netif_msg_hw(p) ((p)->msg_enable & NETIF_MSG_HW)
1887#define netif_msg_wol(p) ((p)->msg_enable & NETIF_MSG_WOL)
1888
1889static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
1890{
1891
1892 if (debug_value < 0 || debug_value >= (sizeof(u32) * 8))
1893 return default_msg_enable_bits;
1894 if (debug_value == 0)
1895 return 0;
1896
1897 return (1 << debug_value) - 1;
1898}
1899
1900static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
1901{
1902 spin_lock(&txq->_xmit_lock);
1903 txq->xmit_lock_owner = cpu;
1904}
1905
1906static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
1907{
1908 spin_lock_bh(&txq->_xmit_lock);
1909 txq->xmit_lock_owner = smp_processor_id();
1910}
1911
1912static inline int __netif_tx_trylock(struct netdev_queue *txq)
1913{
1914 int ok = spin_trylock(&txq->_xmit_lock);
1915 if (likely(ok))
1916 txq->xmit_lock_owner = smp_processor_id();
1917 return ok;
1918}
1919
1920static inline void __netif_tx_unlock(struct netdev_queue *txq)
1921{
1922 txq->xmit_lock_owner = -1;
1923 spin_unlock(&txq->_xmit_lock);
1924}
1925
1926static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
1927{
1928 txq->xmit_lock_owner = -1;
1929 spin_unlock_bh(&txq->_xmit_lock);
1930}
1931
1932static inline void txq_trans_update(struct netdev_queue *txq)
1933{
1934 if (txq->xmit_lock_owner != -1)
1935 txq->trans_start = jiffies;
1936}
1937
1938
1939
1940
1941
1942
1943
1944static inline void netif_tx_lock(struct net_device *dev)
1945{
1946 unsigned int i;
1947 int cpu;
1948
1949 spin_lock(&dev->tx_global_lock);
1950 cpu = smp_processor_id();
1951 for (i = 0; i < dev->num_tx_queues; i++) {
1952 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1953
1954
1955
1956
1957
1958
1959
1960 __netif_tx_lock(txq, cpu);
1961 set_bit(__QUEUE_STATE_FROZEN, &txq->state);
1962 __netif_tx_unlock(txq);
1963 }
1964}
1965
1966static inline void netif_tx_lock_bh(struct net_device *dev)
1967{
1968 local_bh_disable();
1969 netif_tx_lock(dev);
1970}
1971
1972static inline void netif_tx_unlock(struct net_device *dev)
1973{
1974 unsigned int i;
1975
1976 for (i = 0; i < dev->num_tx_queues; i++) {
1977 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1978
1979
1980
1981
1982
1983 clear_bit(__QUEUE_STATE_FROZEN, &txq->state);
1984 netif_schedule_queue(txq);
1985 }
1986 spin_unlock(&dev->tx_global_lock);
1987}
1988
1989static inline void netif_tx_unlock_bh(struct net_device *dev)
1990{
1991 netif_tx_unlock(dev);
1992 local_bh_enable();
1993}
1994
1995#define HARD_TX_LOCK(dev, txq, cpu) { \
1996 if ((dev->features & NETIF_F_LLTX) == 0) { \
1997 __netif_tx_lock(txq, cpu); \
1998 } \
1999}
2000
2001#define HARD_TX_UNLOCK(dev, txq) { \
2002 if ((dev->features & NETIF_F_LLTX) == 0) { \
2003 __netif_tx_unlock(txq); \
2004 } \
2005}
2006
2007static inline void netif_tx_disable(struct net_device *dev)
2008{
2009 unsigned int i;
2010 int cpu;
2011
2012 local_bh_disable();
2013 cpu = smp_processor_id();
2014 for (i = 0; i < dev->num_tx_queues; i++) {
2015 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
2016
2017 __netif_tx_lock(txq, cpu);
2018 netif_tx_stop_queue(txq);
2019 __netif_tx_unlock(txq);
2020 }
2021 local_bh_enable();
2022}
2023
2024static inline void netif_addr_lock(struct net_device *dev)
2025{
2026 spin_lock(&dev->addr_list_lock);
2027}
2028
2029static inline void netif_addr_lock_bh(struct net_device *dev)
2030{
2031 spin_lock_bh(&dev->addr_list_lock);
2032}
2033
2034static inline void netif_addr_unlock(struct net_device *dev)
2035{
2036 spin_unlock(&dev->addr_list_lock);
2037}
2038
2039static inline void netif_addr_unlock_bh(struct net_device *dev)
2040{
2041 spin_unlock_bh(&dev->addr_list_lock);
2042}
2043
2044
2045
2046
2047
2048#define for_each_dev_addr(dev, ha) \
2049 list_for_each_entry_rcu(ha, &dev->dev_addrs.list, list)
2050
2051
2052
2053extern void ether_setup(struct net_device *dev);
2054
2055
2056extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
2057 void (*setup)(struct net_device *),
2058 unsigned int queue_count);
2059#define alloc_netdev(sizeof_priv, name, setup) \
2060 alloc_netdev_mq(sizeof_priv, name, setup, 1)
2061extern int register_netdev(struct net_device *dev);
2062extern void unregister_netdev(struct net_device *dev);
2063
2064
2065extern int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
2066 struct netdev_hw_addr_list *from_list,
2067 int addr_len, unsigned char addr_type);
2068extern void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
2069 struct netdev_hw_addr_list *from_list,
2070 int addr_len, unsigned char addr_type);
2071extern int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
2072 struct netdev_hw_addr_list *from_list,
2073 int addr_len);
2074extern void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
2075 struct netdev_hw_addr_list *from_list,
2076 int addr_len);
2077extern void __hw_addr_flush(struct netdev_hw_addr_list *list);
2078extern void __hw_addr_init(struct netdev_hw_addr_list *list);
2079
2080
2081extern int dev_addr_add(struct net_device *dev, unsigned char *addr,
2082 unsigned char addr_type);
2083extern int dev_addr_del(struct net_device *dev, unsigned char *addr,
2084 unsigned char addr_type);
2085extern int dev_addr_add_multiple(struct net_device *to_dev,
2086 struct net_device *from_dev,
2087 unsigned char addr_type);
2088extern int dev_addr_del_multiple(struct net_device *to_dev,
2089 struct net_device *from_dev,
2090 unsigned char addr_type);
2091extern void dev_addr_flush(struct net_device *dev);
2092extern int dev_addr_init(struct net_device *dev);
2093
2094
2095extern int dev_uc_add(struct net_device *dev, unsigned char *addr);
2096extern int dev_uc_del(struct net_device *dev, unsigned char *addr);
2097extern int dev_uc_sync(struct net_device *to, struct net_device *from);
2098extern void dev_uc_unsync(struct net_device *to, struct net_device *from);
2099extern void dev_uc_flush(struct net_device *dev);
2100extern void dev_uc_init(struct net_device *dev);
2101
2102
2103extern int dev_mc_add(struct net_device *dev, unsigned char *addr);
2104extern int dev_mc_add_global(struct net_device *dev, unsigned char *addr);
2105extern int dev_mc_del(struct net_device *dev, unsigned char *addr);
2106extern int dev_mc_del_global(struct net_device *dev, unsigned char *addr);
2107extern int dev_mc_sync(struct net_device *to, struct net_device *from);
2108extern void dev_mc_unsync(struct net_device *to, struct net_device *from);
2109extern void dev_mc_flush(struct net_device *dev);
2110extern void dev_mc_init(struct net_device *dev);
2111
2112
2113extern void dev_set_rx_mode(struct net_device *dev);
2114extern void __dev_set_rx_mode(struct net_device *dev);
2115extern int dev_set_promiscuity(struct net_device *dev, int inc);
2116extern int dev_set_allmulti(struct net_device *dev, int inc);
2117extern void netdev_state_change(struct net_device *dev);
2118extern int netdev_bonding_change(struct net_device *dev,
2119 unsigned long event);
2120extern void netdev_features_change(struct net_device *dev);
2121
2122extern void dev_load(struct net *net, const char *name);
2123extern void dev_mcast_init(void);
2124extern const struct net_device_stats *dev_get_stats(struct net_device *dev);
2125extern void dev_txq_stats_fold(const struct net_device *dev, struct net_device_stats *stats);
2126
2127extern int netdev_max_backlog;
2128extern int netdev_tstamp_prequeue;
2129extern int weight_p;
2130extern int netdev_set_master(struct net_device *dev, struct net_device *master);
2131extern int skb_checksum_help(struct sk_buff *skb);
2132extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features);
2133#ifdef CONFIG_BUG
2134extern void netdev_rx_csum_fault(struct net_device *dev);
2135#else
2136static inline void netdev_rx_csum_fault(struct net_device *dev)
2137{
2138}
2139#endif
2140
2141extern void net_enable_timestamp(void);
2142extern void net_disable_timestamp(void);
2143
2144#ifdef CONFIG_PROC_FS
2145extern void *dev_seq_start(struct seq_file *seq, loff_t *pos);
2146extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
2147extern void dev_seq_stop(struct seq_file *seq, void *v);
2148#endif
2149
2150extern int netdev_class_create_file(struct class_attribute *class_attr);
2151extern void netdev_class_remove_file(struct class_attribute *class_attr);
2152
2153extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len);
2154
2155extern void linkwatch_run_queue(void);
2156
2157unsigned long netdev_increment_features(unsigned long all, unsigned long one,
2158 unsigned long mask);
2159unsigned long netdev_fix_features(unsigned long features, const char *name);
2160
2161void netif_stacked_transfer_operstate(const struct net_device *rootdev,
2162 struct net_device *dev);
2163
2164static inline int net_gso_ok(int features, int gso_type)
2165{
2166 int feature = gso_type << NETIF_F_GSO_SHIFT;
2167 return (features & feature) == feature;
2168}
2169
2170static inline int skb_gso_ok(struct sk_buff *skb, int features)
2171{
2172 return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&
2173 (!skb_has_frags(skb) || (features & NETIF_F_FRAGLIST));
2174}
2175
2176static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb)
2177{
2178 return skb_is_gso(skb) &&
2179 (!skb_gso_ok(skb, dev->features) ||
2180 unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
2181}
2182
2183static inline void netif_set_gso_max_size(struct net_device *dev,
2184 unsigned int size)
2185{
2186 dev->gso_max_size = size;
2187}
2188
2189extern int __skb_bond_should_drop(struct sk_buff *skb,
2190 struct net_device *master);
2191
2192static inline int skb_bond_should_drop(struct sk_buff *skb,
2193 struct net_device *master)
2194{
2195 if (master)
2196 return __skb_bond_should_drop(skb, master);
2197 return 0;
2198}
2199
2200extern struct pernet_operations __net_initdata loopback_net_ops;
2201
2202static inline int dev_ethtool_get_settings(struct net_device *dev,
2203 struct ethtool_cmd *cmd)
2204{
2205 if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings)
2206 return -EOPNOTSUPP;
2207 return dev->ethtool_ops->get_settings(dev, cmd);
2208}
2209
2210static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
2211{
2212 if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum)
2213 return 0;
2214 return dev->ethtool_ops->get_rx_csum(dev);
2215}
2216
2217static inline u32 dev_ethtool_get_flags(struct net_device *dev)
2218{
2219 if (!dev->ethtool_ops || !dev->ethtool_ops->get_flags)
2220 return 0;
2221 return dev->ethtool_ops->get_flags(dev);
2222}
2223
2224
2225
2226
2227
2228static inline const char *netdev_name(const struct net_device *dev)
2229{
2230 if (dev->reg_state != NETREG_REGISTERED)
2231 return "(unregistered net_device)";
2232 return dev->name;
2233}
2234
2235#define netdev_printk(level, netdev, format, args...) \
2236 dev_printk(level, (netdev)->dev.parent, \
2237 "%s: " format, \
2238 netdev_name(netdev), ##args)
2239
2240#define netdev_emerg(dev, format, args...) \
2241 netdev_printk(KERN_EMERG, dev, format, ##args)
2242#define netdev_alert(dev, format, args...) \
2243 netdev_printk(KERN_ALERT, dev, format, ##args)
2244#define netdev_crit(dev, format, args...) \
2245 netdev_printk(KERN_CRIT, dev, format, ##args)
2246#define netdev_err(dev, format, args...) \
2247 netdev_printk(KERN_ERR, dev, format, ##args)
2248#define netdev_warn(dev, format, args...) \
2249 netdev_printk(KERN_WARNING, dev, format, ##args)
2250#define netdev_notice(dev, format, args...) \
2251 netdev_printk(KERN_NOTICE, dev, format, ##args)
2252#define netdev_info(dev, format, args...) \
2253 netdev_printk(KERN_INFO, dev, format, ##args)
2254
2255#if defined(DEBUG)
2256#define netdev_dbg(__dev, format, args...) \
2257 netdev_printk(KERN_DEBUG, __dev, format, ##args)
2258#elif defined(CONFIG_DYNAMIC_DEBUG)
2259#define netdev_dbg(__dev, format, args...) \
2260do { \
2261 dynamic_dev_dbg((__dev)->dev.parent, "%s: " format, \
2262 netdev_name(__dev), ##args); \
2263} while (0)
2264#else
2265#define netdev_dbg(__dev, format, args...) \
2266({ \
2267 if (0) \
2268 netdev_printk(KERN_DEBUG, __dev, format, ##args); \
2269 0; \
2270})
2271#endif
2272
2273#if defined(VERBOSE_DEBUG)
2274#define netdev_vdbg netdev_dbg
2275#else
2276
2277#define netdev_vdbg(dev, format, args...) \
2278({ \
2279 if (0) \
2280 netdev_printk(KERN_DEBUG, dev, format, ##args); \
2281 0; \
2282})
2283#endif
2284
2285
2286
2287
2288
2289
2290#define netdev_WARN(dev, format, args...) \
2291 WARN(1, "netdevice: %s\n" format, netdev_name(dev), ##args);
2292
2293
2294
2295#define netif_printk(priv, type, level, dev, fmt, args...) \
2296do { \
2297 if (netif_msg_##type(priv)) \
2298 netdev_printk(level, (dev), fmt, ##args); \
2299} while (0)
2300
2301#define netif_emerg(priv, type, dev, fmt, args...) \
2302 netif_printk(priv, type, KERN_EMERG, dev, fmt, ##args)
2303#define netif_alert(priv, type, dev, fmt, args...) \
2304 netif_printk(priv, type, KERN_ALERT, dev, fmt, ##args)
2305#define netif_crit(priv, type, dev, fmt, args...) \
2306 netif_printk(priv, type, KERN_CRIT, dev, fmt, ##args)
2307#define netif_err(priv, type, dev, fmt, args...) \
2308 netif_printk(priv, type, KERN_ERR, dev, fmt, ##args)
2309#define netif_warn(priv, type, dev, fmt, args...) \
2310 netif_printk(priv, type, KERN_WARNING, dev, fmt, ##args)
2311#define netif_notice(priv, type, dev, fmt, args...) \
2312 netif_printk(priv, type, KERN_NOTICE, dev, fmt, ##args)
2313#define netif_info(priv, type, dev, fmt, args...) \
2314 netif_printk(priv, type, KERN_INFO, (dev), fmt, ##args)
2315
2316#if defined(DEBUG)
2317#define netif_dbg(priv, type, dev, format, args...) \
2318 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args)
2319#elif defined(CONFIG_DYNAMIC_DEBUG)
2320#define netif_dbg(priv, type, netdev, format, args...) \
2321do { \
2322 if (netif_msg_##type(priv)) \
2323 dynamic_dev_dbg((netdev)->dev.parent, \
2324 "%s: " format, \
2325 netdev_name(netdev), ##args); \
2326} while (0)
2327#else
2328#define netif_dbg(priv, type, dev, format, args...) \
2329({ \
2330 if (0) \
2331 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args); \
2332 0; \
2333})
2334#endif
2335
2336#if defined(VERBOSE_DEBUG)
2337#define netif_vdbg netif_dbg
2338#else
2339#define netif_vdbg(priv, type, dev, format, args...) \
2340({ \
2341 if (0) \
2342 netif_printk(priv, type, KERN_DEBUG, dev, format, ##args); \
2343 0; \
2344})
2345#endif
2346
2347#endif
2348
2349#endif
2350