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