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