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
32#ifdef __KERNEL__
33#include <linux/timer.h>
34#include <linux/delay.h>
35#include <linux/mm.h>
36#include <asm/atomic.h>
37#include <asm/cache.h>
38#include <asm/byteorder.h>
39
40#include <linux/device.h>
41#include <linux/percpu.h>
42#include <linux/dmaengine.h>
43#include <linux/workqueue.h>
44
45#include <net/net_namespace.h>
46#include <net/dsa.h>
47#ifdef CONFIG_DCB
48#include <net/dcbnl.h>
49#endif
50
51struct vlan_group;
52struct ethtool_ops;
53struct netpoll_info;
54
55struct wireless_dev;
56
57#define SET_ETHTOOL_OPS(netdev,ops) \
58 ( (netdev)->ethtool_ops = (ops) )
59
60#define HAVE_ALLOC_NETDEV
61
62#define HAVE_FREE_NETDEV
63#define HAVE_NETDEV_PRIV
64
65#define NET_XMIT_SUCCESS 0
66#define NET_XMIT_DROP 1
67#define NET_XMIT_CN 2
68#define NET_XMIT_POLICED 3
69#define NET_XMIT_MASK 0xFFFF
70
71
72#define NET_RX_SUCCESS 0
73#define NET_RX_DROP 1
74#define NET_RX_CN_LOW 2
75#define NET_RX_CN_MOD 3
76#define NET_RX_CN_HIGH 4
77#define NET_RX_BAD 5
78
79
80
81
82#define net_xmit_eval(e) ((e) == NET_XMIT_CN? 0 : (e))
83#define net_xmit_errno(e) ((e) != NET_XMIT_CN ? -ENOBUFS : 0)
84
85#endif
86
87#define MAX_ADDR_LEN 32
88
89
90#define NETDEV_TX_OK 0
91#define NETDEV_TX_BUSY 1
92#define NETDEV_TX_LOCKED -1
93
94#ifdef __KERNEL__
95
96
97
98
99
100
101#if defined(CONFIG_WLAN_80211) || defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
102# if defined(CONFIG_MAC80211_MESH)
103# define LL_MAX_HEADER 128
104# else
105# define LL_MAX_HEADER 96
106# endif
107#elif defined(CONFIG_TR) || defined(CONFIG_TR_MODULE)
108# define LL_MAX_HEADER 48
109#else
110# define LL_MAX_HEADER 32
111#endif
112
113#if !defined(CONFIG_NET_IPIP) && !defined(CONFIG_NET_IPIP_MODULE) && \
114 !defined(CONFIG_NET_IPGRE) && !defined(CONFIG_NET_IPGRE_MODULE) && \
115 !defined(CONFIG_IPV6_SIT) && !defined(CONFIG_IPV6_SIT_MODULE) && \
116 !defined(CONFIG_IPV6_TUNNEL) && !defined(CONFIG_IPV6_TUNNEL_MODULE)
117#define MAX_HEADER LL_MAX_HEADER
118#else
119#define MAX_HEADER (LL_MAX_HEADER + 48)
120#endif
121
122#endif
123
124
125
126
127
128
129struct net_device_stats
130{
131 unsigned long rx_packets;
132 unsigned long tx_packets;
133 unsigned long rx_bytes;
134 unsigned long tx_bytes;
135 unsigned long rx_errors;
136 unsigned long tx_errors;
137 unsigned long rx_dropped;
138 unsigned long tx_dropped;
139 unsigned long multicast;
140 unsigned long collisions;
141
142
143 unsigned long rx_length_errors;
144 unsigned long rx_over_errors;
145 unsigned long rx_crc_errors;
146 unsigned long rx_frame_errors;
147 unsigned long rx_fifo_errors;
148 unsigned long rx_missed_errors;
149
150
151 unsigned long tx_aborted_errors;
152 unsigned long tx_carrier_errors;
153 unsigned long tx_fifo_errors;
154 unsigned long tx_heartbeat_errors;
155 unsigned long tx_window_errors;
156
157
158 unsigned long rx_compressed;
159 unsigned long tx_compressed;
160};
161
162
163
164enum {
165 IF_PORT_UNKNOWN = 0,
166 IF_PORT_10BASE2,
167 IF_PORT_10BASET,
168 IF_PORT_AUI,
169 IF_PORT_100BASET,
170 IF_PORT_100BASETX,
171 IF_PORT_100BASEFX
172};
173
174#ifdef __KERNEL__
175
176#include <linux/cache.h>
177#include <linux/skbuff.h>
178
179struct neighbour;
180struct neigh_parms;
181struct sk_buff;
182
183struct netif_rx_stats
184{
185 unsigned total;
186 unsigned dropped;
187 unsigned time_squeeze;
188 unsigned cpu_collision;
189};
190
191DECLARE_PER_CPU(struct netif_rx_stats, netdev_rx_stat);
192
193struct dev_addr_list
194{
195 struct dev_addr_list *next;
196 u8 da_addr[MAX_ADDR_LEN];
197 u8 da_addrlen;
198 u8 da_synced;
199 int da_users;
200 int da_gusers;
201};
202
203
204
205
206
207#define dev_mc_list dev_addr_list
208#define dmi_addr da_addr
209#define dmi_addrlen da_addrlen
210#define dmi_users da_users
211#define dmi_gusers da_gusers
212
213struct hh_cache
214{
215 struct hh_cache *hh_next;
216 atomic_t hh_refcnt;
217
218
219
220
221
222
223 __be16 hh_type ____cacheline_aligned_in_smp;
224
225
226
227
228 u16 hh_len;
229 int (*hh_output)(struct sk_buff *skb);
230 seqlock_t hh_lock;
231
232
233#define HH_DATA_MOD 16
234#define HH_DATA_OFF(__len) \
235 (HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))
236#define HH_DATA_ALIGN(__len) \
237 (((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))
238 unsigned long hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];
239};
240
241
242
243
244
245
246
247
248
249
250
251
252#define LL_RESERVED_SPACE(dev) \
253 ((((dev)->hard_header_len+(dev)->needed_headroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
254#define LL_RESERVED_SPACE_EXTRA(dev,extra) \
255 ((((dev)->hard_header_len+(dev)->needed_headroom+(extra))&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
256#define LL_ALLOCATED_SPACE(dev) \
257 ((((dev)->hard_header_len+(dev)->needed_headroom+(dev)->needed_tailroom)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)
258
259struct header_ops {
260 int (*create) (struct sk_buff *skb, struct net_device *dev,
261 unsigned short type, const void *daddr,
262 const void *saddr, unsigned len);
263 int (*parse)(const struct sk_buff *skb, unsigned char *haddr);
264 int (*rebuild)(struct sk_buff *skb);
265#define HAVE_HEADER_CACHE
266 int (*cache)(const struct neighbour *neigh, struct hh_cache *hh);
267 void (*cache_update)(struct hh_cache *hh,
268 const struct net_device *dev,
269 const unsigned char *haddr);
270};
271
272
273
274
275
276
277enum netdev_state_t
278{
279 __LINK_STATE_START,
280 __LINK_STATE_PRESENT,
281 __LINK_STATE_NOCARRIER,
282 __LINK_STATE_LINKWATCH_PENDING,
283 __LINK_STATE_DORMANT,
284};
285
286
287
288
289
290
291struct netdev_boot_setup {
292 char name[IFNAMSIZ];
293 struct ifmap map;
294};
295#define NETDEV_BOOT_SETUP_MAX 8
296
297extern int __init netdev_boot_setup(char *str);
298
299
300
301
302struct napi_struct {
303
304
305
306
307
308
309 struct list_head poll_list;
310
311 unsigned long state;
312 int weight;
313 int (*poll)(struct napi_struct *, int);
314#ifdef CONFIG_NETPOLL
315 spinlock_t poll_lock;
316 int poll_owner;
317#endif
318
319 unsigned int gro_count;
320
321 struct net_device *dev;
322 struct list_head dev_list;
323 struct sk_buff *gro_list;
324 struct sk_buff *skb;
325};
326
327enum
328{
329 NAPI_STATE_SCHED,
330 NAPI_STATE_DISABLE,
331 NAPI_STATE_NPSVC,
332};
333
334enum {
335 GRO_MERGED,
336 GRO_MERGED_FREE,
337 GRO_HELD,
338 GRO_NORMAL,
339 GRO_DROP,
340};
341
342extern void __napi_schedule(struct napi_struct *n);
343
344static inline int napi_disable_pending(struct napi_struct *n)
345{
346 return test_bit(NAPI_STATE_DISABLE, &n->state);
347}
348
349
350
351
352
353
354
355
356
357
358static inline int napi_schedule_prep(struct napi_struct *n)
359{
360 return !napi_disable_pending(n) &&
361 !test_and_set_bit(NAPI_STATE_SCHED, &n->state);
362}
363
364
365
366
367
368
369
370
371static inline void napi_schedule(struct napi_struct *n)
372{
373 if (napi_schedule_prep(n))
374 __napi_schedule(n);
375}
376
377
378static inline int napi_reschedule(struct napi_struct *napi)
379{
380 if (napi_schedule_prep(napi)) {
381 __napi_schedule(napi);
382 return 1;
383 }
384 return 0;
385}
386
387
388
389
390
391
392
393extern void __napi_complete(struct napi_struct *n);
394extern void napi_complete(struct napi_struct *n);
395
396
397
398
399
400
401
402
403static inline void napi_disable(struct napi_struct *n)
404{
405 set_bit(NAPI_STATE_DISABLE, &n->state);
406 while (test_and_set_bit(NAPI_STATE_SCHED, &n->state))
407 msleep(1);
408 clear_bit(NAPI_STATE_DISABLE, &n->state);
409}
410
411
412
413
414
415
416
417
418static inline void napi_enable(struct napi_struct *n)
419{
420 BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
421 smp_mb__before_clear_bit();
422 clear_bit(NAPI_STATE_SCHED, &n->state);
423}
424
425#ifdef CONFIG_SMP
426
427
428
429
430
431
432
433
434static inline void napi_synchronize(const struct napi_struct *n)
435{
436 while (test_bit(NAPI_STATE_SCHED, &n->state))
437 msleep(1);
438}
439#else
440# define napi_synchronize(n) barrier()
441#endif
442
443enum netdev_queue_state_t
444{
445 __QUEUE_STATE_XOFF,
446 __QUEUE_STATE_FROZEN,
447};
448
449struct netdev_queue {
450 struct net_device *dev;
451 struct Qdisc *qdisc;
452 unsigned long state;
453 spinlock_t _xmit_lock;
454 int xmit_lock_owner;
455 struct Qdisc *qdisc_sleeping;
456} ____cacheline_aligned_in_smp;
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549#define HAVE_NET_DEVICE_OPS
550struct net_device_ops {
551 int (*ndo_init)(struct net_device *dev);
552 void (*ndo_uninit)(struct net_device *dev);
553 int (*ndo_open)(struct net_device *dev);
554 int (*ndo_stop)(struct net_device *dev);
555 int (*ndo_start_xmit) (struct sk_buff *skb,
556 struct net_device *dev);
557 u16 (*ndo_select_queue)(struct net_device *dev,
558 struct sk_buff *skb);
559#define HAVE_CHANGE_RX_FLAGS
560 void (*ndo_change_rx_flags)(struct net_device *dev,
561 int flags);
562#define HAVE_SET_RX_MODE
563 void (*ndo_set_rx_mode)(struct net_device *dev);
564#define HAVE_MULTICAST
565 void (*ndo_set_multicast_list)(struct net_device *dev);
566#define HAVE_SET_MAC_ADDR
567 int (*ndo_set_mac_address)(struct net_device *dev,
568 void *addr);
569#define HAVE_VALIDATE_ADDR
570 int (*ndo_validate_addr)(struct net_device *dev);
571#define HAVE_PRIVATE_IOCTL
572 int (*ndo_do_ioctl)(struct net_device *dev,
573 struct ifreq *ifr, int cmd);
574#define HAVE_SET_CONFIG
575 int (*ndo_set_config)(struct net_device *dev,
576 struct ifmap *map);
577#define HAVE_CHANGE_MTU
578 int (*ndo_change_mtu)(struct net_device *dev,
579 int new_mtu);
580 int (*ndo_neigh_setup)(struct net_device *dev,
581 struct neigh_parms *);
582#define HAVE_TX_TIMEOUT
583 void (*ndo_tx_timeout) (struct net_device *dev);
584
585 struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
586
587 void (*ndo_vlan_rx_register)(struct net_device *dev,
588 struct vlan_group *grp);
589 void (*ndo_vlan_rx_add_vid)(struct net_device *dev,
590 unsigned short vid);
591 void (*ndo_vlan_rx_kill_vid)(struct net_device *dev,
592 unsigned short vid);
593#ifdef CONFIG_NET_POLL_CONTROLLER
594#define HAVE_NETDEV_POLL
595 void (*ndo_poll_controller)(struct net_device *dev);
596#endif
597#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
598 int (*ndo_fcoe_ddp_setup)(struct net_device *dev,
599 u16 xid,
600 struct scatterlist *sgl,
601 unsigned int sgc);
602 int (*ndo_fcoe_ddp_done)(struct net_device *dev,
603 u16 xid);
604#endif
605};
606
607
608
609
610
611
612
613
614
615
616
617struct net_device
618{
619
620
621
622
623
624
625 char name[IFNAMSIZ];
626
627 struct hlist_node name_hlist;
628
629 char *ifalias;
630
631
632
633
634
635 unsigned long mem_end;
636 unsigned long mem_start;
637 unsigned long base_addr;
638 unsigned int irq;
639
640
641
642
643
644
645 unsigned char if_port;
646 unsigned char dma;
647
648 unsigned long state;
649
650 struct list_head dev_list;
651 struct list_head napi_list;
652
653
654 unsigned long features;
655#define NETIF_F_SG 1
656#define NETIF_F_IP_CSUM 2
657#define NETIF_F_NO_CSUM 4
658#define NETIF_F_HW_CSUM 8
659#define NETIF_F_IPV6_CSUM 16
660#define NETIF_F_HIGHDMA 32
661#define NETIF_F_FRAGLIST 64
662#define NETIF_F_HW_VLAN_TX 128
663#define NETIF_F_HW_VLAN_RX 256
664#define NETIF_F_HW_VLAN_FILTER 512
665#define NETIF_F_VLAN_CHALLENGED 1024
666#define NETIF_F_GSO 2048
667#define NETIF_F_LLTX 4096
668
669#define NETIF_F_NETNS_LOCAL 8192
670#define NETIF_F_GRO 16384
671#define NETIF_F_LRO 32768
672
673#define NETIF_F_FCOE_CRC (1 << 24)
674
675
676#define NETIF_F_GSO_SHIFT 16
677#define NETIF_F_GSO_MASK 0x00ff0000
678#define NETIF_F_TSO (SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT)
679#define NETIF_F_UFO (SKB_GSO_UDP << NETIF_F_GSO_SHIFT)
680#define NETIF_F_GSO_ROBUST (SKB_GSO_DODGY << NETIF_F_GSO_SHIFT)
681#define NETIF_F_TSO_ECN (SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT)
682#define NETIF_F_TSO6 (SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT)
683#define NETIF_F_FSO (SKB_GSO_FCOE << NETIF_F_GSO_SHIFT)
684
685
686#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)
687
688
689#define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM)
690#define NETIF_F_V4_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IP_CSUM)
691#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
692#define NETIF_F_ALL_CSUM (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
693
694
695
696
697
698#define NETIF_F_ONE_FOR_ALL (NETIF_F_GSO_SOFTWARE | NETIF_F_GSO_ROBUST | \
699 NETIF_F_SG | NETIF_F_HIGHDMA | \
700 NETIF_F_FRAGLIST)
701
702
703 int ifindex;
704 int iflink;
705
706 struct net_device_stats stats;
707
708#ifdef CONFIG_WIRELESS_EXT
709
710
711 const struct iw_handler_def * wireless_handlers;
712
713 struct iw_public_data * wireless_data;
714#endif
715
716 const struct net_device_ops *netdev_ops;
717 const struct ethtool_ops *ethtool_ops;
718
719
720 const struct header_ops *header_ops;
721
722 unsigned int flags;
723 unsigned short gflags;
724 unsigned short priv_flags;
725 unsigned short padded;
726
727 unsigned char operstate;
728 unsigned char link_mode;
729
730 unsigned mtu;
731 unsigned short type;
732 unsigned short hard_header_len;
733
734
735
736
737
738 unsigned short needed_headroom;
739 unsigned short needed_tailroom;
740
741 struct net_device *master;
742
743
744
745
746 unsigned char perm_addr[MAX_ADDR_LEN];
747 unsigned char addr_len;
748 unsigned short dev_id;
749
750 spinlock_t addr_list_lock;
751 struct dev_addr_list *uc_list;
752 int uc_count;
753 int uc_promisc;
754 struct dev_addr_list *mc_list;
755 int mc_count;
756 unsigned int promiscuity;
757 unsigned int allmulti;
758
759
760
761
762#ifdef CONFIG_NET_DSA
763 void *dsa_ptr;
764#endif
765 void *atalk_ptr;
766 void *ip_ptr;
767 void *dn_ptr;
768 void *ip6_ptr;
769 void *ec_ptr;
770 void *ax25_ptr;
771 struct wireless_dev *ieee80211_ptr;
772
773
774
775
776
777 unsigned long last_rx;
778
779 unsigned char dev_addr[MAX_ADDR_LEN];
780
781
782 unsigned char broadcast[MAX_ADDR_LEN];
783
784 struct netdev_queue rx_queue;
785
786 struct netdev_queue *_tx ____cacheline_aligned_in_smp;
787
788
789 unsigned int num_tx_queues;
790
791
792 unsigned int real_num_tx_queues;
793
794 unsigned long tx_queue_len;
795 spinlock_t tx_global_lock;
796
797
798
799
800 unsigned long trans_start;
801
802 int watchdog_timeo;
803 struct timer_list watchdog_timer;
804
805
806 atomic_t refcnt ____cacheline_aligned_in_smp;
807
808
809 struct list_head todo_list;
810
811 struct hlist_node index_hlist;
812
813 struct net_device *link_watch_next;
814
815
816 enum { NETREG_UNINITIALIZED=0,
817 NETREG_REGISTERED,
818 NETREG_UNREGISTERING,
819 NETREG_UNREGISTERED,
820 NETREG_RELEASED,
821 NETREG_DUMMY,
822 } reg_state;
823
824
825 void (*destructor)(struct net_device *dev);
826
827#ifdef CONFIG_NETPOLL
828 struct netpoll_info *npinfo;
829#endif
830
831#ifdef CONFIG_NET_NS
832
833 struct net *nd_net;
834#endif
835
836
837 void *ml_priv;
838
839
840 struct net_bridge_port *br_port;
841
842 struct macvlan_port *macvlan_port;
843
844 struct garp_port *garp_port;
845
846
847 struct device dev;
848
849 struct attribute_group *sysfs_groups[3];
850
851
852 const struct rtnl_link_ops *rtnl_link_ops;
853
854
855 unsigned long vlan_features;
856
857
858#define GSO_MAX_SIZE 65536
859 unsigned int gso_max_size;
860
861#ifdef CONFIG_DCB
862
863 struct dcbnl_rtnl_ops *dcbnl_ops;
864#endif
865
866#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
867
868 unsigned int fcoe_ddp_xid;
869#endif
870
871#ifdef CONFIG_COMPAT_NET_DEV_OPS
872 struct {
873 int (*init)(struct net_device *dev);
874 void (*uninit)(struct net_device *dev);
875 int (*open)(struct net_device *dev);
876 int (*stop)(struct net_device *dev);
877 int (*hard_start_xmit) (struct sk_buff *skb,
878 struct net_device *dev);
879 u16 (*select_queue)(struct net_device *dev,
880 struct sk_buff *skb);
881 void (*change_rx_flags)(struct net_device *dev,
882 int flags);
883 void (*set_rx_mode)(struct net_device *dev);
884 void (*set_multicast_list)(struct net_device *dev);
885 int (*set_mac_address)(struct net_device *dev,
886 void *addr);
887 int (*validate_addr)(struct net_device *dev);
888 int (*do_ioctl)(struct net_device *dev,
889 struct ifreq *ifr, int cmd);
890 int (*set_config)(struct net_device *dev,
891 struct ifmap *map);
892 int (*change_mtu)(struct net_device *dev, int new_mtu);
893 int (*neigh_setup)(struct net_device *dev,
894 struct neigh_parms *);
895 void (*tx_timeout) (struct net_device *dev);
896 struct net_device_stats* (*get_stats)(struct net_device *dev);
897 void (*vlan_rx_register)(struct net_device *dev,
898 struct vlan_group *grp);
899 void (*vlan_rx_add_vid)(struct net_device *dev,
900 unsigned short vid);
901 void (*vlan_rx_kill_vid)(struct net_device *dev,
902 unsigned short vid);
903#ifdef CONFIG_NET_POLL_CONTROLLER
904 void (*poll_controller)(struct net_device *dev);
905#endif
906 };
907#endif
908};
909#define to_net_dev(d) container_of(d, struct net_device, dev)
910
911#define NETDEV_ALIGN 32
912#define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1)
913
914static inline
915struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,
916 unsigned int index)
917{
918 return &dev->_tx[index];
919}
920
921static inline void netdev_for_each_tx_queue(struct net_device *dev,
922 void (*f)(struct net_device *,
923 struct netdev_queue *,
924 void *),
925 void *arg)
926{
927 unsigned int i;
928
929 for (i = 0; i < dev->num_tx_queues; i++)
930 f(dev, &dev->_tx[i], arg);
931}
932
933
934
935
936static inline
937struct net *dev_net(const struct net_device *dev)
938{
939#ifdef CONFIG_NET_NS
940 return dev->nd_net;
941#else
942 return &init_net;
943#endif
944}
945
946static inline
947void dev_net_set(struct net_device *dev, struct net *net)
948{
949#ifdef CONFIG_NET_NS
950 release_net(dev->nd_net);
951 dev->nd_net = hold_net(net);
952#endif
953}
954
955static inline bool netdev_uses_dsa_tags(struct net_device *dev)
956{
957#ifdef CONFIG_NET_DSA_TAG_DSA
958 if (dev->dsa_ptr != NULL)
959 return dsa_uses_dsa_tags(dev->dsa_ptr);
960#endif
961
962 return 0;
963}
964
965static inline bool netdev_uses_trailer_tags(struct net_device *dev)
966{
967#ifdef CONFIG_NET_DSA_TAG_TRAILER
968 if (dev->dsa_ptr != NULL)
969 return dsa_uses_trailer_tags(dev->dsa_ptr);
970#endif
971
972 return 0;
973}
974
975
976
977
978
979
980
981static inline void *netdev_priv(const struct net_device *dev)
982{
983 return (char *)dev + ((sizeof(struct net_device)
984 + NETDEV_ALIGN_CONST)
985 & ~NETDEV_ALIGN_CONST);
986}
987
988
989
990
991#define SET_NETDEV_DEV(net, pdev) ((net)->dev.parent = (pdev))
992
993
994
995
996
997
998
999
1000
1001
1002
1003void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
1004 int (*poll)(struct napi_struct *, int), int weight);
1005
1006
1007
1008
1009
1010
1011
1012void netif_napi_del(struct napi_struct *napi);
1013
1014struct napi_gro_cb {
1015
1016 int data_offset;
1017
1018
1019 int same_flow;
1020
1021
1022 int flush;
1023
1024
1025 int count;
1026
1027
1028 int free;
1029};
1030
1031#define NAPI_GRO_CB(skb) ((struct napi_gro_cb *)(skb)->cb)
1032
1033struct packet_type {
1034 __be16 type;
1035 struct net_device *dev;
1036 int (*func) (struct sk_buff *,
1037 struct net_device *,
1038 struct packet_type *,
1039 struct net_device *);
1040 struct sk_buff *(*gso_segment)(struct sk_buff *skb,
1041 int features);
1042 int (*gso_send_check)(struct sk_buff *skb);
1043 struct sk_buff **(*gro_receive)(struct sk_buff **head,
1044 struct sk_buff *skb);
1045 int (*gro_complete)(struct sk_buff *skb);
1046 void *af_packet_priv;
1047 struct list_head list;
1048};
1049
1050struct napi_gro_fraginfo {
1051 skb_frag_t frags[MAX_SKB_FRAGS];
1052 unsigned int nr_frags;
1053 unsigned int ip_summed;
1054 unsigned int len;
1055 __wsum csum;
1056};
1057
1058#include <linux/interrupt.h>
1059#include <linux/notifier.h>
1060
1061extern rwlock_t dev_base_lock;
1062
1063
1064#define for_each_netdev(net, d) \
1065 list_for_each_entry(d, &(net)->dev_base_head, dev_list)
1066#define for_each_netdev_safe(net, d, n) \
1067 list_for_each_entry_safe(d, n, &(net)->dev_base_head, dev_list)
1068#define for_each_netdev_continue(net, d) \
1069 list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
1070#define net_device_entry(lh) list_entry(lh, struct net_device, dev_list)
1071
1072static inline struct net_device *next_net_device(struct net_device *dev)
1073{
1074 struct list_head *lh;
1075 struct net *net;
1076
1077 net = dev_net(dev);
1078 lh = dev->dev_list.next;
1079 return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
1080}
1081
1082static inline struct net_device *first_net_device(struct net *net)
1083{
1084 return list_empty(&net->dev_base_head) ? NULL :
1085 net_device_entry(net->dev_base_head.next);
1086}
1087
1088extern int netdev_boot_setup_check(struct net_device *dev);
1089extern unsigned long netdev_boot_base(const char *prefix, int unit);
1090extern struct net_device *dev_getbyhwaddr(struct net *net, unsigned short type, char *hwaddr);
1091extern struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
1092extern struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type);
1093extern void dev_add_pack(struct packet_type *pt);
1094extern void dev_remove_pack(struct packet_type *pt);
1095extern void __dev_remove_pack(struct packet_type *pt);
1096
1097extern struct net_device *dev_get_by_flags(struct net *net, unsigned short flags,
1098 unsigned short mask);
1099extern struct net_device *dev_get_by_name(struct net *net, const char *name);
1100extern struct net_device *__dev_get_by_name(struct net *net, const char *name);
1101extern int dev_alloc_name(struct net_device *dev, const char *name);
1102extern int dev_open(struct net_device *dev);
1103extern int dev_close(struct net_device *dev);
1104extern void dev_disable_lro(struct net_device *dev);
1105extern int dev_queue_xmit(struct sk_buff *skb);
1106extern int register_netdevice(struct net_device *dev);
1107extern void unregister_netdevice(struct net_device *dev);
1108extern void free_netdev(struct net_device *dev);
1109extern void synchronize_net(void);
1110extern int register_netdevice_notifier(struct notifier_block *nb);
1111extern int unregister_netdevice_notifier(struct notifier_block *nb);
1112extern int init_dummy_netdev(struct net_device *dev);
1113extern void netdev_resync_ops(struct net_device *dev);
1114
1115extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
1116extern struct net_device *dev_get_by_index(struct net *net, int ifindex);
1117extern struct net_device *__dev_get_by_index(struct net *net, int ifindex);
1118extern int dev_restart(struct net_device *dev);
1119#ifdef CONFIG_NETPOLL_TRAP
1120extern int netpoll_trap(void);
1121#endif
1122extern void *skb_gro_header(struct sk_buff *skb, unsigned int hlen);
1123extern int skb_gro_receive(struct sk_buff **head,
1124 struct sk_buff *skb);
1125
1126static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
1127{
1128 return NAPI_GRO_CB(skb)->data_offset;
1129}
1130
1131static inline unsigned int skb_gro_len(const struct sk_buff *skb)
1132{
1133 return skb->len - NAPI_GRO_CB(skb)->data_offset;
1134}
1135
1136static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len)
1137{
1138 NAPI_GRO_CB(skb)->data_offset += len;
1139}
1140
1141static inline void skb_gro_reset_offset(struct sk_buff *skb)
1142{
1143 NAPI_GRO_CB(skb)->data_offset = 0;
1144}
1145
1146static inline void *skb_gro_mac_header(struct sk_buff *skb)
1147{
1148 return skb_mac_header(skb) < skb->data ? skb_mac_header(skb) :
1149 page_address(skb_shinfo(skb)->frags[0].page) +
1150 skb_shinfo(skb)->frags[0].page_offset;
1151}
1152
1153static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
1154 unsigned short type,
1155 const void *daddr, const void *saddr,
1156 unsigned len)
1157{
1158 if (!dev->header_ops || !dev->header_ops->create)
1159 return 0;
1160
1161 return dev->header_ops->create(skb, dev, type, daddr, saddr, len);
1162}
1163
1164static inline int dev_parse_header(const struct sk_buff *skb,
1165 unsigned char *haddr)
1166{
1167 const struct net_device *dev = skb->dev;
1168
1169 if (!dev->header_ops || !dev->header_ops->parse)
1170 return 0;
1171 return dev->header_ops->parse(skb, haddr);
1172}
1173
1174typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
1175extern int register_gifconf(unsigned int family, gifconf_func_t * gifconf);
1176static inline int unregister_gifconf(unsigned int family)
1177{
1178 return register_gifconf(family, NULL);
1179}
1180
1181
1182
1183
1184
1185struct softnet_data
1186{
1187 struct Qdisc *output_queue;
1188 struct sk_buff_head input_pkt_queue;
1189 struct list_head poll_list;
1190 struct sk_buff *completion_queue;
1191
1192 struct napi_struct backlog;
1193};
1194
1195DECLARE_PER_CPU(struct softnet_data,softnet_data);
1196
1197#define HAVE_NETIF_QUEUE
1198
1199extern void __netif_schedule(struct Qdisc *q);
1200
1201static inline void netif_schedule_queue(struct netdev_queue *txq)
1202{
1203 if (!test_bit(__QUEUE_STATE_XOFF, &txq->state))
1204 __netif_schedule(txq->qdisc);
1205}
1206
1207static inline void netif_tx_schedule_all(struct net_device *dev)
1208{
1209 unsigned int i;
1210
1211 for (i = 0; i < dev->num_tx_queues; i++)
1212 netif_schedule_queue(netdev_get_tx_queue(dev, i));
1213}
1214
1215static inline void netif_tx_start_queue(struct netdev_queue *dev_queue)
1216{
1217 clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1218}
1219
1220
1221
1222
1223
1224
1225
1226static inline void netif_start_queue(struct net_device *dev)
1227{
1228 netif_tx_start_queue(netdev_get_tx_queue(dev, 0));
1229}
1230
1231static inline void netif_tx_start_all_queues(struct net_device *dev)
1232{
1233 unsigned int i;
1234
1235 for (i = 0; i < dev->num_tx_queues; i++) {
1236 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1237 netif_tx_start_queue(txq);
1238 }
1239}
1240
1241static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue)
1242{
1243#ifdef CONFIG_NETPOLL_TRAP
1244 if (netpoll_trap()) {
1245 clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1246 return;
1247 }
1248#endif
1249 if (test_and_clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state))
1250 __netif_schedule(dev_queue->qdisc);
1251}
1252
1253
1254
1255
1256
1257
1258
1259
1260static inline void netif_wake_queue(struct net_device *dev)
1261{
1262 netif_tx_wake_queue(netdev_get_tx_queue(dev, 0));
1263}
1264
1265static inline void netif_tx_wake_all_queues(struct net_device *dev)
1266{
1267 unsigned int i;
1268
1269 for (i = 0; i < dev->num_tx_queues; i++) {
1270 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1271 netif_tx_wake_queue(txq);
1272 }
1273}
1274
1275static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue)
1276{
1277 set_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1278}
1279
1280
1281
1282
1283
1284
1285
1286
1287static inline void netif_stop_queue(struct net_device *dev)
1288{
1289 netif_tx_stop_queue(netdev_get_tx_queue(dev, 0));
1290}
1291
1292static inline void netif_tx_stop_all_queues(struct net_device *dev)
1293{
1294 unsigned int i;
1295
1296 for (i = 0; i < dev->num_tx_queues; i++) {
1297 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1298 netif_tx_stop_queue(txq);
1299 }
1300}
1301
1302static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue)
1303{
1304 return test_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
1305}
1306
1307
1308
1309
1310
1311
1312
1313static inline int netif_queue_stopped(const struct net_device *dev)
1314{
1315 return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0));
1316}
1317
1318static inline int netif_tx_queue_frozen(const struct netdev_queue *dev_queue)
1319{
1320 return test_bit(__QUEUE_STATE_FROZEN, &dev_queue->state);
1321}
1322
1323
1324
1325
1326
1327
1328
1329static inline int netif_running(const struct net_device *dev)
1330{
1331 return test_bit(__LINK_STATE_START, &dev->state);
1332}
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index)
1349{
1350 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1351 clear_bit(__QUEUE_STATE_XOFF, &txq->state);
1352}
1353
1354
1355
1356
1357
1358
1359
1360
1361static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index)
1362{
1363 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1364#ifdef CONFIG_NETPOLL_TRAP
1365 if (netpoll_trap())
1366 return;
1367#endif
1368 set_bit(__QUEUE_STATE_XOFF, &txq->state);
1369}
1370
1371
1372
1373
1374
1375
1376
1377
1378static inline int __netif_subqueue_stopped(const struct net_device *dev,
1379 u16 queue_index)
1380{
1381 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1382 return test_bit(__QUEUE_STATE_XOFF, &txq->state);
1383}
1384
1385static inline int netif_subqueue_stopped(const struct net_device *dev,
1386 struct sk_buff *skb)
1387{
1388 return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb));
1389}
1390
1391
1392
1393
1394
1395
1396
1397
1398static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
1399{
1400 struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index);
1401#ifdef CONFIG_NETPOLL_TRAP
1402 if (netpoll_trap())
1403 return;
1404#endif
1405 if (test_and_clear_bit(__QUEUE_STATE_XOFF, &txq->state))
1406 __netif_schedule(txq->qdisc);
1407}
1408
1409
1410
1411
1412
1413
1414
1415static inline int netif_is_multiqueue(const struct net_device *dev)
1416{
1417 return (dev->num_tx_queues > 1);
1418}
1419
1420
1421
1422
1423
1424extern void dev_kfree_skb_irq(struct sk_buff *skb);
1425
1426
1427
1428
1429
1430extern void dev_kfree_skb_any(struct sk_buff *skb);
1431
1432#define HAVE_NETIF_RX 1
1433extern int netif_rx(struct sk_buff *skb);
1434extern int netif_rx_ni(struct sk_buff *skb);
1435#define HAVE_NETIF_RECEIVE_SKB 1
1436extern int netif_receive_skb(struct sk_buff *skb);
1437extern void napi_gro_flush(struct napi_struct *napi);
1438extern int dev_gro_receive(struct napi_struct *napi,
1439 struct sk_buff *skb);
1440extern int napi_skb_finish(int ret, struct sk_buff *skb);
1441extern int napi_gro_receive(struct napi_struct *napi,
1442 struct sk_buff *skb);
1443extern void napi_reuse_skb(struct napi_struct *napi,
1444 struct sk_buff *skb);
1445extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi,
1446 struct napi_gro_fraginfo *info);
1447extern int napi_frags_finish(struct napi_struct *napi,
1448 struct sk_buff *skb, int ret);
1449extern int napi_gro_frags(struct napi_struct *napi,
1450 struct napi_gro_fraginfo *info);
1451extern void netif_nit_deliver(struct sk_buff *skb);
1452extern int dev_valid_name(const char *name);
1453extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
1454extern int dev_ethtool(struct net *net, struct ifreq *);
1455extern unsigned dev_get_flags(const struct net_device *);
1456extern int dev_change_flags(struct net_device *, unsigned);
1457extern int dev_change_name(struct net_device *, const char *);
1458extern int dev_set_alias(struct net_device *, const char *, size_t);
1459extern int dev_change_net_namespace(struct net_device *,
1460 struct net *, const char *);
1461extern int dev_set_mtu(struct net_device *, int);
1462extern int dev_set_mac_address(struct net_device *,
1463 struct sockaddr *);
1464extern int dev_hard_start_xmit(struct sk_buff *skb,
1465 struct net_device *dev,
1466 struct netdev_queue *txq);
1467
1468extern int netdev_budget;
1469
1470
1471extern void netdev_run_todo(void);
1472
1473
1474
1475
1476
1477
1478
1479static inline void dev_put(struct net_device *dev)
1480{
1481 atomic_dec(&dev->refcnt);
1482}
1483
1484
1485
1486
1487
1488
1489
1490static inline void dev_hold(struct net_device *dev)
1491{
1492 atomic_inc(&dev->refcnt);
1493}
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504extern void linkwatch_fire_event(struct net_device *dev);
1505
1506
1507
1508
1509
1510
1511
1512static inline int netif_carrier_ok(const struct net_device *dev)
1513{
1514 return !test_bit(__LINK_STATE_NOCARRIER, &dev->state);
1515}
1516
1517extern void __netdev_watchdog_up(struct net_device *dev);
1518
1519extern void netif_carrier_on(struct net_device *dev);
1520
1521extern void netif_carrier_off(struct net_device *dev);
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536static inline void netif_dormant_on(struct net_device *dev)
1537{
1538 if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state))
1539 linkwatch_fire_event(dev);
1540}
1541
1542
1543
1544
1545
1546
1547
1548static inline void netif_dormant_off(struct net_device *dev)
1549{
1550 if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state))
1551 linkwatch_fire_event(dev);
1552}
1553
1554
1555
1556
1557
1558
1559
1560static inline int netif_dormant(const struct net_device *dev)
1561{
1562 return test_bit(__LINK_STATE_DORMANT, &dev->state);
1563}
1564
1565
1566
1567
1568
1569
1570
1571
1572static inline int netif_oper_up(const struct net_device *dev) {
1573 return (dev->operstate == IF_OPER_UP ||
1574 dev->operstate == IF_OPER_UNKNOWN );
1575}
1576
1577
1578
1579
1580
1581
1582
1583static inline int netif_device_present(struct net_device *dev)
1584{
1585 return test_bit(__LINK_STATE_PRESENT, &dev->state);
1586}
1587
1588extern void netif_device_detach(struct net_device *dev);
1589
1590extern void netif_device_attach(struct net_device *dev);
1591
1592
1593
1594
1595#define HAVE_NETIF_MSG 1
1596
1597enum {
1598 NETIF_MSG_DRV = 0x0001,
1599 NETIF_MSG_PROBE = 0x0002,
1600 NETIF_MSG_LINK = 0x0004,
1601 NETIF_MSG_TIMER = 0x0008,
1602 NETIF_MSG_IFDOWN = 0x0010,
1603 NETIF_MSG_IFUP = 0x0020,
1604 NETIF_MSG_RX_ERR = 0x0040,
1605 NETIF_MSG_TX_ERR = 0x0080,
1606 NETIF_MSG_TX_QUEUED = 0x0100,
1607 NETIF_MSG_INTR = 0x0200,
1608 NETIF_MSG_TX_DONE = 0x0400,
1609 NETIF_MSG_RX_STATUS = 0x0800,
1610 NETIF_MSG_PKTDATA = 0x1000,
1611 NETIF_MSG_HW = 0x2000,
1612 NETIF_MSG_WOL = 0x4000,
1613};
1614
1615#define netif_msg_drv(p) ((p)->msg_enable & NETIF_MSG_DRV)
1616#define netif_msg_probe(p) ((p)->msg_enable & NETIF_MSG_PROBE)
1617#define netif_msg_link(p) ((p)->msg_enable & NETIF_MSG_LINK)
1618#define netif_msg_timer(p) ((p)->msg_enable & NETIF_MSG_TIMER)
1619#define netif_msg_ifdown(p) ((p)->msg_enable & NETIF_MSG_IFDOWN)
1620#define netif_msg_ifup(p) ((p)->msg_enable & NETIF_MSG_IFUP)
1621#define netif_msg_rx_err(p) ((p)->msg_enable & NETIF_MSG_RX_ERR)
1622#define netif_msg_tx_err(p) ((p)->msg_enable & NETIF_MSG_TX_ERR)
1623#define netif_msg_tx_queued(p) ((p)->msg_enable & NETIF_MSG_TX_QUEUED)
1624#define netif_msg_intr(p) ((p)->msg_enable & NETIF_MSG_INTR)
1625#define netif_msg_tx_done(p) ((p)->msg_enable & NETIF_MSG_TX_DONE)
1626#define netif_msg_rx_status(p) ((p)->msg_enable & NETIF_MSG_RX_STATUS)
1627#define netif_msg_pktdata(p) ((p)->msg_enable & NETIF_MSG_PKTDATA)
1628#define netif_msg_hw(p) ((p)->msg_enable & NETIF_MSG_HW)
1629#define netif_msg_wol(p) ((p)->msg_enable & NETIF_MSG_WOL)
1630
1631static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
1632{
1633
1634 if (debug_value < 0 || debug_value >= (sizeof(u32) * 8))
1635 return default_msg_enable_bits;
1636 if (debug_value == 0)
1637 return 0;
1638
1639 return (1 << debug_value) - 1;
1640}
1641
1642static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
1643{
1644 spin_lock(&txq->_xmit_lock);
1645 txq->xmit_lock_owner = cpu;
1646}
1647
1648static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
1649{
1650 spin_lock_bh(&txq->_xmit_lock);
1651 txq->xmit_lock_owner = smp_processor_id();
1652}
1653
1654static inline int __netif_tx_trylock(struct netdev_queue *txq)
1655{
1656 int ok = spin_trylock(&txq->_xmit_lock);
1657 if (likely(ok))
1658 txq->xmit_lock_owner = smp_processor_id();
1659 return ok;
1660}
1661
1662static inline void __netif_tx_unlock(struct netdev_queue *txq)
1663{
1664 txq->xmit_lock_owner = -1;
1665 spin_unlock(&txq->_xmit_lock);
1666}
1667
1668static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
1669{
1670 txq->xmit_lock_owner = -1;
1671 spin_unlock_bh(&txq->_xmit_lock);
1672}
1673
1674
1675
1676
1677
1678
1679
1680static inline void netif_tx_lock(struct net_device *dev)
1681{
1682 unsigned int i;
1683 int cpu;
1684
1685 spin_lock(&dev->tx_global_lock);
1686 cpu = smp_processor_id();
1687 for (i = 0; i < dev->num_tx_queues; i++) {
1688 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1689
1690
1691
1692
1693
1694
1695
1696 __netif_tx_lock(txq, cpu);
1697 set_bit(__QUEUE_STATE_FROZEN, &txq->state);
1698 __netif_tx_unlock(txq);
1699 }
1700}
1701
1702static inline void netif_tx_lock_bh(struct net_device *dev)
1703{
1704 local_bh_disable();
1705 netif_tx_lock(dev);
1706}
1707
1708static inline void netif_tx_unlock(struct net_device *dev)
1709{
1710 unsigned int i;
1711
1712 for (i = 0; i < dev->num_tx_queues; i++) {
1713 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1714
1715
1716
1717
1718
1719 clear_bit(__QUEUE_STATE_FROZEN, &txq->state);
1720 if (!test_bit(__QUEUE_STATE_XOFF, &txq->state))
1721 __netif_schedule(txq->qdisc);
1722 }
1723 spin_unlock(&dev->tx_global_lock);
1724}
1725
1726static inline void netif_tx_unlock_bh(struct net_device *dev)
1727{
1728 netif_tx_unlock(dev);
1729 local_bh_enable();
1730}
1731
1732#define HARD_TX_LOCK(dev, txq, cpu) { \
1733 if ((dev->features & NETIF_F_LLTX) == 0) { \
1734 __netif_tx_lock(txq, cpu); \
1735 } \
1736}
1737
1738#define HARD_TX_UNLOCK(dev, txq) { \
1739 if ((dev->features & NETIF_F_LLTX) == 0) { \
1740 __netif_tx_unlock(txq); \
1741 } \
1742}
1743
1744static inline void netif_tx_disable(struct net_device *dev)
1745{
1746 unsigned int i;
1747 int cpu;
1748
1749 local_bh_disable();
1750 cpu = smp_processor_id();
1751 for (i = 0; i < dev->num_tx_queues; i++) {
1752 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
1753
1754 __netif_tx_lock(txq, cpu);
1755 netif_tx_stop_queue(txq);
1756 __netif_tx_unlock(txq);
1757 }
1758 local_bh_enable();
1759}
1760
1761static inline void netif_addr_lock(struct net_device *dev)
1762{
1763 spin_lock(&dev->addr_list_lock);
1764}
1765
1766static inline void netif_addr_lock_bh(struct net_device *dev)
1767{
1768 spin_lock_bh(&dev->addr_list_lock);
1769}
1770
1771static inline void netif_addr_unlock(struct net_device *dev)
1772{
1773 spin_unlock(&dev->addr_list_lock);
1774}
1775
1776static inline void netif_addr_unlock_bh(struct net_device *dev)
1777{
1778 spin_unlock_bh(&dev->addr_list_lock);
1779}
1780
1781
1782
1783extern void ether_setup(struct net_device *dev);
1784
1785
1786extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
1787 void (*setup)(struct net_device *),
1788 unsigned int queue_count);
1789#define alloc_netdev(sizeof_priv, name, setup) \
1790 alloc_netdev_mq(sizeof_priv, name, setup, 1)
1791extern int register_netdev(struct net_device *dev);
1792extern void unregister_netdev(struct net_device *dev);
1793
1794extern void dev_set_rx_mode(struct net_device *dev);
1795extern void __dev_set_rx_mode(struct net_device *dev);
1796extern int dev_unicast_delete(struct net_device *dev, void *addr, int alen);
1797extern int dev_unicast_add(struct net_device *dev, void *addr, int alen);
1798extern int dev_unicast_sync(struct net_device *to, struct net_device *from);
1799extern void dev_unicast_unsync(struct net_device *to, struct net_device *from);
1800extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
1801extern int dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
1802extern int dev_mc_sync(struct net_device *to, struct net_device *from);
1803extern void dev_mc_unsync(struct net_device *to, struct net_device *from);
1804extern int __dev_addr_delete(struct dev_addr_list **list, int *count, void *addr, int alen, int all);
1805extern int __dev_addr_add(struct dev_addr_list **list, int *count, void *addr, int alen, int newonly);
1806extern int __dev_addr_sync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
1807extern void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
1808extern int dev_set_promiscuity(struct net_device *dev, int inc);
1809extern int dev_set_allmulti(struct net_device *dev, int inc);
1810extern void netdev_state_change(struct net_device *dev);
1811extern void netdev_bonding_change(struct net_device *dev);
1812extern void netdev_features_change(struct net_device *dev);
1813
1814extern void dev_load(struct net *net, const char *name);
1815extern void dev_mcast_init(void);
1816extern const struct net_device_stats *dev_get_stats(struct net_device *dev);
1817
1818extern int netdev_max_backlog;
1819extern int weight_p;
1820extern int netdev_set_master(struct net_device *dev, struct net_device *master);
1821extern int skb_checksum_help(struct sk_buff *skb);
1822extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features);
1823#ifdef CONFIG_BUG
1824extern void netdev_rx_csum_fault(struct net_device *dev);
1825#else
1826static inline void netdev_rx_csum_fault(struct net_device *dev)
1827{
1828}
1829#endif
1830
1831extern void net_enable_timestamp(void);
1832extern void net_disable_timestamp(void);
1833
1834#ifdef CONFIG_PROC_FS
1835extern void *dev_seq_start(struct seq_file *seq, loff_t *pos);
1836extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
1837extern void dev_seq_stop(struct seq_file *seq, void *v);
1838#endif
1839
1840extern int netdev_class_create_file(struct class_attribute *class_attr);
1841extern void netdev_class_remove_file(struct class_attribute *class_attr);
1842
1843extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len);
1844
1845extern void linkwatch_run_queue(void);
1846
1847unsigned long netdev_increment_features(unsigned long all, unsigned long one,
1848 unsigned long mask);
1849unsigned long netdev_fix_features(unsigned long features, const char *name);
1850
1851static inline int net_gso_ok(int features, int gso_type)
1852{
1853 int feature = gso_type << NETIF_F_GSO_SHIFT;
1854 return (features & feature) == feature;
1855}
1856
1857static inline int skb_gso_ok(struct sk_buff *skb, int features)
1858{
1859 return net_gso_ok(features, skb_shinfo(skb)->gso_type);
1860}
1861
1862static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb)
1863{
1864 return skb_is_gso(skb) &&
1865 (!skb_gso_ok(skb, dev->features) ||
1866 (skb_shinfo(skb)->frag_list &&
1867 !(dev->features & NETIF_F_FRAGLIST)) ||
1868 unlikely(skb->ip_summed != CHECKSUM_PARTIAL));
1869}
1870
1871static inline void netif_set_gso_max_size(struct net_device *dev,
1872 unsigned int size)
1873{
1874 dev->gso_max_size = size;
1875}
1876
1877
1878
1879
1880
1881static inline int skb_bond_should_drop(struct sk_buff *skb)
1882{
1883 struct net_device *dev = skb->dev;
1884 struct net_device *master = dev->master;
1885
1886 if (master) {
1887 if (master->priv_flags & IFF_MASTER_ARPMON)
1888 dev->last_rx = jiffies;
1889
1890 if (dev->priv_flags & IFF_SLAVE_INACTIVE) {
1891 if ((dev->priv_flags & IFF_SLAVE_NEEDARP) &&
1892 skb->protocol == __cpu_to_be16(ETH_P_ARP))
1893 return 0;
1894
1895 if (master->priv_flags & IFF_MASTER_ALB) {
1896 if (skb->pkt_type != PACKET_BROADCAST &&
1897 skb->pkt_type != PACKET_MULTICAST)
1898 return 0;
1899 }
1900 if (master->priv_flags & IFF_MASTER_8023AD &&
1901 skb->protocol == __cpu_to_be16(ETH_P_SLOW))
1902 return 0;
1903
1904 return 1;
1905 }
1906 }
1907 return 0;
1908}
1909
1910extern struct pernet_operations __net_initdata loopback_net_ops;
1911#endif
1912
1913#endif
1914