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