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