]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - net/core/dev.c
net: txq_trans_update() helper
[karo-tx-linux.git] / net / core / dev.c
1 /*
2  *      NET3    Protocol independent device support routines.
3  *
4  *              This program is free software; you can redistribute it and/or
5  *              modify it under the terms of the GNU General Public License
6  *              as published by the Free Software Foundation; either version
7  *              2 of the License, or (at your option) any later version.
8  *
9  *      Derived from the non IP parts of dev.c 1.0.19
10  *              Authors:        Ross Biro
11  *                              Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
12  *                              Mark Evans, <evansmp@uhura.aston.ac.uk>
13  *
14  *      Additional Authors:
15  *              Florian la Roche <rzsfl@rz.uni-sb.de>
16  *              Alan Cox <gw4pts@gw4pts.ampr.org>
17  *              David Hinds <dahinds@users.sourceforge.net>
18  *              Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
19  *              Adam Sulmicki <adam@cfar.umd.edu>
20  *              Pekka Riikonen <priikone@poesidon.pspt.fi>
21  *
22  *      Changes:
23  *              D.J. Barrow     :       Fixed bug where dev->refcnt gets set
24  *                                      to 2 if register_netdev gets called
25  *                                      before net_dev_init & also removed a
26  *                                      few lines of code in the process.
27  *              Alan Cox        :       device private ioctl copies fields back.
28  *              Alan Cox        :       Transmit queue code does relevant
29  *                                      stunts to keep the queue safe.
30  *              Alan Cox        :       Fixed double lock.
31  *              Alan Cox        :       Fixed promisc NULL pointer trap
32  *              ????????        :       Support the full private ioctl range
33  *              Alan Cox        :       Moved ioctl permission check into
34  *                                      drivers
35  *              Tim Kordas      :       SIOCADDMULTI/SIOCDELMULTI
36  *              Alan Cox        :       100 backlog just doesn't cut it when
37  *                                      you start doing multicast video 8)
38  *              Alan Cox        :       Rewrote net_bh and list manager.
39  *              Alan Cox        :       Fix ETH_P_ALL echoback lengths.
40  *              Alan Cox        :       Took out transmit every packet pass
41  *                                      Saved a few bytes in the ioctl handler
42  *              Alan Cox        :       Network driver sets packet type before
43  *                                      calling netif_rx. Saves a function
44  *                                      call a packet.
45  *              Alan Cox        :       Hashed net_bh()
46  *              Richard Kooijman:       Timestamp fixes.
47  *              Alan Cox        :       Wrong field in SIOCGIFDSTADDR
48  *              Alan Cox        :       Device lock protection.
49  *              Alan Cox        :       Fixed nasty side effect of device close
50  *                                      changes.
51  *              Rudi Cilibrasi  :       Pass the right thing to
52  *                                      set_mac_address()
53  *              Dave Miller     :       32bit quantity for the device lock to
54  *                                      make it work out on a Sparc.
55  *              Bjorn Ekwall    :       Added KERNELD hack.
56  *              Alan Cox        :       Cleaned up the backlog initialise.
57  *              Craig Metz      :       SIOCGIFCONF fix if space for under
58  *                                      1 device.
59  *          Thomas Bogendoerfer :       Return ENODEV for dev_open, if there
60  *                                      is no device open function.
61  *              Andi Kleen      :       Fix error reporting for SIOCGIFCONF
62  *          Michael Chastain    :       Fix signed/unsigned for SIOCGIFCONF
63  *              Cyrus Durgin    :       Cleaned for KMOD
64  *              Adam Sulmicki   :       Bug Fix : Network Device Unload
65  *                                      A network device unload needs to purge
66  *                                      the backlog queue.
67  *      Paul Rusty Russell      :       SIOCSIFNAME
68  *              Pekka Riikonen  :       Netdev boot-time settings code
69  *              Andrew Morton   :       Make unregister_netdevice wait
70  *                                      indefinitely on dev->refcnt
71  *              J Hadi Salim    :       - Backlog queue sampling
72  *                                      - netif_rx() feedback
73  */
74
75 #include <asm/uaccess.h>
76 #include <asm/system.h>
77 #include <linux/bitops.h>
78 #include <linux/capability.h>
79 #include <linux/cpu.h>
80 #include <linux/types.h>
81 #include <linux/kernel.h>
82 #include <linux/sched.h>
83 #include <linux/mutex.h>
84 #include <linux/string.h>
85 #include <linux/mm.h>
86 #include <linux/socket.h>
87 #include <linux/sockios.h>
88 #include <linux/errno.h>
89 #include <linux/interrupt.h>
90 #include <linux/if_ether.h>
91 #include <linux/netdevice.h>
92 #include <linux/etherdevice.h>
93 #include <linux/ethtool.h>
94 #include <linux/notifier.h>
95 #include <linux/skbuff.h>
96 #include <net/net_namespace.h>
97 #include <net/sock.h>
98 #include <linux/rtnetlink.h>
99 #include <linux/proc_fs.h>
100 #include <linux/seq_file.h>
101 #include <linux/stat.h>
102 #include <linux/if_bridge.h>
103 #include <linux/if_macvlan.h>
104 #include <net/dst.h>
105 #include <net/pkt_sched.h>
106 #include <net/checksum.h>
107 #include <linux/highmem.h>
108 #include <linux/init.h>
109 #include <linux/kmod.h>
110 #include <linux/module.h>
111 #include <linux/netpoll.h>
112 #include <linux/rcupdate.h>
113 #include <linux/delay.h>
114 #include <net/wext.h>
115 #include <net/iw_handler.h>
116 #include <asm/current.h>
117 #include <linux/audit.h>
118 #include <linux/dmaengine.h>
119 #include <linux/err.h>
120 #include <linux/ctype.h>
121 #include <linux/if_arp.h>
122 #include <linux/if_vlan.h>
123 #include <linux/ip.h>
124 #include <net/ip.h>
125 #include <linux/ipv6.h>
126 #include <linux/in.h>
127 #include <linux/jhash.h>
128 #include <linux/random.h>
129 #include <trace/napi.h>
130
131 #include "net-sysfs.h"
132
133 /* Instead of increasing this, you should create a hash table. */
134 #define MAX_GRO_SKBS 8
135
136 /* This should be increased if a protocol with a bigger head is added. */
137 #define GRO_MAX_HEAD (MAX_HEADER + 128)
138
139 /*
140  *      The list of packet types we will receive (as opposed to discard)
141  *      and the routines to invoke.
142  *
143  *      Why 16. Because with 16 the only overlap we get on a hash of the
144  *      low nibble of the protocol value is RARP/SNAP/X.25.
145  *
146  *      NOTE:  That is no longer true with the addition of VLAN tags.  Not
147  *             sure which should go first, but I bet it won't make much
148  *             difference if we are running VLANs.  The good news is that
149  *             this protocol won't be in the list unless compiled in, so
150  *             the average user (w/out VLANs) will not be adversely affected.
151  *             --BLG
152  *
153  *              0800    IP
154  *              8100    802.1Q VLAN
155  *              0001    802.3
156  *              0002    AX.25
157  *              0004    802.2
158  *              8035    RARP
159  *              0005    SNAP
160  *              0805    X.25
161  *              0806    ARP
162  *              8137    IPX
163  *              0009    Localtalk
164  *              86DD    IPv6
165  */
166
167 #define PTYPE_HASH_SIZE (16)
168 #define PTYPE_HASH_MASK (PTYPE_HASH_SIZE - 1)
169
170 static DEFINE_SPINLOCK(ptype_lock);
171 static struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly;
172 static struct list_head ptype_all __read_mostly;        /* Taps */
173
174 /*
175  * The @dev_base_head list is protected by @dev_base_lock and the rtnl
176  * semaphore.
177  *
178  * Pure readers hold dev_base_lock for reading.
179  *
180  * Writers must hold the rtnl semaphore while they loop through the
181  * dev_base_head list, and hold dev_base_lock for writing when they do the
182  * actual updates.  This allows pure readers to access the list even
183  * while a writer is preparing to update it.
184  *
185  * To put it another way, dev_base_lock is held for writing only to
186  * protect against pure readers; the rtnl semaphore provides the
187  * protection against other writers.
188  *
189  * See, for example usages, register_netdevice() and
190  * unregister_netdevice(), which must be called with the rtnl
191  * semaphore held.
192  */
193 DEFINE_RWLOCK(dev_base_lock);
194
195 EXPORT_SYMBOL(dev_base_lock);
196
197 #define NETDEV_HASHBITS 8
198 #define NETDEV_HASHENTRIES (1 << NETDEV_HASHBITS)
199
200 static inline struct hlist_head *dev_name_hash(struct net *net, const char *name)
201 {
202         unsigned hash = full_name_hash(name, strnlen(name, IFNAMSIZ));
203         return &net->dev_name_head[hash & ((1 << NETDEV_HASHBITS) - 1)];
204 }
205
206 static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
207 {
208         return &net->dev_index_head[ifindex & ((1 << NETDEV_HASHBITS) - 1)];
209 }
210
211 /* Device list insertion */
212 static int list_netdevice(struct net_device *dev)
213 {
214         struct net *net = dev_net(dev);
215
216         ASSERT_RTNL();
217
218         write_lock_bh(&dev_base_lock);
219         list_add_tail(&dev->dev_list, &net->dev_base_head);
220         hlist_add_head(&dev->name_hlist, dev_name_hash(net, dev->name));
221         hlist_add_head(&dev->index_hlist, dev_index_hash(net, dev->ifindex));
222         write_unlock_bh(&dev_base_lock);
223         return 0;
224 }
225
226 /* Device list removal */
227 static void unlist_netdevice(struct net_device *dev)
228 {
229         ASSERT_RTNL();
230
231         /* Unlink dev from the device chain */
232         write_lock_bh(&dev_base_lock);
233         list_del(&dev->dev_list);
234         hlist_del(&dev->name_hlist);
235         hlist_del(&dev->index_hlist);
236         write_unlock_bh(&dev_base_lock);
237 }
238
239 /*
240  *      Our notifier list
241  */
242
243 static RAW_NOTIFIER_HEAD(netdev_chain);
244
245 /*
246  *      Device drivers call our routines to queue packets here. We empty the
247  *      queue in the local softnet handler.
248  */
249
250 DEFINE_PER_CPU(struct softnet_data, softnet_data);
251
252 #ifdef CONFIG_LOCKDEP
253 /*
254  * register_netdevice() inits txq->_xmit_lock and sets lockdep class
255  * according to dev->type
256  */
257 static const unsigned short netdev_lock_type[] =
258         {ARPHRD_NETROM, ARPHRD_ETHER, ARPHRD_EETHER, ARPHRD_AX25,
259          ARPHRD_PRONET, ARPHRD_CHAOS, ARPHRD_IEEE802, ARPHRD_ARCNET,
260          ARPHRD_APPLETLK, ARPHRD_DLCI, ARPHRD_ATM, ARPHRD_METRICOM,
261          ARPHRD_IEEE1394, ARPHRD_EUI64, ARPHRD_INFINIBAND, ARPHRD_SLIP,
262          ARPHRD_CSLIP, ARPHRD_SLIP6, ARPHRD_CSLIP6, ARPHRD_RSRVD,
263          ARPHRD_ADAPT, ARPHRD_ROSE, ARPHRD_X25, ARPHRD_HWX25,
264          ARPHRD_PPP, ARPHRD_CISCO, ARPHRD_LAPB, ARPHRD_DDCMP,
265          ARPHRD_RAWHDLC, ARPHRD_TUNNEL, ARPHRD_TUNNEL6, ARPHRD_FRAD,
266          ARPHRD_SKIP, ARPHRD_LOOPBACK, ARPHRD_LOCALTLK, ARPHRD_FDDI,
267          ARPHRD_BIF, ARPHRD_SIT, ARPHRD_IPDDP, ARPHRD_IPGRE,
268          ARPHRD_PIMREG, ARPHRD_HIPPI, ARPHRD_ASH, ARPHRD_ECONET,
269          ARPHRD_IRDA, ARPHRD_FCPP, ARPHRD_FCAL, ARPHRD_FCPL,
270          ARPHRD_FCFABRIC, ARPHRD_IEEE802_TR, ARPHRD_IEEE80211,
271          ARPHRD_IEEE80211_PRISM, ARPHRD_IEEE80211_RADIOTAP, ARPHRD_PHONET,
272          ARPHRD_PHONET_PIPE, ARPHRD_VOID, ARPHRD_NONE};
273
274 static const char *netdev_lock_name[] =
275         {"_xmit_NETROM", "_xmit_ETHER", "_xmit_EETHER", "_xmit_AX25",
276          "_xmit_PRONET", "_xmit_CHAOS", "_xmit_IEEE802", "_xmit_ARCNET",
277          "_xmit_APPLETLK", "_xmit_DLCI", "_xmit_ATM", "_xmit_METRICOM",
278          "_xmit_IEEE1394", "_xmit_EUI64", "_xmit_INFINIBAND", "_xmit_SLIP",
279          "_xmit_CSLIP", "_xmit_SLIP6", "_xmit_CSLIP6", "_xmit_RSRVD",
280          "_xmit_ADAPT", "_xmit_ROSE", "_xmit_X25", "_xmit_HWX25",
281          "_xmit_PPP", "_xmit_CISCO", "_xmit_LAPB", "_xmit_DDCMP",
282          "_xmit_RAWHDLC", "_xmit_TUNNEL", "_xmit_TUNNEL6", "_xmit_FRAD",
283          "_xmit_SKIP", "_xmit_LOOPBACK", "_xmit_LOCALTLK", "_xmit_FDDI",
284          "_xmit_BIF", "_xmit_SIT", "_xmit_IPDDP", "_xmit_IPGRE",
285          "_xmit_PIMREG", "_xmit_HIPPI", "_xmit_ASH", "_xmit_ECONET",
286          "_xmit_IRDA", "_xmit_FCPP", "_xmit_FCAL", "_xmit_FCPL",
287          "_xmit_FCFABRIC", "_xmit_IEEE802_TR", "_xmit_IEEE80211",
288          "_xmit_IEEE80211_PRISM", "_xmit_IEEE80211_RADIOTAP", "_xmit_PHONET",
289          "_xmit_PHONET_PIPE", "_xmit_VOID", "_xmit_NONE"};
290
291 static struct lock_class_key netdev_xmit_lock_key[ARRAY_SIZE(netdev_lock_type)];
292 static struct lock_class_key netdev_addr_lock_key[ARRAY_SIZE(netdev_lock_type)];
293
294 static inline unsigned short netdev_lock_pos(unsigned short dev_type)
295 {
296         int i;
297
298         for (i = 0; i < ARRAY_SIZE(netdev_lock_type); i++)
299                 if (netdev_lock_type[i] == dev_type)
300                         return i;
301         /* the last key is used by default */
302         return ARRAY_SIZE(netdev_lock_type) - 1;
303 }
304
305 static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
306                                                  unsigned short dev_type)
307 {
308         int i;
309
310         i = netdev_lock_pos(dev_type);
311         lockdep_set_class_and_name(lock, &netdev_xmit_lock_key[i],
312                                    netdev_lock_name[i]);
313 }
314
315 static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
316 {
317         int i;
318
319         i = netdev_lock_pos(dev->type);
320         lockdep_set_class_and_name(&dev->addr_list_lock,
321                                    &netdev_addr_lock_key[i],
322                                    netdev_lock_name[i]);
323 }
324 #else
325 static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
326                                                  unsigned short dev_type)
327 {
328 }
329 static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
330 {
331 }
332 #endif
333
334 /*******************************************************************************
335
336                 Protocol management and registration routines
337
338 *******************************************************************************/
339
340 /*
341  *      Add a protocol ID to the list. Now that the input handler is
342  *      smarter we can dispense with all the messy stuff that used to be
343  *      here.
344  *
345  *      BEWARE!!! Protocol handlers, mangling input packets,
346  *      MUST BE last in hash buckets and checking protocol handlers
347  *      MUST start from promiscuous ptype_all chain in net_bh.
348  *      It is true now, do not change it.
349  *      Explanation follows: if protocol handler, mangling packet, will
350  *      be the first on list, it is not able to sense, that packet
351  *      is cloned and should be copied-on-write, so that it will
352  *      change it and subsequent readers will get broken packet.
353  *                                                      --ANK (980803)
354  */
355
356 /**
357  *      dev_add_pack - add packet handler
358  *      @pt: packet type declaration
359  *
360  *      Add a protocol handler to the networking stack. The passed &packet_type
361  *      is linked into kernel lists and may not be freed until it has been
362  *      removed from the kernel lists.
363  *
364  *      This call does not sleep therefore it can not
365  *      guarantee all CPU's that are in middle of receiving packets
366  *      will see the new packet type (until the next received packet).
367  */
368
369 void dev_add_pack(struct packet_type *pt)
370 {
371         int hash;
372
373         spin_lock_bh(&ptype_lock);
374         if (pt->type == htons(ETH_P_ALL))
375                 list_add_rcu(&pt->list, &ptype_all);
376         else {
377                 hash = ntohs(pt->type) & PTYPE_HASH_MASK;
378                 list_add_rcu(&pt->list, &ptype_base[hash]);
379         }
380         spin_unlock_bh(&ptype_lock);
381 }
382
383 /**
384  *      __dev_remove_pack        - remove packet handler
385  *      @pt: packet type declaration
386  *
387  *      Remove a protocol handler that was previously added to the kernel
388  *      protocol handlers by dev_add_pack(). The passed &packet_type is removed
389  *      from the kernel lists and can be freed or reused once this function
390  *      returns.
391  *
392  *      The packet type might still be in use by receivers
393  *      and must not be freed until after all the CPU's have gone
394  *      through a quiescent state.
395  */
396 void __dev_remove_pack(struct packet_type *pt)
397 {
398         struct list_head *head;
399         struct packet_type *pt1;
400
401         spin_lock_bh(&ptype_lock);
402
403         if (pt->type == htons(ETH_P_ALL))
404                 head = &ptype_all;
405         else
406                 head = &ptype_base[ntohs(pt->type) & PTYPE_HASH_MASK];
407
408         list_for_each_entry(pt1, head, list) {
409                 if (pt == pt1) {
410                         list_del_rcu(&pt->list);
411                         goto out;
412                 }
413         }
414
415         printk(KERN_WARNING "dev_remove_pack: %p not found.\n", pt);
416 out:
417         spin_unlock_bh(&ptype_lock);
418 }
419 /**
420  *      dev_remove_pack  - remove packet handler
421  *      @pt: packet type declaration
422  *
423  *      Remove a protocol handler that was previously added to the kernel
424  *      protocol handlers by dev_add_pack(). The passed &packet_type is removed
425  *      from the kernel lists and can be freed or reused once this function
426  *      returns.
427  *
428  *      This call sleeps to guarantee that no CPU is looking at the packet
429  *      type after return.
430  */
431 void dev_remove_pack(struct packet_type *pt)
432 {
433         __dev_remove_pack(pt);
434
435         synchronize_net();
436 }
437
438 /******************************************************************************
439
440                       Device Boot-time Settings Routines
441
442 *******************************************************************************/
443
444 /* Boot time configuration table */
445 static struct netdev_boot_setup dev_boot_setup[NETDEV_BOOT_SETUP_MAX];
446
447 /**
448  *      netdev_boot_setup_add   - add new setup entry
449  *      @name: name of the device
450  *      @map: configured settings for the device
451  *
452  *      Adds new setup entry to the dev_boot_setup list.  The function
453  *      returns 0 on error and 1 on success.  This is a generic routine to
454  *      all netdevices.
455  */
456 static int netdev_boot_setup_add(char *name, struct ifmap *map)
457 {
458         struct netdev_boot_setup *s;
459         int i;
460
461         s = dev_boot_setup;
462         for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
463                 if (s[i].name[0] == '\0' || s[i].name[0] == ' ') {
464                         memset(s[i].name, 0, sizeof(s[i].name));
465                         strlcpy(s[i].name, name, IFNAMSIZ);
466                         memcpy(&s[i].map, map, sizeof(s[i].map));
467                         break;
468                 }
469         }
470
471         return i >= NETDEV_BOOT_SETUP_MAX ? 0 : 1;
472 }
473
474 /**
475  *      netdev_boot_setup_check - check boot time settings
476  *      @dev: the netdevice
477  *
478  *      Check boot time settings for the device.
479  *      The found settings are set for the device to be used
480  *      later in the device probing.
481  *      Returns 0 if no settings found, 1 if they are.
482  */
483 int netdev_boot_setup_check(struct net_device *dev)
484 {
485         struct netdev_boot_setup *s = dev_boot_setup;
486         int i;
487
488         for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
489                 if (s[i].name[0] != '\0' && s[i].name[0] != ' ' &&
490                     !strcmp(dev->name, s[i].name)) {
491                         dev->irq        = s[i].map.irq;
492                         dev->base_addr  = s[i].map.base_addr;
493                         dev->mem_start  = s[i].map.mem_start;
494                         dev->mem_end    = s[i].map.mem_end;
495                         return 1;
496                 }
497         }
498         return 0;
499 }
500
501
502 /**
503  *      netdev_boot_base        - get address from boot time settings
504  *      @prefix: prefix for network device
505  *      @unit: id for network device
506  *
507  *      Check boot time settings for the base address of device.
508  *      The found settings are set for the device to be used
509  *      later in the device probing.
510  *      Returns 0 if no settings found.
511  */
512 unsigned long netdev_boot_base(const char *prefix, int unit)
513 {
514         const struct netdev_boot_setup *s = dev_boot_setup;
515         char name[IFNAMSIZ];
516         int i;
517
518         sprintf(name, "%s%d", prefix, unit);
519
520         /*
521          * If device already registered then return base of 1
522          * to indicate not to probe for this interface
523          */
524         if (__dev_get_by_name(&init_net, name))
525                 return 1;
526
527         for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++)
528                 if (!strcmp(name, s[i].name))
529                         return s[i].map.base_addr;
530         return 0;
531 }
532
533 /*
534  * Saves at boot time configured settings for any netdevice.
535  */
536 int __init netdev_boot_setup(char *str)
537 {
538         int ints[5];
539         struct ifmap map;
540
541         str = get_options(str, ARRAY_SIZE(ints), ints);
542         if (!str || !*str)
543                 return 0;
544
545         /* Save settings */
546         memset(&map, 0, sizeof(map));
547         if (ints[0] > 0)
548                 map.irq = ints[1];
549         if (ints[0] > 1)
550                 map.base_addr = ints[2];
551         if (ints[0] > 2)
552                 map.mem_start = ints[3];
553         if (ints[0] > 3)
554                 map.mem_end = ints[4];
555
556         /* Add new entry to the list */
557         return netdev_boot_setup_add(str, &map);
558 }
559
560 __setup("netdev=", netdev_boot_setup);
561
562 /*******************************************************************************
563
564                             Device Interface Subroutines
565
566 *******************************************************************************/
567
568 /**
569  *      __dev_get_by_name       - find a device by its name
570  *      @net: the applicable net namespace
571  *      @name: name to find
572  *
573  *      Find an interface by name. Must be called under RTNL semaphore
574  *      or @dev_base_lock. If the name is found a pointer to the device
575  *      is returned. If the name is not found then %NULL is returned. The
576  *      reference counters are not incremented so the caller must be
577  *      careful with locks.
578  */
579
580 struct net_device *__dev_get_by_name(struct net *net, const char *name)
581 {
582         struct hlist_node *p;
583
584         hlist_for_each(p, dev_name_hash(net, name)) {
585                 struct net_device *dev
586                         = hlist_entry(p, struct net_device, name_hlist);
587                 if (!strncmp(dev->name, name, IFNAMSIZ))
588                         return dev;
589         }
590         return NULL;
591 }
592
593 /**
594  *      dev_get_by_name         - find a device by its name
595  *      @net: the applicable net namespace
596  *      @name: name to find
597  *
598  *      Find an interface by name. This can be called from any
599  *      context and does its own locking. The returned handle has
600  *      the usage count incremented and the caller must use dev_put() to
601  *      release it when it is no longer needed. %NULL is returned if no
602  *      matching device is found.
603  */
604
605 struct net_device *dev_get_by_name(struct net *net, const char *name)
606 {
607         struct net_device *dev;
608
609         read_lock(&dev_base_lock);
610         dev = __dev_get_by_name(net, name);
611         if (dev)
612                 dev_hold(dev);
613         read_unlock(&dev_base_lock);
614         return dev;
615 }
616
617 /**
618  *      __dev_get_by_index - find a device by its ifindex
619  *      @net: the applicable net namespace
620  *      @ifindex: index of device
621  *
622  *      Search for an interface by index. Returns %NULL if the device
623  *      is not found or a pointer to the device. The device has not
624  *      had its reference counter increased so the caller must be careful
625  *      about locking. The caller must hold either the RTNL semaphore
626  *      or @dev_base_lock.
627  */
628
629 struct net_device *__dev_get_by_index(struct net *net, int ifindex)
630 {
631         struct hlist_node *p;
632
633         hlist_for_each(p, dev_index_hash(net, ifindex)) {
634                 struct net_device *dev
635                         = hlist_entry(p, struct net_device, index_hlist);
636                 if (dev->ifindex == ifindex)
637                         return dev;
638         }
639         return NULL;
640 }
641
642
643 /**
644  *      dev_get_by_index - find a device by its ifindex
645  *      @net: the applicable net namespace
646  *      @ifindex: index of device
647  *
648  *      Search for an interface by index. Returns NULL if the device
649  *      is not found or a pointer to the device. The device returned has
650  *      had a reference added and the pointer is safe until the user calls
651  *      dev_put to indicate they have finished with it.
652  */
653
654 struct net_device *dev_get_by_index(struct net *net, int ifindex)
655 {
656         struct net_device *dev;
657
658         read_lock(&dev_base_lock);
659         dev = __dev_get_by_index(net, ifindex);
660         if (dev)
661                 dev_hold(dev);
662         read_unlock(&dev_base_lock);
663         return dev;
664 }
665
666 /**
667  *      dev_getbyhwaddr - find a device by its hardware address
668  *      @net: the applicable net namespace
669  *      @type: media type of device
670  *      @ha: hardware address
671  *
672  *      Search for an interface by MAC address. Returns NULL if the device
673  *      is not found or a pointer to the device. The caller must hold the
674  *      rtnl semaphore. The returned device has not had its ref count increased
675  *      and the caller must therefore be careful about locking
676  *
677  *      BUGS:
678  *      If the API was consistent this would be __dev_get_by_hwaddr
679  */
680
681 struct net_device *dev_getbyhwaddr(struct net *net, unsigned short type, char *ha)
682 {
683         struct net_device *dev;
684
685         ASSERT_RTNL();
686
687         for_each_netdev(net, dev)
688                 if (dev->type == type &&
689                     !memcmp(dev->dev_addr, ha, dev->addr_len))
690                         return dev;
691
692         return NULL;
693 }
694
695 EXPORT_SYMBOL(dev_getbyhwaddr);
696
697 struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type)
698 {
699         struct net_device *dev;
700
701         ASSERT_RTNL();
702         for_each_netdev(net, dev)
703                 if (dev->type == type)
704                         return dev;
705
706         return NULL;
707 }
708
709 EXPORT_SYMBOL(__dev_getfirstbyhwtype);
710
711 struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type)
712 {
713         struct net_device *dev;
714
715         rtnl_lock();
716         dev = __dev_getfirstbyhwtype(net, type);
717         if (dev)
718                 dev_hold(dev);
719         rtnl_unlock();
720         return dev;
721 }
722
723 EXPORT_SYMBOL(dev_getfirstbyhwtype);
724
725 /**
726  *      dev_get_by_flags - find any device with given flags
727  *      @net: the applicable net namespace
728  *      @if_flags: IFF_* values
729  *      @mask: bitmask of bits in if_flags to check
730  *
731  *      Search for any interface with the given flags. Returns NULL if a device
732  *      is not found or a pointer to the device. The device returned has
733  *      had a reference added and the pointer is safe until the user calls
734  *      dev_put to indicate they have finished with it.
735  */
736
737 struct net_device * dev_get_by_flags(struct net *net, unsigned short if_flags, unsigned short mask)
738 {
739         struct net_device *dev, *ret;
740
741         ret = NULL;
742         read_lock(&dev_base_lock);
743         for_each_netdev(net, dev) {
744                 if (((dev->flags ^ if_flags) & mask) == 0) {
745                         dev_hold(dev);
746                         ret = dev;
747                         break;
748                 }
749         }
750         read_unlock(&dev_base_lock);
751         return ret;
752 }
753
754 /**
755  *      dev_valid_name - check if name is okay for network device
756  *      @name: name string
757  *
758  *      Network device names need to be valid file names to
759  *      to allow sysfs to work.  We also disallow any kind of
760  *      whitespace.
761  */
762 int dev_valid_name(const char *name)
763 {
764         if (*name == '\0')
765                 return 0;
766         if (strlen(name) >= IFNAMSIZ)
767                 return 0;
768         if (!strcmp(name, ".") || !strcmp(name, ".."))
769                 return 0;
770
771         while (*name) {
772                 if (*name == '/' || isspace(*name))
773                         return 0;
774                 name++;
775         }
776         return 1;
777 }
778
779 /**
780  *      __dev_alloc_name - allocate a name for a device
781  *      @net: network namespace to allocate the device name in
782  *      @name: name format string
783  *      @buf:  scratch buffer and result name string
784  *
785  *      Passed a format string - eg "lt%d" it will try and find a suitable
786  *      id. It scans list of devices to build up a free map, then chooses
787  *      the first empty slot. The caller must hold the dev_base or rtnl lock
788  *      while allocating the name and adding the device in order to avoid
789  *      duplicates.
790  *      Limited to bits_per_byte * page size devices (ie 32K on most platforms).
791  *      Returns the number of the unit assigned or a negative errno code.
792  */
793
794 static int __dev_alloc_name(struct net *net, const char *name, char *buf)
795 {
796         int i = 0;
797         const char *p;
798         const int max_netdevices = 8*PAGE_SIZE;
799         unsigned long *inuse;
800         struct net_device *d;
801
802         p = strnchr(name, IFNAMSIZ-1, '%');
803         if (p) {
804                 /*
805                  * Verify the string as this thing may have come from
806                  * the user.  There must be either one "%d" and no other "%"
807                  * characters.
808                  */
809                 if (p[1] != 'd' || strchr(p + 2, '%'))
810                         return -EINVAL;
811
812                 /* Use one page as a bit array of possible slots */
813                 inuse = (unsigned long *) get_zeroed_page(GFP_ATOMIC);
814                 if (!inuse)
815                         return -ENOMEM;
816
817                 for_each_netdev(net, d) {
818                         if (!sscanf(d->name, name, &i))
819                                 continue;
820                         if (i < 0 || i >= max_netdevices)
821                                 continue;
822
823                         /*  avoid cases where sscanf is not exact inverse of printf */
824                         snprintf(buf, IFNAMSIZ, name, i);
825                         if (!strncmp(buf, d->name, IFNAMSIZ))
826                                 set_bit(i, inuse);
827                 }
828
829                 i = find_first_zero_bit(inuse, max_netdevices);
830                 free_page((unsigned long) inuse);
831         }
832
833         snprintf(buf, IFNAMSIZ, name, i);
834         if (!__dev_get_by_name(net, buf))
835                 return i;
836
837         /* It is possible to run out of possible slots
838          * when the name is long and there isn't enough space left
839          * for the digits, or if all bits are used.
840          */
841         return -ENFILE;
842 }
843
844 /**
845  *      dev_alloc_name - allocate a name for a device
846  *      @dev: device
847  *      @name: name format string
848  *
849  *      Passed a format string - eg "lt%d" it will try and find a suitable
850  *      id. It scans list of devices to build up a free map, then chooses
851  *      the first empty slot. The caller must hold the dev_base or rtnl lock
852  *      while allocating the name and adding the device in order to avoid
853  *      duplicates.
854  *      Limited to bits_per_byte * page size devices (ie 32K on most platforms).
855  *      Returns the number of the unit assigned or a negative errno code.
856  */
857
858 int dev_alloc_name(struct net_device *dev, const char *name)
859 {
860         char buf[IFNAMSIZ];
861         struct net *net;
862         int ret;
863
864         BUG_ON(!dev_net(dev));
865         net = dev_net(dev);
866         ret = __dev_alloc_name(net, name, buf);
867         if (ret >= 0)
868                 strlcpy(dev->name, buf, IFNAMSIZ);
869         return ret;
870 }
871
872
873 /**
874  *      dev_change_name - change name of a device
875  *      @dev: device
876  *      @newname: name (or format string) must be at least IFNAMSIZ
877  *
878  *      Change name of a device, can pass format strings "eth%d".
879  *      for wildcarding.
880  */
881 int dev_change_name(struct net_device *dev, const char *newname)
882 {
883         char oldname[IFNAMSIZ];
884         int err = 0;
885         int ret;
886         struct net *net;
887
888         ASSERT_RTNL();
889         BUG_ON(!dev_net(dev));
890
891         net = dev_net(dev);
892         if (dev->flags & IFF_UP)
893                 return -EBUSY;
894
895         if (!dev_valid_name(newname))
896                 return -EINVAL;
897
898         if (strncmp(newname, dev->name, IFNAMSIZ) == 0)
899                 return 0;
900
901         memcpy(oldname, dev->name, IFNAMSIZ);
902
903         if (strchr(newname, '%')) {
904                 err = dev_alloc_name(dev, newname);
905                 if (err < 0)
906                         return err;
907         }
908         else if (__dev_get_by_name(net, newname))
909                 return -EEXIST;
910         else
911                 strlcpy(dev->name, newname, IFNAMSIZ);
912
913 rollback:
914         /* For now only devices in the initial network namespace
915          * are in sysfs.
916          */
917         if (net == &init_net) {
918                 ret = device_rename(&dev->dev, dev->name);
919                 if (ret) {
920                         memcpy(dev->name, oldname, IFNAMSIZ);
921                         return ret;
922                 }
923         }
924
925         write_lock_bh(&dev_base_lock);
926         hlist_del(&dev->name_hlist);
927         hlist_add_head(&dev->name_hlist, dev_name_hash(net, dev->name));
928         write_unlock_bh(&dev_base_lock);
929
930         ret = call_netdevice_notifiers(NETDEV_CHANGENAME, dev);
931         ret = notifier_to_errno(ret);
932
933         if (ret) {
934                 if (err) {
935                         printk(KERN_ERR
936                                "%s: name change rollback failed: %d.\n",
937                                dev->name, ret);
938                 } else {
939                         err = ret;
940                         memcpy(dev->name, oldname, IFNAMSIZ);
941                         goto rollback;
942                 }
943         }
944
945         return err;
946 }
947
948 /**
949  *      dev_set_alias - change ifalias of a device
950  *      @dev: device
951  *      @alias: name up to IFALIASZ
952  *      @len: limit of bytes to copy from info
953  *
954  *      Set ifalias for a device,
955  */
956 int dev_set_alias(struct net_device *dev, const char *alias, size_t len)
957 {
958         ASSERT_RTNL();
959
960         if (len >= IFALIASZ)
961                 return -EINVAL;
962
963         if (!len) {
964                 if (dev->ifalias) {
965                         kfree(dev->ifalias);
966                         dev->ifalias = NULL;
967                 }
968                 return 0;
969         }
970
971         dev->ifalias = krealloc(dev->ifalias, len+1, GFP_KERNEL);
972         if (!dev->ifalias)
973                 return -ENOMEM;
974
975         strlcpy(dev->ifalias, alias, len+1);
976         return len;
977 }
978
979
980 /**
981  *      netdev_features_change - device changes features
982  *      @dev: device to cause notification
983  *
984  *      Called to indicate a device has changed features.
985  */
986 void netdev_features_change(struct net_device *dev)
987 {
988         call_netdevice_notifiers(NETDEV_FEAT_CHANGE, dev);
989 }
990 EXPORT_SYMBOL(netdev_features_change);
991
992 /**
993  *      netdev_state_change - device changes state
994  *      @dev: device to cause notification
995  *
996  *      Called to indicate a device has changed state. This function calls
997  *      the notifier chains for netdev_chain and sends a NEWLINK message
998  *      to the routing socket.
999  */
1000 void netdev_state_change(struct net_device *dev)
1001 {
1002         if (dev->flags & IFF_UP) {
1003                 call_netdevice_notifiers(NETDEV_CHANGE, dev);
1004                 rtmsg_ifinfo(RTM_NEWLINK, dev, 0);
1005         }
1006 }
1007
1008 void netdev_bonding_change(struct net_device *dev)
1009 {
1010         call_netdevice_notifiers(NETDEV_BONDING_FAILOVER, dev);
1011 }
1012 EXPORT_SYMBOL(netdev_bonding_change);
1013
1014 /**
1015  *      dev_load        - load a network module
1016  *      @net: the applicable net namespace
1017  *      @name: name of interface
1018  *
1019  *      If a network interface is not present and the process has suitable
1020  *      privileges this function loads the module. If module loading is not
1021  *      available in this kernel then it becomes a nop.
1022  */
1023
1024 void dev_load(struct net *net, const char *name)
1025 {
1026         struct net_device *dev;
1027
1028         read_lock(&dev_base_lock);
1029         dev = __dev_get_by_name(net, name);
1030         read_unlock(&dev_base_lock);
1031
1032         if (!dev && capable(CAP_SYS_MODULE))
1033                 request_module("%s", name);
1034 }
1035
1036 /**
1037  *      dev_open        - prepare an interface for use.
1038  *      @dev:   device to open
1039  *
1040  *      Takes a device from down to up state. The device's private open
1041  *      function is invoked and then the multicast lists are loaded. Finally
1042  *      the device is moved into the up state and a %NETDEV_UP message is
1043  *      sent to the netdev notifier chain.
1044  *
1045  *      Calling this function on an active interface is a nop. On a failure
1046  *      a negative errno code is returned.
1047  */
1048 int dev_open(struct net_device *dev)
1049 {
1050         const struct net_device_ops *ops = dev->netdev_ops;
1051         int ret = 0;
1052
1053         ASSERT_RTNL();
1054
1055         /*
1056          *      Is it already up?
1057          */
1058
1059         if (dev->flags & IFF_UP)
1060                 return 0;
1061
1062         /*
1063          *      Is it even present?
1064          */
1065         if (!netif_device_present(dev))
1066                 return -ENODEV;
1067
1068         /*
1069          *      Call device private open method
1070          */
1071         set_bit(__LINK_STATE_START, &dev->state);
1072
1073         if (ops->ndo_validate_addr)
1074                 ret = ops->ndo_validate_addr(dev);
1075
1076         if (!ret && ops->ndo_open)
1077                 ret = ops->ndo_open(dev);
1078
1079         /*
1080          *      If it went open OK then:
1081          */
1082
1083         if (ret)
1084                 clear_bit(__LINK_STATE_START, &dev->state);
1085         else {
1086                 /*
1087                  *      Set the flags.
1088                  */
1089                 dev->flags |= IFF_UP;
1090
1091                 /*
1092                  *      Enable NET_DMA
1093                  */
1094                 net_dmaengine_get();
1095
1096                 /*
1097                  *      Initialize multicasting status
1098                  */
1099                 dev_set_rx_mode(dev);
1100
1101                 /*
1102                  *      Wakeup transmit queue engine
1103                  */
1104                 dev_activate(dev);
1105
1106                 /*
1107                  *      ... and announce new interface.
1108                  */
1109                 call_netdevice_notifiers(NETDEV_UP, dev);
1110         }
1111
1112         return ret;
1113 }
1114
1115 /**
1116  *      dev_close - shutdown an interface.
1117  *      @dev: device to shutdown
1118  *
1119  *      This function moves an active device into down state. A
1120  *      %NETDEV_GOING_DOWN is sent to the netdev notifier chain. The device
1121  *      is then deactivated and finally a %NETDEV_DOWN is sent to the notifier
1122  *      chain.
1123  */
1124 int dev_close(struct net_device *dev)
1125 {
1126         const struct net_device_ops *ops = dev->netdev_ops;
1127         ASSERT_RTNL();
1128
1129         might_sleep();
1130
1131         if (!(dev->flags & IFF_UP))
1132                 return 0;
1133
1134         /*
1135          *      Tell people we are going down, so that they can
1136          *      prepare to death, when device is still operating.
1137          */
1138         call_netdevice_notifiers(NETDEV_GOING_DOWN, dev);
1139
1140         clear_bit(__LINK_STATE_START, &dev->state);
1141
1142         /* Synchronize to scheduled poll. We cannot touch poll list,
1143          * it can be even on different cpu. So just clear netif_running().
1144          *
1145          * dev->stop() will invoke napi_disable() on all of it's
1146          * napi_struct instances on this device.
1147          */
1148         smp_mb__after_clear_bit(); /* Commit netif_running(). */
1149
1150         dev_deactivate(dev);
1151
1152         /*
1153          *      Call the device specific close. This cannot fail.
1154          *      Only if device is UP
1155          *
1156          *      We allow it to be called even after a DETACH hot-plug
1157          *      event.
1158          */
1159         if (ops->ndo_stop)
1160                 ops->ndo_stop(dev);
1161
1162         /*
1163          *      Device is now down.
1164          */
1165
1166         dev->flags &= ~IFF_UP;
1167
1168         /*
1169          * Tell people we are down
1170          */
1171         call_netdevice_notifiers(NETDEV_DOWN, dev);
1172
1173         /*
1174          *      Shutdown NET_DMA
1175          */
1176         net_dmaengine_put();
1177
1178         return 0;
1179 }
1180
1181
1182 /**
1183  *      dev_disable_lro - disable Large Receive Offload on a device
1184  *      @dev: device
1185  *
1186  *      Disable Large Receive Offload (LRO) on a net device.  Must be
1187  *      called under RTNL.  This is needed if received packets may be
1188  *      forwarded to another interface.
1189  */
1190 void dev_disable_lro(struct net_device *dev)
1191 {
1192         if (dev->ethtool_ops && dev->ethtool_ops->get_flags &&
1193             dev->ethtool_ops->set_flags) {
1194                 u32 flags = dev->ethtool_ops->get_flags(dev);
1195                 if (flags & ETH_FLAG_LRO) {
1196                         flags &= ~ETH_FLAG_LRO;
1197                         dev->ethtool_ops->set_flags(dev, flags);
1198                 }
1199         }
1200         WARN_ON(dev->features & NETIF_F_LRO);
1201 }
1202 EXPORT_SYMBOL(dev_disable_lro);
1203
1204
1205 static int dev_boot_phase = 1;
1206
1207 /*
1208  *      Device change register/unregister. These are not inline or static
1209  *      as we export them to the world.
1210  */
1211
1212 /**
1213  *      register_netdevice_notifier - register a network notifier block
1214  *      @nb: notifier
1215  *
1216  *      Register a notifier to be called when network device events occur.
1217  *      The notifier passed is linked into the kernel structures and must
1218  *      not be reused until it has been unregistered. A negative errno code
1219  *      is returned on a failure.
1220  *
1221  *      When registered all registration and up events are replayed
1222  *      to the new notifier to allow device to have a race free
1223  *      view of the network device list.
1224  */
1225
1226 int register_netdevice_notifier(struct notifier_block *nb)
1227 {
1228         struct net_device *dev;
1229         struct net_device *last;
1230         struct net *net;
1231         int err;
1232
1233         rtnl_lock();
1234         err = raw_notifier_chain_register(&netdev_chain, nb);
1235         if (err)
1236                 goto unlock;
1237         if (dev_boot_phase)
1238                 goto unlock;
1239         for_each_net(net) {
1240                 for_each_netdev(net, dev) {
1241                         err = nb->notifier_call(nb, NETDEV_REGISTER, dev);
1242                         err = notifier_to_errno(err);
1243                         if (err)
1244                                 goto rollback;
1245
1246                         if (!(dev->flags & IFF_UP))
1247                                 continue;
1248
1249                         nb->notifier_call(nb, NETDEV_UP, dev);
1250                 }
1251         }
1252
1253 unlock:
1254         rtnl_unlock();
1255         return err;
1256
1257 rollback:
1258         last = dev;
1259         for_each_net(net) {
1260                 for_each_netdev(net, dev) {
1261                         if (dev == last)
1262                                 break;
1263
1264                         if (dev->flags & IFF_UP) {
1265                                 nb->notifier_call(nb, NETDEV_GOING_DOWN, dev);
1266                                 nb->notifier_call(nb, NETDEV_DOWN, dev);
1267                         }
1268                         nb->notifier_call(nb, NETDEV_UNREGISTER, dev);
1269                 }
1270         }
1271
1272         raw_notifier_chain_unregister(&netdev_chain, nb);
1273         goto unlock;
1274 }
1275
1276 /**
1277  *      unregister_netdevice_notifier - unregister a network notifier block
1278  *      @nb: notifier
1279  *
1280  *      Unregister a notifier previously registered by
1281  *      register_netdevice_notifier(). The notifier is unlinked into the
1282  *      kernel structures and may then be reused. A negative errno code
1283  *      is returned on a failure.
1284  */
1285
1286 int unregister_netdevice_notifier(struct notifier_block *nb)
1287 {
1288         int err;
1289
1290         rtnl_lock();
1291         err = raw_notifier_chain_unregister(&netdev_chain, nb);
1292         rtnl_unlock();
1293         return err;
1294 }
1295
1296 /**
1297  *      call_netdevice_notifiers - call all network notifier blocks
1298  *      @val: value passed unmodified to notifier function
1299  *      @dev: net_device pointer passed unmodified to notifier function
1300  *
1301  *      Call all network notifier blocks.  Parameters and return value
1302  *      are as for raw_notifier_call_chain().
1303  */
1304
1305 int call_netdevice_notifiers(unsigned long val, struct net_device *dev)
1306 {
1307         return raw_notifier_call_chain(&netdev_chain, val, dev);
1308 }
1309
1310 /* When > 0 there are consumers of rx skb time stamps */
1311 static atomic_t netstamp_needed = ATOMIC_INIT(0);
1312
1313 void net_enable_timestamp(void)
1314 {
1315         atomic_inc(&netstamp_needed);
1316 }
1317
1318 void net_disable_timestamp(void)
1319 {
1320         atomic_dec(&netstamp_needed);
1321 }
1322
1323 static inline void net_timestamp(struct sk_buff *skb)
1324 {
1325         if (atomic_read(&netstamp_needed))
1326                 __net_timestamp(skb);
1327         else
1328                 skb->tstamp.tv64 = 0;
1329 }
1330
1331 /*
1332  *      Support routine. Sends outgoing frames to any network
1333  *      taps currently in use.
1334  */
1335
1336 static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
1337 {
1338         struct packet_type *ptype;
1339
1340 #ifdef CONFIG_NET_CLS_ACT
1341         if (!(skb->tstamp.tv64 && (G_TC_FROM(skb->tc_verd) & AT_INGRESS)))
1342                 net_timestamp(skb);
1343 #else
1344         net_timestamp(skb);
1345 #endif
1346
1347         rcu_read_lock();
1348         list_for_each_entry_rcu(ptype, &ptype_all, list) {
1349                 /* Never send packets back to the socket
1350                  * they originated from - MvS (miquels@drinkel.ow.org)
1351                  */
1352                 if ((ptype->dev == dev || !ptype->dev) &&
1353                     (ptype->af_packet_priv == NULL ||
1354                      (struct sock *)ptype->af_packet_priv != skb->sk)) {
1355                         struct sk_buff *skb2= skb_clone(skb, GFP_ATOMIC);
1356                         if (!skb2)
1357                                 break;
1358
1359                         /* skb->nh should be correctly
1360                            set by sender, so that the second statement is
1361                            just protection against buggy protocols.
1362                          */
1363                         skb_reset_mac_header(skb2);
1364
1365                         if (skb_network_header(skb2) < skb2->data ||
1366                             skb2->network_header > skb2->tail) {
1367                                 if (net_ratelimit())
1368                                         printk(KERN_CRIT "protocol %04x is "
1369                                                "buggy, dev %s\n",
1370                                                skb2->protocol, dev->name);
1371                                 skb_reset_network_header(skb2);
1372                         }
1373
1374                         skb2->transport_header = skb2->network_header;
1375                         skb2->pkt_type = PACKET_OUTGOING;
1376                         ptype->func(skb2, skb->dev, ptype, skb->dev);
1377                 }
1378         }
1379         rcu_read_unlock();
1380 }
1381
1382
1383 static inline void __netif_reschedule(struct Qdisc *q)
1384 {
1385         struct softnet_data *sd;
1386         unsigned long flags;
1387
1388         local_irq_save(flags);
1389         sd = &__get_cpu_var(softnet_data);
1390         q->next_sched = sd->output_queue;
1391         sd->output_queue = q;
1392         raise_softirq_irqoff(NET_TX_SOFTIRQ);
1393         local_irq_restore(flags);
1394 }
1395
1396 void __netif_schedule(struct Qdisc *q)
1397 {
1398         if (!test_and_set_bit(__QDISC_STATE_SCHED, &q->state))
1399                 __netif_reschedule(q);
1400 }
1401 EXPORT_SYMBOL(__netif_schedule);
1402
1403 void dev_kfree_skb_irq(struct sk_buff *skb)
1404 {
1405         if (atomic_dec_and_test(&skb->users)) {
1406                 struct softnet_data *sd;
1407                 unsigned long flags;
1408
1409                 local_irq_save(flags);
1410                 sd = &__get_cpu_var(softnet_data);
1411                 skb->next = sd->completion_queue;
1412                 sd->completion_queue = skb;
1413                 raise_softirq_irqoff(NET_TX_SOFTIRQ);
1414                 local_irq_restore(flags);
1415         }
1416 }
1417 EXPORT_SYMBOL(dev_kfree_skb_irq);
1418
1419 void dev_kfree_skb_any(struct sk_buff *skb)
1420 {
1421         if (in_irq() || irqs_disabled())
1422                 dev_kfree_skb_irq(skb);
1423         else
1424                 dev_kfree_skb(skb);
1425 }
1426 EXPORT_SYMBOL(dev_kfree_skb_any);
1427
1428
1429 /**
1430  * netif_device_detach - mark device as removed
1431  * @dev: network device
1432  *
1433  * Mark device as removed from system and therefore no longer available.
1434  */
1435 void netif_device_detach(struct net_device *dev)
1436 {
1437         if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
1438             netif_running(dev)) {
1439                 netif_tx_stop_all_queues(dev);
1440         }
1441 }
1442 EXPORT_SYMBOL(netif_device_detach);
1443
1444 /**
1445  * netif_device_attach - mark device as attached
1446  * @dev: network device
1447  *
1448  * Mark device as attached from system and restart if needed.
1449  */
1450 void netif_device_attach(struct net_device *dev)
1451 {
1452         if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
1453             netif_running(dev)) {
1454                 netif_tx_wake_all_queues(dev);
1455                 __netdev_watchdog_up(dev);
1456         }
1457 }
1458 EXPORT_SYMBOL(netif_device_attach);
1459
1460 static bool can_checksum_protocol(unsigned long features, __be16 protocol)
1461 {
1462         return ((features & NETIF_F_GEN_CSUM) ||
1463                 ((features & NETIF_F_IP_CSUM) &&
1464                  protocol == htons(ETH_P_IP)) ||
1465                 ((features & NETIF_F_IPV6_CSUM) &&
1466                  protocol == htons(ETH_P_IPV6)) ||
1467                 ((features & NETIF_F_FCOE_CRC) &&
1468                  protocol == htons(ETH_P_FCOE)));
1469 }
1470
1471 static bool dev_can_checksum(struct net_device *dev, struct sk_buff *skb)
1472 {
1473         if (can_checksum_protocol(dev->features, skb->protocol))
1474                 return true;
1475
1476         if (skb->protocol == htons(ETH_P_8021Q)) {
1477                 struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb->data;
1478                 if (can_checksum_protocol(dev->features & dev->vlan_features,
1479                                           veh->h_vlan_encapsulated_proto))
1480                         return true;
1481         }
1482
1483         return false;
1484 }
1485
1486 /*
1487  * Invalidate hardware checksum when packet is to be mangled, and
1488  * complete checksum manually on outgoing path.
1489  */
1490 int skb_checksum_help(struct sk_buff *skb)
1491 {
1492         __wsum csum;
1493         int ret = 0, offset;
1494
1495         if (skb->ip_summed == CHECKSUM_COMPLETE)
1496                 goto out_set_summed;
1497
1498         if (unlikely(skb_shinfo(skb)->gso_size)) {
1499                 /* Let GSO fix up the checksum. */
1500                 goto out_set_summed;
1501         }
1502
1503         offset = skb->csum_start - skb_headroom(skb);
1504         BUG_ON(offset >= skb_headlen(skb));
1505         csum = skb_checksum(skb, offset, skb->len - offset, 0);
1506
1507         offset += skb->csum_offset;
1508         BUG_ON(offset + sizeof(__sum16) > skb_headlen(skb));
1509
1510         if (skb_cloned(skb) &&
1511             !skb_clone_writable(skb, offset + sizeof(__sum16))) {
1512                 ret = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
1513                 if (ret)
1514                         goto out;
1515         }
1516
1517         *(__sum16 *)(skb->data + offset) = csum_fold(csum);
1518 out_set_summed:
1519         skb->ip_summed = CHECKSUM_NONE;
1520 out:
1521         return ret;
1522 }
1523
1524 /**
1525  *      skb_gso_segment - Perform segmentation on skb.
1526  *      @skb: buffer to segment
1527  *      @features: features for the output path (see dev->features)
1528  *
1529  *      This function segments the given skb and returns a list of segments.
1530  *
1531  *      It may return NULL if the skb requires no segmentation.  This is
1532  *      only possible when GSO is used for verifying header integrity.
1533  */
1534 struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)
1535 {
1536         struct sk_buff *segs = ERR_PTR(-EPROTONOSUPPORT);
1537         struct packet_type *ptype;
1538         __be16 type = skb->protocol;
1539         int err;
1540
1541         skb_reset_mac_header(skb);
1542         skb->mac_len = skb->network_header - skb->mac_header;
1543         __skb_pull(skb, skb->mac_len);
1544
1545         if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
1546                 struct net_device *dev = skb->dev;
1547                 struct ethtool_drvinfo info = {};
1548
1549                 if (dev && dev->ethtool_ops && dev->ethtool_ops->get_drvinfo)
1550                         dev->ethtool_ops->get_drvinfo(dev, &info);
1551
1552                 WARN(1, "%s: caps=(0x%lx, 0x%lx) len=%d data_len=%d "
1553                         "ip_summed=%d",
1554                      info.driver, dev ? dev->features : 0L,
1555                      skb->sk ? skb->sk->sk_route_caps : 0L,
1556                      skb->len, skb->data_len, skb->ip_summed);
1557
1558                 if (skb_header_cloned(skb) &&
1559                     (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC)))
1560                         return ERR_PTR(err);
1561         }
1562
1563         rcu_read_lock();
1564         list_for_each_entry_rcu(ptype,
1565                         &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
1566                 if (ptype->type == type && !ptype->dev && ptype->gso_segment) {
1567                         if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
1568                                 err = ptype->gso_send_check(skb);
1569                                 segs = ERR_PTR(err);
1570                                 if (err || skb_gso_ok(skb, features))
1571                                         break;
1572                                 __skb_push(skb, (skb->data -
1573                                                  skb_network_header(skb)));
1574                         }
1575                         segs = ptype->gso_segment(skb, features);
1576                         break;
1577                 }
1578         }
1579         rcu_read_unlock();
1580
1581         __skb_push(skb, skb->data - skb_mac_header(skb));
1582
1583         return segs;
1584 }
1585
1586 EXPORT_SYMBOL(skb_gso_segment);
1587
1588 /* Take action when hardware reception checksum errors are detected. */
1589 #ifdef CONFIG_BUG
1590 void netdev_rx_csum_fault(struct net_device *dev)
1591 {
1592         if (net_ratelimit()) {
1593                 printk(KERN_ERR "%s: hw csum failure.\n",
1594                         dev ? dev->name : "<unknown>");
1595                 dump_stack();
1596         }
1597 }
1598 EXPORT_SYMBOL(netdev_rx_csum_fault);
1599 #endif
1600
1601 /* Actually, we should eliminate this check as soon as we know, that:
1602  * 1. IOMMU is present and allows to map all the memory.
1603  * 2. No high memory really exists on this machine.
1604  */
1605
1606 static inline int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
1607 {
1608 #ifdef CONFIG_HIGHMEM
1609         int i;
1610
1611         if (dev->features & NETIF_F_HIGHDMA)
1612                 return 0;
1613
1614         for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
1615                 if (PageHighMem(skb_shinfo(skb)->frags[i].page))
1616                         return 1;
1617
1618 #endif
1619         return 0;
1620 }
1621
1622 struct dev_gso_cb {
1623         void (*destructor)(struct sk_buff *skb);
1624 };
1625
1626 #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
1627
1628 static void dev_gso_skb_destructor(struct sk_buff *skb)
1629 {
1630         struct dev_gso_cb *cb;
1631
1632         do {
1633                 struct sk_buff *nskb = skb->next;
1634
1635                 skb->next = nskb->next;
1636                 nskb->next = NULL;
1637                 kfree_skb(nskb);
1638         } while (skb->next);
1639
1640         cb = DEV_GSO_CB(skb);
1641         if (cb->destructor)
1642                 cb->destructor(skb);
1643 }
1644
1645 /**
1646  *      dev_gso_segment - Perform emulated hardware segmentation on skb.
1647  *      @skb: buffer to segment
1648  *
1649  *      This function segments the given skb and stores the list of segments
1650  *      in skb->next.
1651  */
1652 static int dev_gso_segment(struct sk_buff *skb)
1653 {
1654         struct net_device *dev = skb->dev;
1655         struct sk_buff *segs;
1656         int features = dev->features & ~(illegal_highdma(dev, skb) ?
1657                                          NETIF_F_SG : 0);
1658
1659         segs = skb_gso_segment(skb, features);
1660
1661         /* Verifying header integrity only. */
1662         if (!segs)
1663                 return 0;
1664
1665         if (IS_ERR(segs))
1666                 return PTR_ERR(segs);
1667
1668         skb->next = segs;
1669         DEV_GSO_CB(skb)->destructor = skb->destructor;
1670         skb->destructor = dev_gso_skb_destructor;
1671
1672         return 0;
1673 }
1674
1675 int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
1676                         struct netdev_queue *txq)
1677 {
1678         const struct net_device_ops *ops = dev->netdev_ops;
1679         int rc;
1680
1681         if (likely(!skb->next)) {
1682                 if (!list_empty(&ptype_all))
1683                         dev_queue_xmit_nit(skb, dev);
1684
1685                 if (netif_needs_gso(dev, skb)) {
1686                         if (unlikely(dev_gso_segment(skb)))
1687                                 goto out_kfree_skb;
1688                         if (skb->next)
1689                                 goto gso;
1690                 }
1691
1692                 /*
1693                  * If device doesnt need skb->dst, release it right now while
1694                  * its hot in this cpu cache
1695                  */
1696                 if ((dev->priv_flags & IFF_XMIT_DST_RELEASE) && skb->dst) {
1697                         dst_release(skb->dst);
1698                         skb->dst = NULL;
1699                 }
1700                 rc = ops->ndo_start_xmit(skb, dev);
1701                 if (rc == 0)
1702                         txq_trans_update(txq);
1703                 /*
1704                  * TODO: if skb_orphan() was called by
1705                  * dev->hard_start_xmit() (for example, the unmodified
1706                  * igb driver does that; bnx2 doesn't), then
1707                  * skb_tx_software_timestamp() will be unable to send
1708                  * back the time stamp.
1709                  *
1710                  * How can this be prevented? Always create another
1711                  * reference to the socket before calling
1712                  * dev->hard_start_xmit()? Prevent that skb_orphan()
1713                  * does anything in dev->hard_start_xmit() by clearing
1714                  * the skb destructor before the call and restoring it
1715                  * afterwards, then doing the skb_orphan() ourselves?
1716                  */
1717                 return rc;
1718         }
1719
1720 gso:
1721         do {
1722                 struct sk_buff *nskb = skb->next;
1723
1724                 skb->next = nskb->next;
1725                 nskb->next = NULL;
1726                 rc = ops->ndo_start_xmit(nskb, dev);
1727                 if (unlikely(rc)) {
1728                         nskb->next = skb->next;
1729                         skb->next = nskb;
1730                         return rc;
1731                 }
1732                 txq_trans_update(txq);
1733                 if (unlikely(netif_tx_queue_stopped(txq) && skb->next))
1734                         return NETDEV_TX_BUSY;
1735         } while (skb->next);
1736
1737         skb->destructor = DEV_GSO_CB(skb)->destructor;
1738
1739 out_kfree_skb:
1740         kfree_skb(skb);
1741         return 0;
1742 }
1743
1744 static u32 skb_tx_hashrnd;
1745
1746 u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb)
1747 {
1748         u32 hash;
1749
1750         if (skb_rx_queue_recorded(skb)) {
1751                 hash = skb_get_rx_queue(skb);
1752                 while (unlikely (hash >= dev->real_num_tx_queues))
1753                         hash -= dev->real_num_tx_queues;
1754                 return hash;
1755         }
1756
1757         if (skb->sk && skb->sk->sk_hash)
1758                 hash = skb->sk->sk_hash;
1759         else
1760                 hash = skb->protocol;
1761
1762         hash = jhash_1word(hash, skb_tx_hashrnd);
1763
1764         return (u16) (((u64) hash * dev->real_num_tx_queues) >> 32);
1765 }
1766 EXPORT_SYMBOL(skb_tx_hash);
1767
1768 static struct netdev_queue *dev_pick_tx(struct net_device *dev,
1769                                         struct sk_buff *skb)
1770 {
1771         const struct net_device_ops *ops = dev->netdev_ops;
1772         u16 queue_index = 0;
1773
1774         if (ops->ndo_select_queue)
1775                 queue_index = ops->ndo_select_queue(dev, skb);
1776         else if (dev->real_num_tx_queues > 1)
1777                 queue_index = skb_tx_hash(dev, skb);
1778
1779         skb_set_queue_mapping(skb, queue_index);
1780         return netdev_get_tx_queue(dev, queue_index);
1781 }
1782
1783 /**
1784  *      dev_queue_xmit - transmit a buffer
1785  *      @skb: buffer to transmit
1786  *
1787  *      Queue a buffer for transmission to a network device. The caller must
1788  *      have set the device and priority and built the buffer before calling
1789  *      this function. The function can be called from an interrupt.
1790  *
1791  *      A negative errno code is returned on a failure. A success does not
1792  *      guarantee the frame will be transmitted as it may be dropped due
1793  *      to congestion or traffic shaping.
1794  *
1795  * -----------------------------------------------------------------------------------
1796  *      I notice this method can also return errors from the queue disciplines,
1797  *      including NET_XMIT_DROP, which is a positive value.  So, errors can also
1798  *      be positive.
1799  *
1800  *      Regardless of the return value, the skb is consumed, so it is currently
1801  *      difficult to retry a send to this method.  (You can bump the ref count
1802  *      before sending to hold a reference for retry if you are careful.)
1803  *
1804  *      When calling this method, interrupts MUST be enabled.  This is because
1805  *      the BH enable code must have IRQs enabled so that it will not deadlock.
1806  *          --BLG
1807  */
1808 int dev_queue_xmit(struct sk_buff *skb)
1809 {
1810         struct net_device *dev = skb->dev;
1811         struct netdev_queue *txq;
1812         struct Qdisc *q;
1813         int rc = -ENOMEM;
1814
1815         /* GSO will handle the following emulations directly. */
1816         if (netif_needs_gso(dev, skb))
1817                 goto gso;
1818
1819         if (skb_shinfo(skb)->frag_list &&
1820             !(dev->features & NETIF_F_FRAGLIST) &&
1821             __skb_linearize(skb))
1822                 goto out_kfree_skb;
1823
1824         /* Fragmented skb is linearized if device does not support SG,
1825          * or if at least one of fragments is in highmem and device
1826          * does not support DMA from it.
1827          */
1828         if (skb_shinfo(skb)->nr_frags &&
1829             (!(dev->features & NETIF_F_SG) || illegal_highdma(dev, skb)) &&
1830             __skb_linearize(skb))
1831                 goto out_kfree_skb;
1832
1833         /* If packet is not checksummed and device does not support
1834          * checksumming for this protocol, complete checksumming here.
1835          */
1836         if (skb->ip_summed == CHECKSUM_PARTIAL) {
1837                 skb_set_transport_header(skb, skb->csum_start -
1838                                               skb_headroom(skb));
1839                 if (!dev_can_checksum(dev, skb) && skb_checksum_help(skb))
1840                         goto out_kfree_skb;
1841         }
1842
1843 gso:
1844         /* Disable soft irqs for various locks below. Also
1845          * stops preemption for RCU.
1846          */
1847         rcu_read_lock_bh();
1848
1849         txq = dev_pick_tx(dev, skb);
1850         q = rcu_dereference(txq->qdisc);
1851
1852 #ifdef CONFIG_NET_CLS_ACT
1853         skb->tc_verd = SET_TC_AT(skb->tc_verd,AT_EGRESS);
1854 #endif
1855         if (q->enqueue) {
1856                 spinlock_t *root_lock = qdisc_lock(q);
1857
1858                 spin_lock(root_lock);
1859
1860                 if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) {
1861                         kfree_skb(skb);
1862                         rc = NET_XMIT_DROP;
1863                 } else {
1864                         rc = qdisc_enqueue_root(skb, q);
1865                         qdisc_run(q);
1866                 }
1867                 spin_unlock(root_lock);
1868
1869                 goto out;
1870         }
1871
1872         /* The device has no queue. Common case for software devices:
1873            loopback, all the sorts of tunnels...
1874
1875            Really, it is unlikely that netif_tx_lock protection is necessary
1876            here.  (f.e. loopback and IP tunnels are clean ignoring statistics
1877            counters.)
1878            However, it is possible, that they rely on protection
1879            made by us here.
1880
1881            Check this and shot the lock. It is not prone from deadlocks.
1882            Either shot noqueue qdisc, it is even simpler 8)
1883          */
1884         if (dev->flags & IFF_UP) {
1885                 int cpu = smp_processor_id(); /* ok because BHs are off */
1886
1887                 if (txq->xmit_lock_owner != cpu) {
1888
1889                         HARD_TX_LOCK(dev, txq, cpu);
1890
1891                         if (!netif_tx_queue_stopped(txq)) {
1892                                 rc = 0;
1893                                 if (!dev_hard_start_xmit(skb, dev, txq)) {
1894                                         HARD_TX_UNLOCK(dev, txq);
1895                                         goto out;
1896                                 }
1897                         }
1898                         HARD_TX_UNLOCK(dev, txq);
1899                         if (net_ratelimit())
1900                                 printk(KERN_CRIT "Virtual device %s asks to "
1901                                        "queue packet!\n", dev->name);
1902                 } else {
1903                         /* Recursion is detected! It is possible,
1904                          * unfortunately */
1905                         if (net_ratelimit())
1906                                 printk(KERN_CRIT "Dead loop on virtual device "
1907                                        "%s, fix it urgently!\n", dev->name);
1908                 }
1909         }
1910
1911         rc = -ENETDOWN;
1912         rcu_read_unlock_bh();
1913
1914 out_kfree_skb:
1915         kfree_skb(skb);
1916         return rc;
1917 out:
1918         rcu_read_unlock_bh();
1919         return rc;
1920 }
1921
1922
1923 /*=======================================================================
1924                         Receiver routines
1925   =======================================================================*/
1926
1927 int netdev_max_backlog __read_mostly = 1000;
1928 int netdev_budget __read_mostly = 300;
1929 int weight_p __read_mostly = 64;            /* old backlog weight */
1930
1931 DEFINE_PER_CPU(struct netif_rx_stats, netdev_rx_stat) = { 0, };
1932
1933
1934 /**
1935  *      netif_rx        -       post buffer to the network code
1936  *      @skb: buffer to post
1937  *
1938  *      This function receives a packet from a device driver and queues it for
1939  *      the upper (protocol) levels to process.  It always succeeds. The buffer
1940  *      may be dropped during processing for congestion control or by the
1941  *      protocol layers.
1942  *
1943  *      return values:
1944  *      NET_RX_SUCCESS  (no congestion)
1945  *      NET_RX_DROP     (packet was dropped)
1946  *
1947  */
1948
1949 int netif_rx(struct sk_buff *skb)
1950 {
1951         struct softnet_data *queue;
1952         unsigned long flags;
1953
1954         /* if netpoll wants it, pretend we never saw it */
1955         if (netpoll_rx(skb))
1956                 return NET_RX_DROP;
1957
1958         if (!skb->tstamp.tv64)
1959                 net_timestamp(skb);
1960
1961         /*
1962          * The code is rearranged so that the path is the most
1963          * short when CPU is congested, but is still operating.
1964          */
1965         local_irq_save(flags);
1966         queue = &__get_cpu_var(softnet_data);
1967
1968         __get_cpu_var(netdev_rx_stat).total++;
1969         if (queue->input_pkt_queue.qlen <= netdev_max_backlog) {
1970                 if (queue->input_pkt_queue.qlen) {
1971 enqueue:
1972                         __skb_queue_tail(&queue->input_pkt_queue, skb);
1973                         local_irq_restore(flags);
1974                         return NET_RX_SUCCESS;
1975                 }
1976
1977                 napi_schedule(&queue->backlog);
1978                 goto enqueue;
1979         }
1980
1981         __get_cpu_var(netdev_rx_stat).dropped++;
1982         local_irq_restore(flags);
1983
1984         kfree_skb(skb);
1985         return NET_RX_DROP;
1986 }
1987
1988 int netif_rx_ni(struct sk_buff *skb)
1989 {
1990         int err;
1991
1992         preempt_disable();
1993         err = netif_rx(skb);
1994         if (local_softirq_pending())
1995                 do_softirq();
1996         preempt_enable();
1997
1998         return err;
1999 }
2000
2001 EXPORT_SYMBOL(netif_rx_ni);
2002
2003 static void net_tx_action(struct softirq_action *h)
2004 {
2005         struct softnet_data *sd = &__get_cpu_var(softnet_data);
2006
2007         if (sd->completion_queue) {
2008                 struct sk_buff *clist;
2009
2010                 local_irq_disable();
2011                 clist = sd->completion_queue;
2012                 sd->completion_queue = NULL;
2013                 local_irq_enable();
2014
2015                 while (clist) {
2016                         struct sk_buff *skb = clist;
2017                         clist = clist->next;
2018
2019                         WARN_ON(atomic_read(&skb->users));
2020                         __kfree_skb(skb);
2021                 }
2022         }
2023
2024         if (sd->output_queue) {
2025                 struct Qdisc *head;
2026
2027                 local_irq_disable();
2028                 head = sd->output_queue;
2029                 sd->output_queue = NULL;
2030                 local_irq_enable();
2031
2032                 while (head) {
2033                         struct Qdisc *q = head;
2034                         spinlock_t *root_lock;
2035
2036                         head = head->next_sched;
2037
2038                         root_lock = qdisc_lock(q);
2039                         if (spin_trylock(root_lock)) {
2040                                 smp_mb__before_clear_bit();
2041                                 clear_bit(__QDISC_STATE_SCHED,
2042                                           &q->state);
2043                                 qdisc_run(q);
2044                                 spin_unlock(root_lock);
2045                         } else {
2046                                 if (!test_bit(__QDISC_STATE_DEACTIVATED,
2047                                               &q->state)) {
2048                                         __netif_reschedule(q);
2049                                 } else {
2050                                         smp_mb__before_clear_bit();
2051                                         clear_bit(__QDISC_STATE_SCHED,
2052                                                   &q->state);
2053                                 }
2054                         }
2055                 }
2056         }
2057 }
2058
2059 static inline int deliver_skb(struct sk_buff *skb,
2060                               struct packet_type *pt_prev,
2061                               struct net_device *orig_dev)
2062 {
2063         atomic_inc(&skb->users);
2064         return pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
2065 }
2066
2067 #if defined(CONFIG_BRIDGE) || defined (CONFIG_BRIDGE_MODULE)
2068 /* These hooks defined here for ATM */
2069 struct net_bridge;
2070 struct net_bridge_fdb_entry *(*br_fdb_get_hook)(struct net_bridge *br,
2071                                                 unsigned char *addr);
2072 void (*br_fdb_put_hook)(struct net_bridge_fdb_entry *ent) __read_mostly;
2073
2074 /*
2075  * If bridge module is loaded call bridging hook.
2076  *  returns NULL if packet was consumed.
2077  */
2078 struct sk_buff *(*br_handle_frame_hook)(struct net_bridge_port *p,
2079                                         struct sk_buff *skb) __read_mostly;
2080 static inline struct sk_buff *handle_bridge(struct sk_buff *skb,
2081                                             struct packet_type **pt_prev, int *ret,
2082                                             struct net_device *orig_dev)
2083 {
2084         struct net_bridge_port *port;
2085
2086         if (skb->pkt_type == PACKET_LOOPBACK ||
2087             (port = rcu_dereference(skb->dev->br_port)) == NULL)
2088                 return skb;
2089
2090         if (*pt_prev) {
2091                 *ret = deliver_skb(skb, *pt_prev, orig_dev);
2092                 *pt_prev = NULL;
2093         }
2094
2095         return br_handle_frame_hook(port, skb);
2096 }
2097 #else
2098 #define handle_bridge(skb, pt_prev, ret, orig_dev)      (skb)
2099 #endif
2100
2101 #if defined(CONFIG_MACVLAN) || defined(CONFIG_MACVLAN_MODULE)
2102 struct sk_buff *(*macvlan_handle_frame_hook)(struct sk_buff *skb) __read_mostly;
2103 EXPORT_SYMBOL_GPL(macvlan_handle_frame_hook);
2104
2105 static inline struct sk_buff *handle_macvlan(struct sk_buff *skb,
2106                                              struct packet_type **pt_prev,
2107                                              int *ret,
2108                                              struct net_device *orig_dev)
2109 {
2110         if (skb->dev->macvlan_port == NULL)
2111                 return skb;
2112
2113         if (*pt_prev) {
2114                 *ret = deliver_skb(skb, *pt_prev, orig_dev);
2115                 *pt_prev = NULL;
2116         }
2117         return macvlan_handle_frame_hook(skb);
2118 }
2119 #else
2120 #define handle_macvlan(skb, pt_prev, ret, orig_dev)     (skb)
2121 #endif
2122
2123 #ifdef CONFIG_NET_CLS_ACT
2124 /* TODO: Maybe we should just force sch_ingress to be compiled in
2125  * when CONFIG_NET_CLS_ACT is? otherwise some useless instructions
2126  * a compare and 2 stores extra right now if we dont have it on
2127  * but have CONFIG_NET_CLS_ACT
2128  * NOTE: This doesnt stop any functionality; if you dont have
2129  * the ingress scheduler, you just cant add policies on ingress.
2130  *
2131  */
2132 static int ing_filter(struct sk_buff *skb)
2133 {
2134         struct net_device *dev = skb->dev;
2135         u32 ttl = G_TC_RTTL(skb->tc_verd);
2136         struct netdev_queue *rxq;
2137         int result = TC_ACT_OK;
2138         struct Qdisc *q;
2139
2140         if (MAX_RED_LOOP < ttl++) {
2141                 printk(KERN_WARNING
2142                        "Redir loop detected Dropping packet (%d->%d)\n",
2143                        skb->iif, dev->ifindex);
2144                 return TC_ACT_SHOT;
2145         }
2146
2147         skb->tc_verd = SET_TC_RTTL(skb->tc_verd, ttl);
2148         skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_INGRESS);
2149
2150         rxq = &dev->rx_queue;
2151
2152         q = rxq->qdisc;
2153         if (q != &noop_qdisc) {
2154                 spin_lock(qdisc_lock(q));
2155                 if (likely(!test_bit(__QDISC_STATE_DEACTIVATED, &q->state)))
2156                         result = qdisc_enqueue_root(skb, q);
2157                 spin_unlock(qdisc_lock(q));
2158         }
2159
2160         return result;
2161 }
2162
2163 static inline struct sk_buff *handle_ing(struct sk_buff *skb,
2164                                          struct packet_type **pt_prev,
2165                                          int *ret, struct net_device *orig_dev)
2166 {
2167         if (skb->dev->rx_queue.qdisc == &noop_qdisc)
2168                 goto out;
2169
2170         if (*pt_prev) {
2171                 *ret = deliver_skb(skb, *pt_prev, orig_dev);
2172                 *pt_prev = NULL;
2173         } else {
2174                 /* Huh? Why does turning on AF_PACKET affect this? */
2175                 skb->tc_verd = SET_TC_OK2MUNGE(skb->tc_verd);
2176         }
2177
2178         switch (ing_filter(skb)) {
2179         case TC_ACT_SHOT:
2180         case TC_ACT_STOLEN:
2181                 kfree_skb(skb);
2182                 return NULL;
2183         }
2184
2185 out:
2186         skb->tc_verd = 0;
2187         return skb;
2188 }
2189 #endif
2190
2191 /*
2192  *      netif_nit_deliver - deliver received packets to network taps
2193  *      @skb: buffer
2194  *
2195  *      This function is used to deliver incoming packets to network
2196  *      taps. It should be used when the normal netif_receive_skb path
2197  *      is bypassed, for example because of VLAN acceleration.
2198  */
2199 void netif_nit_deliver(struct sk_buff *skb)
2200 {
2201         struct packet_type *ptype;
2202
2203         if (list_empty(&ptype_all))
2204                 return;
2205
2206         skb_reset_network_header(skb);
2207         skb_reset_transport_header(skb);
2208         skb->mac_len = skb->network_header - skb->mac_header;
2209
2210         rcu_read_lock();
2211         list_for_each_entry_rcu(ptype, &ptype_all, list) {
2212                 if (!ptype->dev || ptype->dev == skb->dev)
2213                         deliver_skb(skb, ptype, skb->dev);
2214         }
2215         rcu_read_unlock();
2216 }
2217
2218 /**
2219  *      netif_receive_skb - process receive buffer from network
2220  *      @skb: buffer to process
2221  *
2222  *      netif_receive_skb() is the main receive data processing function.
2223  *      It always succeeds. The buffer may be dropped during processing
2224  *      for congestion control or by the protocol layers.
2225  *
2226  *      This function may only be called from softirq context and interrupts
2227  *      should be enabled.
2228  *
2229  *      Return values (usually ignored):
2230  *      NET_RX_SUCCESS: no congestion
2231  *      NET_RX_DROP: packet was dropped
2232  */
2233 int netif_receive_skb(struct sk_buff *skb)
2234 {
2235         struct packet_type *ptype, *pt_prev;
2236         struct net_device *orig_dev;
2237         struct net_device *null_or_orig;
2238         int ret = NET_RX_DROP;
2239         __be16 type;
2240
2241         if (skb->vlan_tci && vlan_hwaccel_do_receive(skb))
2242                 return NET_RX_SUCCESS;
2243
2244         /* if we've gotten here through NAPI, check netpoll */
2245         if (netpoll_receive_skb(skb))
2246                 return NET_RX_DROP;
2247
2248         if (!skb->tstamp.tv64)
2249                 net_timestamp(skb);
2250
2251         if (!skb->iif)
2252                 skb->iif = skb->dev->ifindex;
2253
2254         null_or_orig = NULL;
2255         orig_dev = skb->dev;
2256         if (orig_dev->master) {
2257                 if (skb_bond_should_drop(skb))
2258                         null_or_orig = orig_dev; /* deliver only exact match */
2259                 else
2260                         skb->dev = orig_dev->master;
2261         }
2262
2263         __get_cpu_var(netdev_rx_stat).total++;
2264
2265         skb_reset_network_header(skb);
2266         skb_reset_transport_header(skb);
2267         skb->mac_len = skb->network_header - skb->mac_header;
2268
2269         pt_prev = NULL;
2270
2271         rcu_read_lock();
2272
2273 #ifdef CONFIG_NET_CLS_ACT
2274         if (skb->tc_verd & TC_NCLS) {
2275                 skb->tc_verd = CLR_TC_NCLS(skb->tc_verd);
2276                 goto ncls;
2277         }
2278 #endif
2279
2280         list_for_each_entry_rcu(ptype, &ptype_all, list) {
2281                 if (ptype->dev == null_or_orig || ptype->dev == skb->dev ||
2282                     ptype->dev == orig_dev) {
2283                         if (pt_prev)
2284                                 ret = deliver_skb(skb, pt_prev, orig_dev);
2285                         pt_prev = ptype;
2286                 }
2287         }
2288
2289 #ifdef CONFIG_NET_CLS_ACT
2290         skb = handle_ing(skb, &pt_prev, &ret, orig_dev);
2291         if (!skb)
2292                 goto out;
2293 ncls:
2294 #endif
2295
2296         skb = handle_bridge(skb, &pt_prev, &ret, orig_dev);
2297         if (!skb)
2298                 goto out;
2299         skb = handle_macvlan(skb, &pt_prev, &ret, orig_dev);
2300         if (!skb)
2301                 goto out;
2302
2303         skb_orphan(skb);
2304
2305         type = skb->protocol;
2306         list_for_each_entry_rcu(ptype,
2307                         &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
2308                 if (ptype->type == type &&
2309                     (ptype->dev == null_or_orig || ptype->dev == skb->dev ||
2310                      ptype->dev == orig_dev)) {
2311                         if (pt_prev)
2312                                 ret = deliver_skb(skb, pt_prev, orig_dev);
2313                         pt_prev = ptype;
2314                 }
2315         }
2316
2317         if (pt_prev) {
2318                 ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
2319         } else {
2320                 kfree_skb(skb);
2321                 /* Jamal, now you will not able to escape explaining
2322                  * me how you were going to use this. :-)
2323                  */
2324                 ret = NET_RX_DROP;
2325         }
2326
2327 out:
2328         rcu_read_unlock();
2329         return ret;
2330 }
2331
2332 /* Network device is going away, flush any packets still pending  */
2333 static void flush_backlog(void *arg)
2334 {
2335         struct net_device *dev = arg;
2336         struct softnet_data *queue = &__get_cpu_var(softnet_data);
2337         struct sk_buff *skb, *tmp;
2338
2339         skb_queue_walk_safe(&queue->input_pkt_queue, skb, tmp)
2340                 if (skb->dev == dev) {
2341                         __skb_unlink(skb, &queue->input_pkt_queue);
2342                         kfree_skb(skb);
2343                 }
2344 }
2345
2346 static int napi_gro_complete(struct sk_buff *skb)
2347 {
2348         struct packet_type *ptype;
2349         __be16 type = skb->protocol;
2350         struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK];
2351         int err = -ENOENT;
2352
2353         if (NAPI_GRO_CB(skb)->count == 1) {
2354                 skb_shinfo(skb)->gso_size = 0;
2355                 goto out;
2356         }
2357
2358         rcu_read_lock();
2359         list_for_each_entry_rcu(ptype, head, list) {
2360                 if (ptype->type != type || ptype->dev || !ptype->gro_complete)
2361                         continue;
2362
2363                 err = ptype->gro_complete(skb);
2364                 break;
2365         }
2366         rcu_read_unlock();
2367
2368         if (err) {
2369                 WARN_ON(&ptype->list == head);
2370                 kfree_skb(skb);
2371                 return NET_RX_SUCCESS;
2372         }
2373
2374 out:
2375         return netif_receive_skb(skb);
2376 }
2377
2378 void napi_gro_flush(struct napi_struct *napi)
2379 {
2380         struct sk_buff *skb, *next;
2381
2382         for (skb = napi->gro_list; skb; skb = next) {
2383                 next = skb->next;
2384                 skb->next = NULL;
2385                 napi_gro_complete(skb);
2386         }
2387
2388         napi->gro_count = 0;
2389         napi->gro_list = NULL;
2390 }
2391 EXPORT_SYMBOL(napi_gro_flush);
2392
2393 void *skb_gro_header(struct sk_buff *skb, unsigned int hlen)
2394 {
2395         unsigned int offset = skb_gro_offset(skb);
2396
2397         hlen += offset;
2398         if (unlikely(skb_headlen(skb) ||
2399                      skb_shinfo(skb)->frags[0].size < hlen ||
2400                      PageHighMem(skb_shinfo(skb)->frags[0].page)))
2401                 return pskb_may_pull(skb, hlen) ? skb->data + offset : NULL;
2402
2403         return page_address(skb_shinfo(skb)->frags[0].page) +
2404                skb_shinfo(skb)->frags[0].page_offset + offset;
2405 }
2406 EXPORT_SYMBOL(skb_gro_header);
2407
2408 int dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
2409 {
2410         struct sk_buff **pp = NULL;
2411         struct packet_type *ptype;
2412         __be16 type = skb->protocol;
2413         struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK];
2414         int same_flow;
2415         int mac_len;
2416         int ret;
2417
2418         if (!(skb->dev->features & NETIF_F_GRO))
2419                 goto normal;
2420
2421         if (skb_is_gso(skb) || skb_shinfo(skb)->frag_list)
2422                 goto normal;
2423
2424         rcu_read_lock();
2425         list_for_each_entry_rcu(ptype, head, list) {
2426                 if (ptype->type != type || ptype->dev || !ptype->gro_receive)
2427                         continue;
2428
2429                 skb_set_network_header(skb, skb_gro_offset(skb));
2430                 mac_len = skb->network_header - skb->mac_header;
2431                 skb->mac_len = mac_len;
2432                 NAPI_GRO_CB(skb)->same_flow = 0;
2433                 NAPI_GRO_CB(skb)->flush = 0;
2434                 NAPI_GRO_CB(skb)->free = 0;
2435
2436                 pp = ptype->gro_receive(&napi->gro_list, skb);
2437                 break;
2438         }
2439         rcu_read_unlock();
2440
2441         if (&ptype->list == head)
2442                 goto normal;
2443
2444         same_flow = NAPI_GRO_CB(skb)->same_flow;
2445         ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED;
2446
2447         if (pp) {
2448                 struct sk_buff *nskb = *pp;
2449
2450                 *pp = nskb->next;
2451                 nskb->next = NULL;
2452                 napi_gro_complete(nskb);
2453                 napi->gro_count--;
2454         }
2455
2456         if (same_flow)
2457                 goto ok;
2458
2459         if (NAPI_GRO_CB(skb)->flush || napi->gro_count >= MAX_GRO_SKBS)
2460                 goto normal;
2461
2462         napi->gro_count++;
2463         NAPI_GRO_CB(skb)->count = 1;
2464         skb_shinfo(skb)->gso_size = skb_gro_len(skb);
2465         skb->next = napi->gro_list;
2466         napi->gro_list = skb;
2467         ret = GRO_HELD;
2468
2469 pull:
2470         if (unlikely(!pskb_may_pull(skb, skb_gro_offset(skb)))) {
2471                 if (napi->gro_list == skb)
2472                         napi->gro_list = skb->next;
2473                 ret = GRO_DROP;
2474         }
2475
2476 ok:
2477         return ret;
2478
2479 normal:
2480         ret = GRO_NORMAL;
2481         goto pull;
2482 }
2483 EXPORT_SYMBOL(dev_gro_receive);
2484
2485 static int __napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
2486 {
2487         struct sk_buff *p;
2488
2489         if (netpoll_rx_on(skb))
2490                 return GRO_NORMAL;
2491
2492         for (p = napi->gro_list; p; p = p->next) {
2493                 NAPI_GRO_CB(p)->same_flow = (p->dev == skb->dev)
2494                         && !compare_ether_header(skb_mac_header(p),
2495                                                  skb_gro_mac_header(skb));
2496                 NAPI_GRO_CB(p)->flush = 0;
2497         }
2498
2499         return dev_gro_receive(napi, skb);
2500 }
2501
2502 int napi_skb_finish(int ret, struct sk_buff *skb)
2503 {
2504         int err = NET_RX_SUCCESS;
2505
2506         switch (ret) {
2507         case GRO_NORMAL:
2508                 return netif_receive_skb(skb);
2509
2510         case GRO_DROP:
2511                 err = NET_RX_DROP;
2512                 /* fall through */
2513
2514         case GRO_MERGED_FREE:
2515                 kfree_skb(skb);
2516                 break;
2517         }
2518
2519         return err;
2520 }
2521 EXPORT_SYMBOL(napi_skb_finish);
2522
2523 int napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
2524 {
2525         skb_gro_reset_offset(skb);
2526
2527         return napi_skb_finish(__napi_gro_receive(napi, skb), skb);
2528 }
2529 EXPORT_SYMBOL(napi_gro_receive);
2530
2531 void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb)
2532 {
2533         __skb_pull(skb, skb_headlen(skb));
2534         skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb));
2535
2536         napi->skb = skb;
2537 }
2538 EXPORT_SYMBOL(napi_reuse_skb);
2539
2540 struct sk_buff *napi_get_frags(struct napi_struct *napi)
2541 {
2542         struct net_device *dev = napi->dev;
2543         struct sk_buff *skb = napi->skb;
2544
2545         if (!skb) {
2546                 skb = netdev_alloc_skb(dev, GRO_MAX_HEAD + NET_IP_ALIGN);
2547                 if (!skb)
2548                         goto out;
2549
2550                 skb_reserve(skb, NET_IP_ALIGN);
2551
2552                 napi->skb = skb;
2553         }
2554
2555 out:
2556         return skb;
2557 }
2558 EXPORT_SYMBOL(napi_get_frags);
2559
2560 int napi_frags_finish(struct napi_struct *napi, struct sk_buff *skb, int ret)
2561 {
2562         int err = NET_RX_SUCCESS;
2563
2564         switch (ret) {
2565         case GRO_NORMAL:
2566         case GRO_HELD:
2567                 skb->protocol = eth_type_trans(skb, napi->dev);
2568
2569                 if (ret == GRO_NORMAL)
2570                         return netif_receive_skb(skb);
2571
2572                 skb_gro_pull(skb, -ETH_HLEN);
2573                 break;
2574
2575         case GRO_DROP:
2576                 err = NET_RX_DROP;
2577                 /* fall through */
2578
2579         case GRO_MERGED_FREE:
2580                 napi_reuse_skb(napi, skb);
2581                 break;
2582         }
2583
2584         return err;
2585 }
2586 EXPORT_SYMBOL(napi_frags_finish);
2587
2588 struct sk_buff *napi_frags_skb(struct napi_struct *napi)
2589 {
2590         struct sk_buff *skb = napi->skb;
2591         struct ethhdr *eth;
2592
2593         napi->skb = NULL;
2594
2595         skb_reset_mac_header(skb);
2596         skb_gro_reset_offset(skb);
2597
2598         eth = skb_gro_header(skb, sizeof(*eth));
2599         if (!eth) {
2600                 napi_reuse_skb(napi, skb);
2601                 skb = NULL;
2602                 goto out;
2603         }
2604
2605         skb_gro_pull(skb, sizeof(*eth));
2606
2607         /*
2608          * This works because the only protocols we care about don't require
2609          * special handling.  We'll fix it up properly at the end.
2610          */
2611         skb->protocol = eth->h_proto;
2612
2613 out:
2614         return skb;
2615 }
2616 EXPORT_SYMBOL(napi_frags_skb);
2617
2618 int napi_gro_frags(struct napi_struct *napi)
2619 {
2620         struct sk_buff *skb = napi_frags_skb(napi);
2621
2622         if (!skb)
2623                 return NET_RX_DROP;
2624
2625         return napi_frags_finish(napi, skb, __napi_gro_receive(napi, skb));
2626 }
2627 EXPORT_SYMBOL(napi_gro_frags);
2628
2629 static int process_backlog(struct napi_struct *napi, int quota)
2630 {
2631         int work = 0;
2632         struct softnet_data *queue = &__get_cpu_var(softnet_data);
2633         unsigned long start_time = jiffies;
2634
2635         napi->weight = weight_p;
2636         do {
2637                 struct sk_buff *skb;
2638
2639                 local_irq_disable();
2640                 skb = __skb_dequeue(&queue->input_pkt_queue);
2641                 if (!skb) {
2642                         __napi_complete(napi);
2643                         local_irq_enable();
2644                         break;
2645                 }
2646                 local_irq_enable();
2647
2648                 netif_receive_skb(skb);
2649         } while (++work < quota && jiffies == start_time);
2650
2651         return work;
2652 }
2653
2654 /**
2655  * __napi_schedule - schedule for receive
2656  * @n: entry to schedule
2657  *
2658  * The entry's receive function will be scheduled to run
2659  */
2660 void __napi_schedule(struct napi_struct *n)
2661 {
2662         unsigned long flags;
2663
2664         local_irq_save(flags);
2665         list_add_tail(&n->poll_list, &__get_cpu_var(softnet_data).poll_list);
2666         __raise_softirq_irqoff(NET_RX_SOFTIRQ);
2667         local_irq_restore(flags);
2668 }
2669 EXPORT_SYMBOL(__napi_schedule);
2670
2671 void __napi_complete(struct napi_struct *n)
2672 {
2673         BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
2674         BUG_ON(n->gro_list);
2675
2676         list_del(&n->poll_list);
2677         smp_mb__before_clear_bit();
2678         clear_bit(NAPI_STATE_SCHED, &n->state);
2679 }
2680 EXPORT_SYMBOL(__napi_complete);
2681
2682 void napi_complete(struct napi_struct *n)
2683 {
2684         unsigned long flags;
2685
2686         /*
2687          * don't let napi dequeue from the cpu poll list
2688          * just in case its running on a different cpu
2689          */
2690         if (unlikely(test_bit(NAPI_STATE_NPSVC, &n->state)))
2691                 return;
2692
2693         napi_gro_flush(n);
2694         local_irq_save(flags);
2695         __napi_complete(n);
2696         local_irq_restore(flags);
2697 }
2698 EXPORT_SYMBOL(napi_complete);
2699
2700 void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
2701                     int (*poll)(struct napi_struct *, int), int weight)
2702 {
2703         INIT_LIST_HEAD(&napi->poll_list);
2704         napi->gro_count = 0;
2705         napi->gro_list = NULL;
2706         napi->skb = NULL;
2707         napi->poll = poll;
2708         napi->weight = weight;
2709         list_add(&napi->dev_list, &dev->napi_list);
2710         napi->dev = dev;
2711 #ifdef CONFIG_NETPOLL
2712         spin_lock_init(&napi->poll_lock);
2713         napi->poll_owner = -1;
2714 #endif
2715         set_bit(NAPI_STATE_SCHED, &napi->state);
2716 }
2717 EXPORT_SYMBOL(netif_napi_add);
2718
2719 void netif_napi_del(struct napi_struct *napi)
2720 {
2721         struct sk_buff *skb, *next;
2722
2723         list_del_init(&napi->dev_list);
2724         napi_free_frags(napi);
2725
2726         for (skb = napi->gro_list; skb; skb = next) {
2727                 next = skb->next;
2728                 skb->next = NULL;
2729                 kfree_skb(skb);
2730         }
2731
2732         napi->gro_list = NULL;
2733         napi->gro_count = 0;
2734 }
2735 EXPORT_SYMBOL(netif_napi_del);
2736
2737
2738 static void net_rx_action(struct softirq_action *h)
2739 {
2740         struct list_head *list = &__get_cpu_var(softnet_data).poll_list;
2741         unsigned long time_limit = jiffies + 2;
2742         int budget = netdev_budget;
2743         void *have;
2744
2745         local_irq_disable();
2746
2747         while (!list_empty(list)) {
2748                 struct napi_struct *n;
2749                 int work, weight;
2750
2751                 /* If softirq window is exhuasted then punt.
2752                  * Allow this to run for 2 jiffies since which will allow
2753                  * an average latency of 1.5/HZ.
2754                  */
2755                 if (unlikely(budget <= 0 || time_after(jiffies, time_limit)))
2756                         goto softnet_break;
2757
2758                 local_irq_enable();
2759
2760                 /* Even though interrupts have been re-enabled, this
2761                  * access is safe because interrupts can only add new
2762                  * entries to the tail of this list, and only ->poll()
2763                  * calls can remove this head entry from the list.
2764                  */
2765                 n = list_entry(list->next, struct napi_struct, poll_list);
2766
2767                 have = netpoll_poll_lock(n);
2768
2769                 weight = n->weight;
2770
2771                 /* This NAPI_STATE_SCHED test is for avoiding a race
2772                  * with netpoll's poll_napi().  Only the entity which
2773                  * obtains the lock and sees NAPI_STATE_SCHED set will
2774                  * actually make the ->poll() call.  Therefore we avoid
2775                  * accidently calling ->poll() when NAPI is not scheduled.
2776                  */
2777                 work = 0;
2778                 if (test_bit(NAPI_STATE_SCHED, &n->state)) {
2779                         work = n->poll(n, weight);
2780                         trace_napi_poll(n);
2781                 }
2782
2783                 WARN_ON_ONCE(work > weight);
2784
2785                 budget -= work;
2786
2787                 local_irq_disable();
2788
2789                 /* Drivers must not modify the NAPI state if they
2790                  * consume the entire weight.  In such cases this code
2791                  * still "owns" the NAPI instance and therefore can
2792                  * move the instance around on the list at-will.
2793                  */
2794                 if (unlikely(work == weight)) {
2795                         if (unlikely(napi_disable_pending(n)))
2796                                 __napi_complete(n);
2797                         else
2798                                 list_move_tail(&n->poll_list, list);
2799                 }
2800
2801                 netpoll_poll_unlock(have);
2802         }
2803 out:
2804         local_irq_enable();
2805
2806 #ifdef CONFIG_NET_DMA
2807         /*
2808          * There may not be any more sk_buffs coming right now, so push
2809          * any pending DMA copies to hardware
2810          */
2811         dma_issue_pending_all();
2812 #endif
2813
2814         return;
2815
2816 softnet_break:
2817         __get_cpu_var(netdev_rx_stat).time_squeeze++;
2818         __raise_softirq_irqoff(NET_RX_SOFTIRQ);
2819         goto out;
2820 }
2821
2822 static gifconf_func_t * gifconf_list [NPROTO];
2823
2824 /**
2825  *      register_gifconf        -       register a SIOCGIF handler
2826  *      @family: Address family
2827  *      @gifconf: Function handler
2828  *
2829  *      Register protocol dependent address dumping routines. The handler
2830  *      that is passed must not be freed or reused until it has been replaced
2831  *      by another handler.
2832  */
2833 int register_gifconf(unsigned int family, gifconf_func_t * gifconf)
2834 {
2835         if (family >= NPROTO)
2836                 return -EINVAL;
2837         gifconf_list[family] = gifconf;
2838         return 0;
2839 }
2840
2841
2842 /*
2843  *      Map an interface index to its name (SIOCGIFNAME)
2844  */
2845
2846 /*
2847  *      We need this ioctl for efficient implementation of the
2848  *      if_indextoname() function required by the IPv6 API.  Without
2849  *      it, we would have to search all the interfaces to find a
2850  *      match.  --pb
2851  */
2852
2853 static int dev_ifname(struct net *net, struct ifreq __user *arg)
2854 {
2855         struct net_device *dev;
2856         struct ifreq ifr;
2857
2858         /*
2859          *      Fetch the caller's info block.
2860          */
2861
2862         if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
2863                 return -EFAULT;
2864
2865         read_lock(&dev_base_lock);
2866         dev = __dev_get_by_index(net, ifr.ifr_ifindex);
2867         if (!dev) {
2868                 read_unlock(&dev_base_lock);
2869                 return -ENODEV;
2870         }
2871
2872         strcpy(ifr.ifr_name, dev->name);
2873         read_unlock(&dev_base_lock);
2874
2875         if (copy_to_user(arg, &ifr, sizeof(struct ifreq)))
2876                 return -EFAULT;
2877         return 0;
2878 }
2879
2880 /*
2881  *      Perform a SIOCGIFCONF call. This structure will change
2882  *      size eventually, and there is nothing I can do about it.
2883  *      Thus we will need a 'compatibility mode'.
2884  */
2885
2886 static int dev_ifconf(struct net *net, char __user *arg)
2887 {
2888         struct ifconf ifc;
2889         struct net_device *dev;
2890         char __user *pos;
2891         int len;
2892         int total;
2893         int i;
2894
2895         /*
2896          *      Fetch the caller's info block.
2897          */
2898
2899         if (copy_from_user(&ifc, arg, sizeof(struct ifconf)))
2900                 return -EFAULT;
2901
2902         pos = ifc.ifc_buf;
2903         len = ifc.ifc_len;
2904
2905         /*
2906          *      Loop over the interfaces, and write an info block for each.
2907          */
2908
2909         total = 0;
2910         for_each_netdev(net, dev) {
2911                 for (i = 0; i < NPROTO; i++) {
2912                         if (gifconf_list[i]) {
2913                                 int done;
2914                                 if (!pos)
2915                                         done = gifconf_list[i](dev, NULL, 0);
2916                                 else
2917                                         done = gifconf_list[i](dev, pos + total,
2918                                                                len - total);
2919                                 if (done < 0)
2920                                         return -EFAULT;
2921                                 total += done;
2922                         }
2923                 }
2924         }
2925
2926         /*
2927          *      All done.  Write the updated control block back to the caller.
2928          */
2929         ifc.ifc_len = total;
2930
2931         /*
2932          *      Both BSD and Solaris return 0 here, so we do too.
2933          */
2934         return copy_to_user(arg, &ifc, sizeof(struct ifconf)) ? -EFAULT : 0;
2935 }
2936
2937 #ifdef CONFIG_PROC_FS
2938 /*
2939  *      This is invoked by the /proc filesystem handler to display a device
2940  *      in detail.
2941  */
2942 void *dev_seq_start(struct seq_file *seq, loff_t *pos)
2943         __acquires(dev_base_lock)
2944 {
2945         struct net *net = seq_file_net(seq);
2946         loff_t off;
2947         struct net_device *dev;
2948
2949         read_lock(&dev_base_lock);
2950         if (!*pos)
2951                 return SEQ_START_TOKEN;
2952
2953         off = 1;
2954         for_each_netdev(net, dev)
2955                 if (off++ == *pos)
2956                         return dev;
2957
2958         return NULL;
2959 }
2960
2961 void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
2962 {
2963         struct net *net = seq_file_net(seq);
2964         ++*pos;
2965         return v == SEQ_START_TOKEN ?
2966                 first_net_device(net) : next_net_device((struct net_device *)v);
2967 }
2968
2969 void dev_seq_stop(struct seq_file *seq, void *v)
2970         __releases(dev_base_lock)
2971 {
2972         read_unlock(&dev_base_lock);
2973 }
2974
2975 static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
2976 {
2977         const struct net_device_stats *stats = dev_get_stats(dev);
2978
2979         seq_printf(seq, "%6s:%8lu %7lu %4lu %4lu %4lu %5lu %10lu %9lu "
2980                    "%8lu %7lu %4lu %4lu %4lu %5lu %7lu %10lu\n",
2981                    dev->name, stats->rx_bytes, stats->rx_packets,
2982                    stats->rx_errors,
2983                    stats->rx_dropped + stats->rx_missed_errors,
2984                    stats->rx_fifo_errors,
2985                    stats->rx_length_errors + stats->rx_over_errors +
2986                     stats->rx_crc_errors + stats->rx_frame_errors,
2987                    stats->rx_compressed, stats->multicast,
2988                    stats->tx_bytes, stats->tx_packets,
2989                    stats->tx_errors, stats->tx_dropped,
2990                    stats->tx_fifo_errors, stats->collisions,
2991                    stats->tx_carrier_errors +
2992                     stats->tx_aborted_errors +
2993                     stats->tx_window_errors +
2994                     stats->tx_heartbeat_errors,
2995                    stats->tx_compressed);
2996 }
2997
2998 /*
2999  *      Called from the PROCfs module. This now uses the new arbitrary sized
3000  *      /proc/net interface to create /proc/net/dev
3001  */
3002 static int dev_seq_show(struct seq_file *seq, void *v)
3003 {
3004         if (v == SEQ_START_TOKEN)
3005                 seq_puts(seq, "Inter-|   Receive                            "
3006                               "                    |  Transmit\n"
3007                               " face |bytes    packets errs drop fifo frame "
3008                               "compressed multicast|bytes    packets errs "
3009                               "drop fifo colls carrier compressed\n");
3010         else
3011                 dev_seq_printf_stats(seq, v);
3012         return 0;
3013 }
3014
3015 static struct netif_rx_stats *softnet_get_online(loff_t *pos)
3016 {
3017         struct netif_rx_stats *rc = NULL;
3018
3019         while (*pos < nr_cpu_ids)
3020                 if (cpu_online(*pos)) {
3021                         rc = &per_cpu(netdev_rx_stat, *pos);
3022                         break;
3023                 } else
3024                         ++*pos;
3025         return rc;
3026 }
3027
3028 static void *softnet_seq_start(struct seq_file *seq, loff_t *pos)
3029 {
3030         return softnet_get_online(pos);
3031 }
3032
3033 static void *softnet_seq_next(struct seq_file *seq, void *v, loff_t *pos)
3034 {
3035         ++*pos;
3036         return softnet_get_online(pos);
3037 }
3038
3039 static void softnet_seq_stop(struct seq_file *seq, void *v)
3040 {
3041 }
3042
3043 static int softnet_seq_show(struct seq_file *seq, void *v)
3044 {
3045         struct netif_rx_stats *s = v;
3046
3047         seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x %08x\n",
3048                    s->total, s->dropped, s->time_squeeze, 0,
3049                    0, 0, 0, 0, /* was fastroute */
3050                    s->cpu_collision );
3051         return 0;
3052 }
3053
3054 static const struct seq_operations dev_seq_ops = {
3055         .start = dev_seq_start,
3056         .next  = dev_seq_next,
3057         .stop  = dev_seq_stop,
3058         .show  = dev_seq_show,
3059 };
3060
3061 static int dev_seq_open(struct inode *inode, struct file *file)
3062 {
3063         return seq_open_net(inode, file, &dev_seq_ops,
3064                             sizeof(struct seq_net_private));
3065 }
3066
3067 static const struct file_operations dev_seq_fops = {
3068         .owner   = THIS_MODULE,
3069         .open    = dev_seq_open,
3070         .read    = seq_read,
3071         .llseek  = seq_lseek,
3072         .release = seq_release_net,
3073 };
3074
3075 static const struct seq_operations softnet_seq_ops = {
3076         .start = softnet_seq_start,
3077         .next  = softnet_seq_next,
3078         .stop  = softnet_seq_stop,
3079         .show  = softnet_seq_show,
3080 };
3081
3082 static int softnet_seq_open(struct inode *inode, struct file *file)
3083 {
3084         return seq_open(file, &softnet_seq_ops);
3085 }
3086
3087 static const struct file_operations softnet_seq_fops = {
3088         .owner   = THIS_MODULE,
3089         .open    = softnet_seq_open,
3090         .read    = seq_read,
3091         .llseek  = seq_lseek,
3092         .release = seq_release,
3093 };
3094
3095 static void *ptype_get_idx(loff_t pos)
3096 {
3097         struct packet_type *pt = NULL;
3098         loff_t i = 0;
3099         int t;
3100
3101         list_for_each_entry_rcu(pt, &ptype_all, list) {
3102                 if (i == pos)
3103                         return pt;
3104                 ++i;
3105         }
3106
3107         for (t = 0; t < PTYPE_HASH_SIZE; t++) {
3108                 list_for_each_entry_rcu(pt, &ptype_base[t], list) {
3109                         if (i == pos)
3110                                 return pt;
3111                         ++i;
3112                 }
3113         }
3114         return NULL;
3115 }
3116
3117 static void *ptype_seq_start(struct seq_file *seq, loff_t *pos)
3118         __acquires(RCU)
3119 {
3120         rcu_read_lock();
3121         return *pos ? ptype_get_idx(*pos - 1) : SEQ_START_TOKEN;
3122 }
3123
3124 static void *ptype_seq_next(struct seq_file *seq, void *v, loff_t *pos)
3125 {
3126         struct packet_type *pt;
3127         struct list_head *nxt;
3128         int hash;
3129
3130         ++*pos;
3131         if (v == SEQ_START_TOKEN)
3132                 return ptype_get_idx(0);
3133
3134         pt = v;
3135         nxt = pt->list.next;
3136         if (pt->type == htons(ETH_P_ALL)) {
3137                 if (nxt != &ptype_all)
3138                         goto found;
3139                 hash = 0;
3140                 nxt = ptype_base[0].next;
3141         } else
3142                 hash = ntohs(pt->type) & PTYPE_HASH_MASK;
3143
3144         while (nxt == &ptype_base[hash]) {
3145                 if (++hash >= PTYPE_HASH_SIZE)
3146                         return NULL;
3147                 nxt = ptype_base[hash].next;
3148         }
3149 found:
3150         return list_entry(nxt, struct packet_type, list);
3151 }
3152
3153 static void ptype_seq_stop(struct seq_file *seq, void *v)
3154         __releases(RCU)
3155 {
3156         rcu_read_unlock();
3157 }
3158
3159 static int ptype_seq_show(struct seq_file *seq, void *v)
3160 {
3161         struct packet_type *pt = v;
3162
3163         if (v == SEQ_START_TOKEN)
3164                 seq_puts(seq, "Type Device      Function\n");
3165         else if (pt->dev == NULL || dev_net(pt->dev) == seq_file_net(seq)) {
3166                 if (pt->type == htons(ETH_P_ALL))
3167                         seq_puts(seq, "ALL ");
3168                 else
3169                         seq_printf(seq, "%04x", ntohs(pt->type));
3170
3171                 seq_printf(seq, " %-8s %pF\n",
3172                            pt->dev ? pt->dev->name : "", pt->func);
3173         }
3174
3175         return 0;
3176 }
3177
3178 static const struct seq_operations ptype_seq_ops = {
3179         .start = ptype_seq_start,
3180         .next  = ptype_seq_next,
3181         .stop  = ptype_seq_stop,
3182         .show  = ptype_seq_show,
3183 };
3184
3185 static int ptype_seq_open(struct inode *inode, struct file *file)
3186 {
3187         return seq_open_net(inode, file, &ptype_seq_ops,
3188                         sizeof(struct seq_net_private));
3189 }
3190
3191 static const struct file_operations ptype_seq_fops = {
3192         .owner   = THIS_MODULE,
3193         .open    = ptype_seq_open,
3194         .read    = seq_read,
3195         .llseek  = seq_lseek,
3196         .release = seq_release_net,
3197 };
3198
3199
3200 static int __net_init dev_proc_net_init(struct net *net)
3201 {
3202         int rc = -ENOMEM;
3203
3204         if (!proc_net_fops_create(net, "dev", S_IRUGO, &dev_seq_fops))
3205                 goto out;
3206         if (!proc_net_fops_create(net, "softnet_stat", S_IRUGO, &softnet_seq_fops))
3207                 goto out_dev;
3208         if (!proc_net_fops_create(net, "ptype", S_IRUGO, &ptype_seq_fops))
3209                 goto out_softnet;
3210
3211         if (wext_proc_init(net))
3212                 goto out_ptype;
3213         rc = 0;
3214 out:
3215         return rc;
3216 out_ptype:
3217         proc_net_remove(net, "ptype");
3218 out_softnet:
3219         proc_net_remove(net, "softnet_stat");
3220 out_dev:
3221         proc_net_remove(net, "dev");
3222         goto out;
3223 }
3224
3225 static void __net_exit dev_proc_net_exit(struct net *net)
3226 {
3227         wext_proc_exit(net);
3228
3229         proc_net_remove(net, "ptype");
3230         proc_net_remove(net, "softnet_stat");
3231         proc_net_remove(net, "dev");
3232 }
3233
3234 static struct pernet_operations __net_initdata dev_proc_ops = {
3235         .init = dev_proc_net_init,
3236         .exit = dev_proc_net_exit,
3237 };
3238
3239 static int __init dev_proc_init(void)
3240 {
3241         return register_pernet_subsys(&dev_proc_ops);
3242 }
3243 #else
3244 #define dev_proc_init() 0
3245 #endif  /* CONFIG_PROC_FS */
3246
3247
3248 /**
3249  *      netdev_set_master       -       set up master/slave pair
3250  *      @slave: slave device
3251  *      @master: new master device
3252  *
3253  *      Changes the master device of the slave. Pass %NULL to break the
3254  *      bonding. The caller must hold the RTNL semaphore. On a failure
3255  *      a negative errno code is returned. On success the reference counts
3256  *      are adjusted, %RTM_NEWLINK is sent to the routing socket and the
3257  *      function returns zero.
3258  */
3259 int netdev_set_master(struct net_device *slave, struct net_device *master)
3260 {
3261         struct net_device *old = slave->master;
3262
3263         ASSERT_RTNL();
3264
3265         if (master) {
3266                 if (old)
3267                         return -EBUSY;
3268                 dev_hold(master);
3269         }
3270
3271         slave->master = master;
3272
3273         synchronize_net();
3274
3275         if (old)
3276                 dev_put(old);
3277
3278         if (master)
3279                 slave->flags |= IFF_SLAVE;
3280         else
3281                 slave->flags &= ~IFF_SLAVE;
3282
3283         rtmsg_ifinfo(RTM_NEWLINK, slave, IFF_SLAVE);
3284         return 0;
3285 }
3286
3287 static void dev_change_rx_flags(struct net_device *dev, int flags)
3288 {
3289         const struct net_device_ops *ops = dev->netdev_ops;
3290
3291         if ((dev->flags & IFF_UP) && ops->ndo_change_rx_flags)
3292                 ops->ndo_change_rx_flags(dev, flags);
3293 }
3294
3295 static int __dev_set_promiscuity(struct net_device *dev, int inc)
3296 {
3297         unsigned short old_flags = dev->flags;
3298         uid_t uid;
3299         gid_t gid;
3300
3301         ASSERT_RTNL();
3302
3303         dev->flags |= IFF_PROMISC;
3304         dev->promiscuity += inc;
3305         if (dev->promiscuity == 0) {
3306                 /*
3307                  * Avoid overflow.
3308                  * If inc causes overflow, untouch promisc and return error.
3309                  */
3310                 if (inc < 0)
3311                         dev->flags &= ~IFF_PROMISC;
3312                 else {
3313                         dev->promiscuity -= inc;
3314                         printk(KERN_WARNING "%s: promiscuity touches roof, "
3315                                 "set promiscuity failed, promiscuity feature "
3316                                 "of device might be broken.\n", dev->name);
3317                         return -EOVERFLOW;
3318                 }
3319         }
3320         if (dev->flags != old_flags) {
3321                 printk(KERN_INFO "device %s %s promiscuous mode\n",
3322                        dev->name, (dev->flags & IFF_PROMISC) ? "entered" :
3323                                                                "left");
3324                 if (audit_enabled) {
3325                         current_uid_gid(&uid, &gid);
3326                         audit_log(current->audit_context, GFP_ATOMIC,
3327                                 AUDIT_ANOM_PROMISCUOUS,
3328                                 "dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u",
3329                                 dev->name, (dev->flags & IFF_PROMISC),
3330                                 (old_flags & IFF_PROMISC),
3331                                 audit_get_loginuid(current),
3332                                 uid, gid,
3333                                 audit_get_sessionid(current));
3334                 }
3335
3336                 dev_change_rx_flags(dev, IFF_PROMISC);
3337         }
3338         return 0;
3339 }
3340
3341 /**
3342  *      dev_set_promiscuity     - update promiscuity count on a device
3343  *      @dev: device
3344  *      @inc: modifier
3345  *
3346  *      Add or remove promiscuity from a device. While the count in the device
3347  *      remains above zero the interface remains promiscuous. Once it hits zero
3348  *      the device reverts back to normal filtering operation. A negative inc
3349  *      value is used to drop promiscuity on the device.
3350  *      Return 0 if successful or a negative errno code on error.
3351  */
3352 int dev_set_promiscuity(struct net_device *dev, int inc)
3353 {
3354         unsigned short old_flags = dev->flags;
3355         int err;
3356
3357         err = __dev_set_promiscuity(dev, inc);
3358         if (err < 0)
3359                 return err;
3360         if (dev->flags != old_flags)
3361                 dev_set_rx_mode(dev);
3362         return err;
3363 }
3364
3365 /**
3366  *      dev_set_allmulti        - update allmulti count on a device
3367  *      @dev: device
3368  *      @inc: modifier
3369  *
3370  *      Add or remove reception of all multicast frames to a device. While the
3371  *      count in the device remains above zero the interface remains listening
3372  *      to all interfaces. Once it hits zero the device reverts back to normal
3373  *      filtering operation. A negative @inc value is used to drop the counter
3374  *      when releasing a resource needing all multicasts.
3375  *      Return 0 if successful or a negative errno code on error.
3376  */
3377
3378 int dev_set_allmulti(struct net_device *dev, int inc)
3379 {
3380         unsigned short old_flags = dev->flags;
3381
3382         ASSERT_RTNL();
3383
3384         dev->flags |= IFF_ALLMULTI;
3385         dev->allmulti += inc;
3386         if (dev->allmulti == 0) {
3387                 /*
3388                  * Avoid overflow.
3389                  * If inc causes overflow, untouch allmulti and return error.
3390                  */
3391                 if (inc < 0)
3392                         dev->flags &= ~IFF_ALLMULTI;
3393                 else {
3394                         dev->allmulti -= inc;
3395                         printk(KERN_WARNING "%s: allmulti touches roof, "
3396                                 "set allmulti failed, allmulti feature of "
3397                                 "device might be broken.\n", dev->name);
3398                         return -EOVERFLOW;
3399                 }
3400         }
3401         if (dev->flags ^ old_flags) {
3402                 dev_change_rx_flags(dev, IFF_ALLMULTI);
3403                 dev_set_rx_mode(dev);
3404         }
3405         return 0;
3406 }
3407
3408 /*
3409  *      Upload unicast and multicast address lists to device and
3410  *      configure RX filtering. When the device doesn't support unicast
3411  *      filtering it is put in promiscuous mode while unicast addresses
3412  *      are present.
3413  */
3414 void __dev_set_rx_mode(struct net_device *dev)
3415 {
3416         const struct net_device_ops *ops = dev->netdev_ops;
3417
3418         /* dev_open will call this function so the list will stay sane. */
3419         if (!(dev->flags&IFF_UP))
3420                 return;
3421
3422         if (!netif_device_present(dev))
3423                 return;
3424
3425         if (ops->ndo_set_rx_mode)
3426                 ops->ndo_set_rx_mode(dev);
3427         else {
3428                 /* Unicast addresses changes may only happen under the rtnl,
3429                  * therefore calling __dev_set_promiscuity here is safe.
3430                  */
3431                 if (dev->uc_count > 0 && !dev->uc_promisc) {
3432                         __dev_set_promiscuity(dev, 1);
3433                         dev->uc_promisc = 1;
3434                 } else if (dev->uc_count == 0 && dev->uc_promisc) {
3435                         __dev_set_promiscuity(dev, -1);
3436                         dev->uc_promisc = 0;
3437                 }
3438
3439                 if (ops->ndo_set_multicast_list)
3440                         ops->ndo_set_multicast_list(dev);
3441         }
3442 }
3443
3444 void dev_set_rx_mode(struct net_device *dev)
3445 {
3446         netif_addr_lock_bh(dev);
3447         __dev_set_rx_mode(dev);
3448         netif_addr_unlock_bh(dev);
3449 }
3450
3451 /* hw addresses list handling functions */
3452
3453 static int __hw_addr_add(struct list_head *list, unsigned char *addr,
3454                          int addr_len, unsigned char addr_type)
3455 {
3456         struct netdev_hw_addr *ha;
3457         int alloc_size;
3458
3459         if (addr_len > MAX_ADDR_LEN)
3460                 return -EINVAL;
3461
3462         alloc_size = sizeof(*ha);
3463         if (alloc_size < L1_CACHE_BYTES)
3464                 alloc_size = L1_CACHE_BYTES;
3465         ha = kmalloc(alloc_size, GFP_ATOMIC);
3466         if (!ha)
3467                 return -ENOMEM;
3468         memcpy(ha->addr, addr, addr_len);
3469         ha->type = addr_type;
3470         list_add_tail_rcu(&ha->list, list);
3471         return 0;
3472 }
3473
3474 static void ha_rcu_free(struct rcu_head *head)
3475 {
3476         struct netdev_hw_addr *ha;
3477
3478         ha = container_of(head, struct netdev_hw_addr, rcu_head);
3479         kfree(ha);
3480 }
3481
3482 static int __hw_addr_del_ii(struct list_head *list, unsigned char *addr,
3483                             int addr_len, unsigned char addr_type,
3484                             int ignore_index)
3485 {
3486         struct netdev_hw_addr *ha;
3487         int i = 0;
3488
3489         list_for_each_entry(ha, list, list) {
3490                 if (i++ != ignore_index &&
3491                     !memcmp(ha->addr, addr, addr_len) &&
3492                     (ha->type == addr_type || !addr_type)) {
3493                         list_del_rcu(&ha->list);
3494                         call_rcu(&ha->rcu_head, ha_rcu_free);
3495                         return 0;
3496                 }
3497         }
3498         return -ENOENT;
3499 }
3500
3501 static int __hw_addr_add_multiple_ii(struct list_head *to_list,
3502                                      struct list_head *from_list,
3503                                      int addr_len, unsigned char addr_type,
3504                                      int ignore_index)
3505 {
3506         int err;
3507         struct netdev_hw_addr *ha, *ha2;
3508         unsigned char type;
3509
3510         list_for_each_entry(ha, from_list, list) {
3511                 type = addr_type ? addr_type : ha->type;
3512                 err = __hw_addr_add(to_list, ha->addr, addr_len, type);
3513                 if (err)
3514                         goto unroll;
3515         }
3516         return 0;
3517
3518 unroll:
3519         list_for_each_entry(ha2, from_list, list) {
3520                 if (ha2 == ha)
3521                         break;
3522                 type = addr_type ? addr_type : ha2->type;
3523                 __hw_addr_del_ii(to_list, ha2->addr, addr_len, type,
3524                                  ignore_index);
3525         }
3526         return err;
3527 }
3528
3529 static void __hw_addr_del_multiple_ii(struct list_head *to_list,
3530                                       struct list_head *from_list,
3531                                       int addr_len, unsigned char addr_type,
3532                                       int ignore_index)
3533 {
3534         struct netdev_hw_addr *ha;
3535         unsigned char type;
3536
3537         list_for_each_entry(ha, from_list, list) {
3538                 type = addr_type ? addr_type : ha->type;
3539                 __hw_addr_del_ii(to_list, ha->addr, addr_len, addr_type,
3540                                  ignore_index);
3541         }
3542 }
3543
3544 static void __hw_addr_flush(struct list_head *list)
3545 {
3546         struct netdev_hw_addr *ha, *tmp;
3547
3548         list_for_each_entry_safe(ha, tmp, list, list) {
3549                 list_del_rcu(&ha->list);
3550                 call_rcu(&ha->rcu_head, ha_rcu_free);
3551         }
3552 }
3553
3554 /* Device addresses handling functions */
3555
3556 static void dev_addr_flush(struct net_device *dev)
3557 {
3558         /* rtnl_mutex must be held here */
3559
3560         __hw_addr_flush(&dev->dev_addr_list);
3561         dev->dev_addr = NULL;
3562 }
3563
3564 static int dev_addr_init(struct net_device *dev)
3565 {
3566         unsigned char addr[MAX_ADDR_LEN];
3567         struct netdev_hw_addr *ha;
3568         int err;
3569
3570         /* rtnl_mutex must be held here */
3571
3572         INIT_LIST_HEAD(&dev->dev_addr_list);
3573         memset(addr, 0, sizeof(*addr));
3574         err = __hw_addr_add(&dev->dev_addr_list, addr, sizeof(*addr),
3575                             NETDEV_HW_ADDR_T_LAN);
3576         if (!err) {
3577                 /*
3578                  * Get the first (previously created) address from the list
3579                  * and set dev_addr pointer to this location.
3580                  */
3581                 ha = list_first_entry(&dev->dev_addr_list,
3582                                       struct netdev_hw_addr, list);
3583                 dev->dev_addr = ha->addr;
3584         }
3585         return err;
3586 }
3587
3588 /**
3589  *      dev_addr_add    - Add a device address
3590  *      @dev: device
3591  *      @addr: address to add
3592  *      @addr_type: address type
3593  *
3594  *      Add a device address to the device or increase the reference count if
3595  *      it already exists.
3596  *
3597  *      The caller must hold the rtnl_mutex.
3598  */
3599 int dev_addr_add(struct net_device *dev, unsigned char *addr,
3600                  unsigned char addr_type)
3601 {
3602         int err;
3603
3604         ASSERT_RTNL();
3605
3606         err = __hw_addr_add(&dev->dev_addr_list, addr, dev->addr_len,
3607                             addr_type);
3608         if (!err)
3609                 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
3610         return err;
3611 }
3612 EXPORT_SYMBOL(dev_addr_add);
3613
3614 /**
3615  *      dev_addr_del    - Release a device address.
3616  *      @dev: device
3617  *      @addr: address to delete
3618  *      @addr_type: address type
3619  *
3620  *      Release reference to a device address and remove it from the device
3621  *      if the reference count drops to zero.
3622  *
3623  *      The caller must hold the rtnl_mutex.
3624  */
3625 int dev_addr_del(struct net_device *dev, unsigned char *addr,
3626                  unsigned char addr_type)
3627 {
3628         int err;
3629
3630         ASSERT_RTNL();
3631
3632         err = __hw_addr_del_ii(&dev->dev_addr_list, addr, dev->addr_len,
3633                                addr_type, 0);
3634         if (!err)
3635                 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
3636         return err;
3637 }
3638 EXPORT_SYMBOL(dev_addr_del);
3639
3640 /**
3641  *      dev_addr_add_multiple   - Add device addresses from another device
3642  *      @to_dev: device to which addresses will be added
3643  *      @from_dev: device from which addresses will be added
3644  *      @addr_type: address type - 0 means type will be used from from_dev
3645  *
3646  *      Add device addresses of the one device to another.
3647  **
3648  *      The caller must hold the rtnl_mutex.
3649  */
3650 int dev_addr_add_multiple(struct net_device *to_dev,
3651                           struct net_device *from_dev,
3652                           unsigned char addr_type)
3653 {
3654         int err;
3655
3656         ASSERT_RTNL();
3657
3658         if (from_dev->addr_len != to_dev->addr_len)
3659                 return -EINVAL;
3660         err = __hw_addr_add_multiple_ii(&to_dev->dev_addr_list,
3661                                         &from_dev->dev_addr_list,
3662                                         to_dev->addr_len, addr_type, 0);
3663         if (!err)
3664                 call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
3665         return err;
3666 }
3667 EXPORT_SYMBOL(dev_addr_add_multiple);
3668
3669 /**
3670  *      dev_addr_del_multiple   - Delete device addresses by another device
3671  *      @to_dev: device where the addresses will be deleted
3672  *      @from_dev: device by which addresses the addresses will be deleted
3673  *      @addr_type: address type - 0 means type will used from from_dev
3674  *
3675  *      Deletes addresses in to device by the list of addresses in from device.
3676  *
3677  *      The caller must hold the rtnl_mutex.
3678  */
3679 int dev_addr_del_multiple(struct net_device *to_dev,
3680                           struct net_device *from_dev,
3681                           unsigned char addr_type)
3682 {
3683         ASSERT_RTNL();
3684
3685         if (from_dev->addr_len != to_dev->addr_len)
3686                 return -EINVAL;
3687         __hw_addr_del_multiple_ii(&to_dev->dev_addr_list,
3688                                   &from_dev->dev_addr_list,
3689                                   to_dev->addr_len, addr_type, 0);
3690         call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
3691         return 0;
3692 }
3693 EXPORT_SYMBOL(dev_addr_del_multiple);
3694
3695 /* unicast and multicast addresses handling functions */
3696
3697 int __dev_addr_delete(struct dev_addr_list **list, int *count,
3698                       void *addr, int alen, int glbl)
3699 {
3700         struct dev_addr_list *da;
3701
3702         for (; (da = *list) != NULL; list = &da->next) {
3703                 if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 &&
3704                     alen == da->da_addrlen) {
3705                         if (glbl) {
3706                                 int old_glbl = da->da_gusers;
3707                                 da->da_gusers = 0;
3708                                 if (old_glbl == 0)
3709                                         break;
3710                         }
3711                         if (--da->da_users)
3712                                 return 0;
3713
3714                         *list = da->next;
3715                         kfree(da);
3716                         (*count)--;
3717                         return 0;
3718                 }
3719         }
3720         return -ENOENT;
3721 }
3722
3723 int __dev_addr_add(struct dev_addr_list **list, int *count,
3724                    void *addr, int alen, int glbl)
3725 {
3726         struct dev_addr_list *da;
3727
3728         for (da = *list; da != NULL; da = da->next) {
3729                 if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 &&
3730                     da->da_addrlen == alen) {
3731                         if (glbl) {
3732                                 int old_glbl = da->da_gusers;
3733                                 da->da_gusers = 1;
3734                                 if (old_glbl)
3735                                         return 0;
3736                         }
3737                         da->da_users++;
3738                         return 0;
3739                 }
3740         }
3741
3742         da = kzalloc(sizeof(*da), GFP_ATOMIC);
3743         if (da == NULL)
3744                 return -ENOMEM;
3745         memcpy(da->da_addr, addr, alen);
3746         da->da_addrlen = alen;
3747         da->da_users = 1;
3748         da->da_gusers = glbl ? 1 : 0;
3749         da->next = *list;
3750         *list = da;
3751         (*count)++;
3752         return 0;
3753 }
3754
3755 /**
3756  *      dev_unicast_delete      - Release secondary unicast address.
3757  *      @dev: device
3758  *      @addr: address to delete
3759  *      @alen: length of @addr
3760  *
3761  *      Release reference to a secondary unicast address and remove it
3762  *      from the device if the reference count drops to zero.
3763  *
3764  *      The caller must hold the rtnl_mutex.
3765  */
3766 int dev_unicast_delete(struct net_device *dev, void *addr, int alen)
3767 {
3768         int err;
3769
3770         ASSERT_RTNL();
3771
3772         netif_addr_lock_bh(dev);
3773         err = __dev_addr_delete(&dev->uc_list, &dev->uc_count, addr, alen, 0);
3774         if (!err)
3775                 __dev_set_rx_mode(dev);
3776         netif_addr_unlock_bh(dev);
3777         return err;
3778 }
3779 EXPORT_SYMBOL(dev_unicast_delete);
3780
3781 /**
3782  *      dev_unicast_add         - add a secondary unicast address
3783  *      @dev: device
3784  *      @addr: address to add
3785  *      @alen: length of @addr
3786  *
3787  *      Add a secondary unicast address to the device or increase
3788  *      the reference count if it already exists.
3789  *
3790  *      The caller must hold the rtnl_mutex.
3791  */
3792 int dev_unicast_add(struct net_device *dev, void *addr, int alen)
3793 {
3794         int err;
3795
3796         ASSERT_RTNL();
3797
3798         netif_addr_lock_bh(dev);
3799         err = __dev_addr_add(&dev->uc_list, &dev->uc_count, addr, alen, 0);
3800         if (!err)
3801                 __dev_set_rx_mode(dev);
3802         netif_addr_unlock_bh(dev);
3803         return err;
3804 }
3805 EXPORT_SYMBOL(dev_unicast_add);
3806
3807 int __dev_addr_sync(struct dev_addr_list **to, int *to_count,
3808                     struct dev_addr_list **from, int *from_count)
3809 {
3810         struct dev_addr_list *da, *next;
3811         int err = 0;
3812
3813         da = *from;
3814         while (da != NULL) {
3815                 next = da->next;
3816                 if (!da->da_synced) {
3817                         err = __dev_addr_add(to, to_count,
3818                                              da->da_addr, da->da_addrlen, 0);
3819                         if (err < 0)
3820                                 break;
3821                         da->da_synced = 1;
3822                         da->da_users++;
3823                 } else if (da->da_users == 1) {
3824                         __dev_addr_delete(to, to_count,
3825                                           da->da_addr, da->da_addrlen, 0);
3826                         __dev_addr_delete(from, from_count,
3827                                           da->da_addr, da->da_addrlen, 0);
3828                 }
3829                 da = next;
3830         }
3831         return err;
3832 }
3833
3834 void __dev_addr_unsync(struct dev_addr_list **to, int *to_count,
3835                        struct dev_addr_list **from, int *from_count)
3836 {
3837         struct dev_addr_list *da, *next;
3838
3839         da = *from;
3840         while (da != NULL) {
3841                 next = da->next;
3842                 if (da->da_synced) {
3843                         __dev_addr_delete(to, to_count,
3844                                           da->da_addr, da->da_addrlen, 0);
3845                         da->da_synced = 0;
3846                         __dev_addr_delete(from, from_count,
3847                                           da->da_addr, da->da_addrlen, 0);
3848                 }
3849                 da = next;
3850         }
3851 }
3852
3853 /**
3854  *      dev_unicast_sync - Synchronize device's unicast list to another device
3855  *      @to: destination device
3856  *      @from: source device
3857  *
3858  *      Add newly added addresses to the destination device and release
3859  *      addresses that have no users left. The source device must be
3860  *      locked by netif_tx_lock_bh.
3861  *
3862  *      This function is intended to be called from the dev->set_rx_mode
3863  *      function of layered software devices.
3864  */
3865 int dev_unicast_sync(struct net_device *to, struct net_device *from)
3866 {
3867         int err = 0;
3868
3869         netif_addr_lock_bh(to);
3870         err = __dev_addr_sync(&to->uc_list, &to->uc_count,
3871                               &from->uc_list, &from->uc_count);
3872         if (!err)
3873                 __dev_set_rx_mode(to);
3874         netif_addr_unlock_bh(to);
3875         return err;
3876 }
3877 EXPORT_SYMBOL(dev_unicast_sync);
3878
3879 /**
3880  *      dev_unicast_unsync - Remove synchronized addresses from the destination device
3881  *      @to: destination device
3882  *      @from: source device
3883  *
3884  *      Remove all addresses that were added to the destination device by
3885  *      dev_unicast_sync(). This function is intended to be called from the
3886  *      dev->stop function of layered software devices.
3887  */
3888 void dev_unicast_unsync(struct net_device *to, struct net_device *from)
3889 {
3890         netif_addr_lock_bh(from);
3891         netif_addr_lock(to);
3892
3893         __dev_addr_unsync(&to->uc_list, &to->uc_count,
3894                           &from->uc_list, &from->uc_count);
3895         __dev_set_rx_mode(to);
3896
3897         netif_addr_unlock(to);
3898         netif_addr_unlock_bh(from);
3899 }
3900 EXPORT_SYMBOL(dev_unicast_unsync);
3901
3902 static void __dev_addr_discard(struct dev_addr_list **list)
3903 {
3904         struct dev_addr_list *tmp;
3905
3906         while (*list != NULL) {
3907                 tmp = *list;
3908                 *list = tmp->next;
3909                 if (tmp->da_users > tmp->da_gusers)
3910                         printk("__dev_addr_discard: address leakage! "
3911                                "da_users=%d\n", tmp->da_users);
3912                 kfree(tmp);
3913         }
3914 }
3915
3916 static void dev_addr_discard(struct net_device *dev)
3917 {
3918         netif_addr_lock_bh(dev);
3919
3920         __dev_addr_discard(&dev->uc_list);
3921         dev->uc_count = 0;
3922
3923         __dev_addr_discard(&dev->mc_list);
3924         dev->mc_count = 0;
3925
3926         netif_addr_unlock_bh(dev);
3927 }
3928
3929 /**
3930  *      dev_get_flags - get flags reported to userspace
3931  *      @dev: device
3932  *
3933  *      Get the combination of flag bits exported through APIs to userspace.
3934  */
3935 unsigned dev_get_flags(const struct net_device *dev)
3936 {
3937         unsigned flags;
3938
3939         flags = (dev->flags & ~(IFF_PROMISC |
3940                                 IFF_ALLMULTI |
3941                                 IFF_RUNNING |
3942                                 IFF_LOWER_UP |
3943                                 IFF_DORMANT)) |
3944                 (dev->gflags & (IFF_PROMISC |
3945                                 IFF_ALLMULTI));
3946
3947         if (netif_running(dev)) {
3948                 if (netif_oper_up(dev))
3949                         flags |= IFF_RUNNING;
3950                 if (netif_carrier_ok(dev))
3951                         flags |= IFF_LOWER_UP;
3952                 if (netif_dormant(dev))
3953                         flags |= IFF_DORMANT;
3954         }
3955
3956         return flags;
3957 }
3958
3959 /**
3960  *      dev_change_flags - change device settings
3961  *      @dev: device
3962  *      @flags: device state flags
3963  *
3964  *      Change settings on device based state flags. The flags are
3965  *      in the userspace exported format.
3966  */
3967 int dev_change_flags(struct net_device *dev, unsigned flags)
3968 {
3969         int ret, changes;
3970         int old_flags = dev->flags;
3971
3972         ASSERT_RTNL();
3973
3974         /*
3975          *      Set the flags on our device.
3976          */
3977
3978         dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
3979                                IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
3980                                IFF_AUTOMEDIA)) |
3981                      (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC |
3982                                     IFF_ALLMULTI));
3983
3984         /*
3985          *      Load in the correct multicast list now the flags have changed.
3986          */
3987
3988         if ((old_flags ^ flags) & IFF_MULTICAST)
3989                 dev_change_rx_flags(dev, IFF_MULTICAST);
3990
3991         dev_set_rx_mode(dev);
3992
3993         /*
3994          *      Have we downed the interface. We handle IFF_UP ourselves
3995          *      according to user attempts to set it, rather than blindly
3996          *      setting it.
3997          */
3998
3999         ret = 0;
4000         if ((old_flags ^ flags) & IFF_UP) {     /* Bit is different  ? */
4001                 ret = ((old_flags & IFF_UP) ? dev_close : dev_open)(dev);
4002
4003                 if (!ret)
4004                         dev_set_rx_mode(dev);
4005         }
4006
4007         if (dev->flags & IFF_UP &&
4008             ((old_flags ^ dev->flags) &~ (IFF_UP | IFF_PROMISC | IFF_ALLMULTI |
4009                                           IFF_VOLATILE)))
4010                 call_netdevice_notifiers(NETDEV_CHANGE, dev);
4011
4012         if ((flags ^ dev->gflags) & IFF_PROMISC) {
4013                 int inc = (flags & IFF_PROMISC) ? +1 : -1;
4014                 dev->gflags ^= IFF_PROMISC;
4015                 dev_set_promiscuity(dev, inc);
4016         }
4017
4018         /* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI
4019            is important. Some (broken) drivers set IFF_PROMISC, when
4020            IFF_ALLMULTI is requested not asking us and not reporting.
4021          */
4022         if ((flags ^ dev->gflags) & IFF_ALLMULTI) {
4023                 int inc = (flags & IFF_ALLMULTI) ? +1 : -1;
4024                 dev->gflags ^= IFF_ALLMULTI;
4025                 dev_set_allmulti(dev, inc);
4026         }
4027
4028         /* Exclude state transition flags, already notified */
4029         changes = (old_flags ^ dev->flags) & ~(IFF_UP | IFF_RUNNING);
4030         if (changes)
4031                 rtmsg_ifinfo(RTM_NEWLINK, dev, changes);
4032
4033         return ret;
4034 }
4035
4036 /**
4037  *      dev_set_mtu - Change maximum transfer unit
4038  *      @dev: device
4039  *      @new_mtu: new transfer unit
4040  *
4041  *      Change the maximum transfer size of the network device.
4042  */
4043 int dev_set_mtu(struct net_device *dev, int new_mtu)
4044 {
4045         const struct net_device_ops *ops = dev->netdev_ops;
4046         int err;
4047
4048         if (new_mtu == dev->mtu)
4049                 return 0;
4050
4051         /*      MTU must be positive.    */
4052         if (new_mtu < 0)
4053                 return -EINVAL;
4054
4055         if (!netif_device_present(dev))
4056                 return -ENODEV;
4057
4058         err = 0;
4059         if (ops->ndo_change_mtu)
4060                 err = ops->ndo_change_mtu(dev, new_mtu);
4061         else
4062                 dev->mtu = new_mtu;
4063
4064         if (!err && dev->flags & IFF_UP)
4065                 call_netdevice_notifiers(NETDEV_CHANGEMTU, dev);
4066         return err;
4067 }
4068
4069 /**
4070  *      dev_set_mac_address - Change Media Access Control Address
4071  *      @dev: device
4072  *      @sa: new address
4073  *
4074  *      Change the hardware (MAC) address of the device
4075  */
4076 int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa)
4077 {
4078         const struct net_device_ops *ops = dev->netdev_ops;
4079         int err;
4080
4081         if (!ops->ndo_set_mac_address)
4082                 return -EOPNOTSUPP;
4083         if (sa->sa_family != dev->type)
4084                 return -EINVAL;
4085         if (!netif_device_present(dev))
4086                 return -ENODEV;
4087         err = ops->ndo_set_mac_address(dev, sa);
4088         if (!err)
4089                 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4090         return err;
4091 }
4092
4093 /*
4094  *      Perform the SIOCxIFxxx calls, inside read_lock(dev_base_lock)
4095  */
4096 static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cmd)
4097 {
4098         int err;
4099         struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
4100
4101         if (!dev)
4102                 return -ENODEV;
4103
4104         switch (cmd) {
4105                 case SIOCGIFFLAGS:      /* Get interface flags */
4106                         ifr->ifr_flags = dev_get_flags(dev);
4107                         return 0;
4108
4109                 case SIOCGIFMETRIC:     /* Get the metric on the interface
4110                                            (currently unused) */
4111                         ifr->ifr_metric = 0;
4112                         return 0;
4113
4114                 case SIOCGIFMTU:        /* Get the MTU of a device */
4115                         ifr->ifr_mtu = dev->mtu;
4116                         return 0;
4117
4118                 case SIOCGIFHWADDR:
4119                         if (!dev->addr_len)
4120                                 memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data);
4121                         else
4122                                 memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr,
4123                                        min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
4124                         ifr->ifr_hwaddr.sa_family = dev->type;
4125                         return 0;
4126
4127                 case SIOCGIFSLAVE:
4128                         err = -EINVAL;
4129                         break;
4130
4131                 case SIOCGIFMAP:
4132                         ifr->ifr_map.mem_start = dev->mem_start;
4133                         ifr->ifr_map.mem_end   = dev->mem_end;
4134                         ifr->ifr_map.base_addr = dev->base_addr;
4135                         ifr->ifr_map.irq       = dev->irq;
4136                         ifr->ifr_map.dma       = dev->dma;
4137                         ifr->ifr_map.port      = dev->if_port;
4138                         return 0;
4139
4140                 case SIOCGIFINDEX:
4141                         ifr->ifr_ifindex = dev->ifindex;
4142                         return 0;
4143
4144                 case SIOCGIFTXQLEN:
4145                         ifr->ifr_qlen = dev->tx_queue_len;
4146                         return 0;
4147
4148                 default:
4149                         /* dev_ioctl() should ensure this case
4150                          * is never reached
4151                          */
4152                         WARN_ON(1);
4153                         err = -EINVAL;
4154                         break;
4155
4156         }
4157         return err;
4158 }
4159
4160 /*
4161  *      Perform the SIOCxIFxxx calls, inside rtnl_lock()
4162  */
4163 static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
4164 {
4165         int err;
4166         struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
4167         const struct net_device_ops *ops;
4168
4169         if (!dev)
4170                 return -ENODEV;
4171
4172         ops = dev->netdev_ops;
4173
4174         switch (cmd) {
4175                 case SIOCSIFFLAGS:      /* Set interface flags */
4176                         return dev_change_flags(dev, ifr->ifr_flags);
4177
4178                 case SIOCSIFMETRIC:     /* Set the metric on the interface
4179                                            (currently unused) */
4180                         return -EOPNOTSUPP;
4181
4182                 case SIOCSIFMTU:        /* Set the MTU of a device */
4183                         return dev_set_mtu(dev, ifr->ifr_mtu);
4184
4185                 case SIOCSIFHWADDR:
4186                         return dev_set_mac_address(dev, &ifr->ifr_hwaddr);
4187
4188                 case SIOCSIFHWBROADCAST:
4189                         if (ifr->ifr_hwaddr.sa_family != dev->type)
4190                                 return -EINVAL;
4191                         memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data,
4192                                min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
4193                         call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4194                         return 0;
4195
4196                 case SIOCSIFMAP:
4197                         if (ops->ndo_set_config) {
4198                                 if (!netif_device_present(dev))
4199                                         return -ENODEV;
4200                                 return ops->ndo_set_config(dev, &ifr->ifr_map);
4201                         }
4202                         return -EOPNOTSUPP;
4203
4204                 case SIOCADDMULTI:
4205                         if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
4206                             ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
4207                                 return -EINVAL;
4208                         if (!netif_device_present(dev))
4209                                 return -ENODEV;
4210                         return dev_mc_add(dev, ifr->ifr_hwaddr.sa_data,
4211                                           dev->addr_len, 1);
4212
4213                 case SIOCDELMULTI:
4214                         if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
4215                             ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
4216                                 return -EINVAL;
4217                         if (!netif_device_present(dev))
4218                                 return -ENODEV;
4219                         return dev_mc_delete(dev, ifr->ifr_hwaddr.sa_data,
4220                                              dev->addr_len, 1);
4221
4222                 case SIOCSIFTXQLEN:
4223                         if (ifr->ifr_qlen < 0)
4224                                 return -EINVAL;
4225                         dev->tx_queue_len = ifr->ifr_qlen;
4226                         return 0;
4227
4228                 case SIOCSIFNAME:
4229                         ifr->ifr_newname[IFNAMSIZ-1] = '\0';
4230                         return dev_change_name(dev, ifr->ifr_newname);
4231
4232                 /*
4233                  *      Unknown or private ioctl
4234                  */
4235
4236                 default:
4237                         if ((cmd >= SIOCDEVPRIVATE &&
4238                             cmd <= SIOCDEVPRIVATE + 15) ||
4239                             cmd == SIOCBONDENSLAVE ||
4240                             cmd == SIOCBONDRELEASE ||
4241                             cmd == SIOCBONDSETHWADDR ||
4242                             cmd == SIOCBONDSLAVEINFOQUERY ||
4243                             cmd == SIOCBONDINFOQUERY ||
4244                             cmd == SIOCBONDCHANGEACTIVE ||
4245                             cmd == SIOCGMIIPHY ||
4246                             cmd == SIOCGMIIREG ||
4247                             cmd == SIOCSMIIREG ||
4248                             cmd == SIOCBRADDIF ||
4249                             cmd == SIOCBRDELIF ||
4250                             cmd == SIOCSHWTSTAMP ||
4251                             cmd == SIOCWANDEV) {
4252                                 err = -EOPNOTSUPP;
4253                                 if (ops->ndo_do_ioctl) {
4254                                         if (netif_device_present(dev))
4255                                                 err = ops->ndo_do_ioctl(dev, ifr, cmd);
4256                                         else
4257                                                 err = -ENODEV;
4258                                 }
4259                         } else
4260                                 err = -EINVAL;
4261
4262         }
4263         return err;
4264 }
4265
4266 /*
4267  *      This function handles all "interface"-type I/O control requests. The actual
4268  *      'doing' part of this is dev_ifsioc above.
4269  */
4270
4271 /**
4272  *      dev_ioctl       -       network device ioctl
4273  *      @net: the applicable net namespace
4274  *      @cmd: command to issue
4275  *      @arg: pointer to a struct ifreq in user space
4276  *
4277  *      Issue ioctl functions to devices. This is normally called by the
4278  *      user space syscall interfaces but can sometimes be useful for
4279  *      other purposes. The return value is the return from the syscall if
4280  *      positive or a negative errno code on error.
4281  */
4282
4283 int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg)
4284 {
4285         struct ifreq ifr;
4286         int ret;
4287         char *colon;
4288
4289         /* One special case: SIOCGIFCONF takes ifconf argument
4290            and requires shared lock, because it sleeps writing
4291            to user space.
4292          */
4293
4294         if (cmd == SIOCGIFCONF) {
4295                 rtnl_lock();
4296                 ret = dev_ifconf(net, (char __user *) arg);
4297                 rtnl_unlock();
4298                 return ret;
4299         }
4300         if (cmd == SIOCGIFNAME)
4301                 return dev_ifname(net, (struct ifreq __user *)arg);
4302
4303         if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
4304                 return -EFAULT;
4305
4306         ifr.ifr_name[IFNAMSIZ-1] = 0;
4307
4308         colon = strchr(ifr.ifr_name, ':');
4309         if (colon)
4310                 *colon = 0;
4311
4312         /*
4313          *      See which interface the caller is talking about.
4314          */
4315
4316         switch (cmd) {
4317                 /*
4318                  *      These ioctl calls:
4319                  *      - can be done by all.
4320                  *      - atomic and do not require locking.
4321                  *      - return a value
4322                  */
4323                 case SIOCGIFFLAGS:
4324                 case SIOCGIFMETRIC:
4325                 case SIOCGIFMTU:
4326                 case SIOCGIFHWADDR:
4327                 case SIOCGIFSLAVE:
4328                 case SIOCGIFMAP:
4329                 case SIOCGIFINDEX:
4330                 case SIOCGIFTXQLEN:
4331                         dev_load(net, ifr.ifr_name);
4332                         read_lock(&dev_base_lock);
4333                         ret = dev_ifsioc_locked(net, &ifr, cmd);
4334                         read_unlock(&dev_base_lock);
4335                         if (!ret) {
4336                                 if (colon)
4337                                         *colon = ':';
4338                                 if (copy_to_user(arg, &ifr,
4339                                                  sizeof(struct ifreq)))
4340                                         ret = -EFAULT;
4341                         }
4342                         return ret;
4343
4344                 case SIOCETHTOOL:
4345                         dev_load(net, ifr.ifr_name);
4346                         rtnl_lock();
4347                         ret = dev_ethtool(net, &ifr);
4348                         rtnl_unlock();
4349                         if (!ret) {
4350                                 if (colon)
4351                                         *colon = ':';
4352                                 if (copy_to_user(arg, &ifr,
4353                                                  sizeof(struct ifreq)))
4354                                         ret = -EFAULT;
4355                         }
4356                         return ret;
4357
4358                 /*
4359                  *      These ioctl calls:
4360                  *      - require superuser power.
4361                  *      - require strict serialization.
4362                  *      - return a value
4363                  */
4364                 case SIOCGMIIPHY:
4365                 case SIOCGMIIREG:
4366                 case SIOCSIFNAME:
4367                         if (!capable(CAP_NET_ADMIN))
4368                                 return -EPERM;
4369                         dev_load(net, ifr.ifr_name);
4370                         rtnl_lock();
4371                         ret = dev_ifsioc(net, &ifr, cmd);
4372                         rtnl_unlock();
4373                         if (!ret) {
4374                                 if (colon)
4375                                         *colon = ':';
4376                                 if (copy_to_user(arg, &ifr,
4377                                                  sizeof(struct ifreq)))
4378                                         ret = -EFAULT;
4379                         }
4380                         return ret;
4381
4382                 /*
4383                  *      These ioctl calls:
4384                  *      - require superuser power.
4385                  *      - require strict serialization.
4386                  *      - do not return a value
4387                  */
4388                 case SIOCSIFFLAGS:
4389                 case SIOCSIFMETRIC:
4390                 case SIOCSIFMTU:
4391                 case SIOCSIFMAP:
4392                 case SIOCSIFHWADDR:
4393                 case SIOCSIFSLAVE:
4394                 case SIOCADDMULTI:
4395                 case SIOCDELMULTI:
4396                 case SIOCSIFHWBROADCAST:
4397                 case SIOCSIFTXQLEN:
4398                 case SIOCSMIIREG:
4399                 case SIOCBONDENSLAVE:
4400                 case SIOCBONDRELEASE:
4401                 case SIOCBONDSETHWADDR:
4402                 case SIOCBONDCHANGEACTIVE:
4403                 case SIOCBRADDIF:
4404                 case SIOCBRDELIF:
4405                 case SIOCSHWTSTAMP:
4406                         if (!capable(CAP_NET_ADMIN))
4407                                 return -EPERM;
4408                         /* fall through */
4409                 case SIOCBONDSLAVEINFOQUERY:
4410                 case SIOCBONDINFOQUERY:
4411                         dev_load(net, ifr.ifr_name);
4412                         rtnl_lock();
4413                         ret = dev_ifsioc(net, &ifr, cmd);
4414                         rtnl_unlock();
4415                         return ret;
4416
4417                 case SIOCGIFMEM:
4418                         /* Get the per device memory space. We can add this but
4419                          * currently do not support it */
4420                 case SIOCSIFMEM:
4421                         /* Set the per device memory buffer space.
4422                          * Not applicable in our case */
4423                 case SIOCSIFLINK:
4424                         return -EINVAL;
4425
4426                 /*
4427                  *      Unknown or private ioctl.
4428                  */
4429                 default:
4430                         if (cmd == SIOCWANDEV ||
4431                             (cmd >= SIOCDEVPRIVATE &&
4432                              cmd <= SIOCDEVPRIVATE + 15)) {
4433                                 dev_load(net, ifr.ifr_name);
4434                                 rtnl_lock();
4435                                 ret = dev_ifsioc(net, &ifr, cmd);
4436                                 rtnl_unlock();
4437                                 if (!ret && copy_to_user(arg, &ifr,
4438                                                          sizeof(struct ifreq)))
4439                                         ret = -EFAULT;
4440                                 return ret;
4441                         }
4442                         /* Take care of Wireless Extensions */
4443                         if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST)
4444                                 return wext_handle_ioctl(net, &ifr, cmd, arg);
4445                         return -EINVAL;
4446         }
4447 }
4448
4449
4450 /**
4451  *      dev_new_index   -       allocate an ifindex
4452  *      @net: the applicable net namespace
4453  *
4454  *      Returns a suitable unique value for a new device interface
4455  *      number.  The caller must hold the rtnl semaphore or the
4456  *      dev_base_lock to be sure it remains unique.
4457  */
4458 static int dev_new_index(struct net *net)
4459 {
4460         static int ifindex;
4461         for (;;) {
4462                 if (++ifindex <= 0)
4463                         ifindex = 1;
4464                 if (!__dev_get_by_index(net, ifindex))
4465                         return ifindex;
4466         }
4467 }
4468
4469 /* Delayed registration/unregisteration */
4470 static LIST_HEAD(net_todo_list);
4471
4472 static void net_set_todo(struct net_device *dev)
4473 {
4474         list_add_tail(&dev->todo_list, &net_todo_list);
4475 }
4476
4477 static void rollback_registered(struct net_device *dev)
4478 {
4479         BUG_ON(dev_boot_phase);
4480         ASSERT_RTNL();
4481
4482         /* Some devices call without registering for initialization unwind. */
4483         if (dev->reg_state == NETREG_UNINITIALIZED) {
4484                 printk(KERN_DEBUG "unregister_netdevice: device %s/%p never "
4485                                   "was registered\n", dev->name, dev);
4486
4487                 WARN_ON(1);
4488                 return;
4489         }
4490
4491         BUG_ON(dev->reg_state != NETREG_REGISTERED);
4492
4493         /* If device is running, close it first. */
4494         dev_close(dev);
4495
4496         /* And unlink it from device chain. */
4497         unlist_netdevice(dev);
4498
4499         dev->reg_state = NETREG_UNREGISTERING;
4500
4501         synchronize_net();
4502
4503         /* Shutdown queueing discipline. */
4504         dev_shutdown(dev);
4505
4506
4507         /* Notify protocols, that we are about to destroy
4508            this device. They should clean all the things.
4509         */
4510         call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
4511
4512         /*
4513          *      Flush the unicast and multicast chains
4514          */
4515         dev_addr_discard(dev);
4516
4517         if (dev->netdev_ops->ndo_uninit)
4518                 dev->netdev_ops->ndo_uninit(dev);
4519
4520         /* Notifier chain MUST detach us from master device. */
4521         WARN_ON(dev->master);
4522
4523         /* Remove entries from kobject tree */
4524         netdev_unregister_kobject(dev);
4525
4526         synchronize_net();
4527
4528         dev_put(dev);
4529 }
4530
4531 static void __netdev_init_queue_locks_one(struct net_device *dev,
4532                                           struct netdev_queue *dev_queue,
4533                                           void *_unused)
4534 {
4535         spin_lock_init(&dev_queue->_xmit_lock);
4536         netdev_set_xmit_lockdep_class(&dev_queue->_xmit_lock, dev->type);
4537         dev_queue->xmit_lock_owner = -1;
4538 }
4539
4540 static void netdev_init_queue_locks(struct net_device *dev)
4541 {
4542         netdev_for_each_tx_queue(dev, __netdev_init_queue_locks_one, NULL);
4543         __netdev_init_queue_locks_one(dev, &dev->rx_queue, NULL);
4544 }
4545
4546 unsigned long netdev_fix_features(unsigned long features, const char *name)
4547 {
4548         /* Fix illegal SG+CSUM combinations. */
4549         if ((features & NETIF_F_SG) &&
4550             !(features & NETIF_F_ALL_CSUM)) {
4551                 if (name)
4552                         printk(KERN_NOTICE "%s: Dropping NETIF_F_SG since no "
4553                                "checksum feature.\n", name);
4554                 features &= ~NETIF_F_SG;
4555         }
4556
4557         /* TSO requires that SG is present as well. */
4558         if ((features & NETIF_F_TSO) && !(features & NETIF_F_SG)) {
4559                 if (name)
4560                         printk(KERN_NOTICE "%s: Dropping NETIF_F_TSO since no "
4561                                "SG feature.\n", name);
4562                 features &= ~NETIF_F_TSO;
4563         }
4564
4565         if (features & NETIF_F_UFO) {
4566                 if (!(features & NETIF_F_GEN_CSUM)) {
4567                         if (name)
4568                                 printk(KERN_ERR "%s: Dropping NETIF_F_UFO "
4569                                        "since no NETIF_F_HW_CSUM feature.\n",
4570                                        name);
4571                         features &= ~NETIF_F_UFO;
4572                 }
4573
4574                 if (!(features & NETIF_F_SG)) {
4575                         if (name)
4576                                 printk(KERN_ERR "%s: Dropping NETIF_F_UFO "
4577                                        "since no NETIF_F_SG feature.\n", name);
4578                         features &= ~NETIF_F_UFO;
4579                 }
4580         }
4581
4582         return features;
4583 }
4584 EXPORT_SYMBOL(netdev_fix_features);
4585
4586 /**
4587  *      register_netdevice      - register a network device
4588  *      @dev: device to register
4589  *
4590  *      Take a completed network device structure and add it to the kernel
4591  *      interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
4592  *      chain. 0 is returned on success. A negative errno code is returned
4593  *      on a failure to set up the device, or if the name is a duplicate.
4594  *
4595  *      Callers must hold the rtnl semaphore. You may want
4596  *      register_netdev() instead of this.
4597  *
4598  *      BUGS:
4599  *      The locking appears insufficient to guarantee two parallel registers
4600  *      will not get the same name.
4601  */
4602
4603 int register_netdevice(struct net_device *dev)
4604 {
4605         struct hlist_head *head;
4606         struct hlist_node *p;
4607         int ret;
4608         struct net *net = dev_net(dev);
4609
4610         BUG_ON(dev_boot_phase);
4611         ASSERT_RTNL();
4612
4613         might_sleep();
4614
4615         /* When net_device's are persistent, this will be fatal. */
4616         BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
4617         BUG_ON(!net);
4618
4619         spin_lock_init(&dev->addr_list_lock);
4620         netdev_set_addr_lockdep_class(dev);
4621         netdev_init_queue_locks(dev);
4622
4623         dev->iflink = -1;
4624
4625         /* Init, if this function is available */
4626         if (dev->netdev_ops->ndo_init) {
4627                 ret = dev->netdev_ops->ndo_init(dev);
4628                 if (ret) {
4629                         if (ret > 0)
4630                                 ret = -EIO;
4631                         goto out;
4632                 }
4633         }
4634
4635         if (!dev_valid_name(dev->name)) {
4636                 ret = -EINVAL;
4637                 goto err_uninit;
4638         }
4639
4640         dev->ifindex = dev_new_index(net);
4641         if (dev->iflink == -1)
4642                 dev->iflink = dev->ifindex;
4643
4644         /* Check for existence of name */
4645         head = dev_name_hash(net, dev->name);
4646         hlist_for_each(p, head) {
4647                 struct net_device *d
4648                         = hlist_entry(p, struct net_device, name_hlist);
4649                 if (!strncmp(d->name, dev->name, IFNAMSIZ)) {
4650                         ret = -EEXIST;
4651                         goto err_uninit;
4652                 }
4653         }
4654
4655         /* Fix illegal checksum combinations */
4656         if ((dev->features & NETIF_F_HW_CSUM) &&
4657             (dev->features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
4658                 printk(KERN_NOTICE "%s: mixed HW and IP checksum settings.\n",
4659                        dev->name);
4660                 dev->features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
4661         }
4662
4663         if ((dev->features & NETIF_F_NO_CSUM) &&
4664             (dev->features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
4665                 printk(KERN_NOTICE "%s: mixed no checksumming and other settings.\n",
4666                        dev->name);
4667                 dev->features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM);
4668         }
4669
4670         dev->features = netdev_fix_features(dev->features, dev->name);
4671
4672         /* Enable software GSO if SG is supported. */
4673         if (dev->features & NETIF_F_SG)
4674                 dev->features |= NETIF_F_GSO;
4675
4676         netdev_initialize_kobject(dev);
4677         ret = netdev_register_kobject(dev);
4678         if (ret)
4679                 goto err_uninit;
4680         dev->reg_state = NETREG_REGISTERED;
4681
4682         /*
4683          *      Default initial state at registry is that the
4684          *      device is present.
4685          */
4686
4687         set_bit(__LINK_STATE_PRESENT, &dev->state);
4688
4689         dev_init_scheduler(dev);
4690         dev_hold(dev);
4691         list_netdevice(dev);
4692
4693         /* Notify protocols, that a new device appeared. */
4694         ret = call_netdevice_notifiers(NETDEV_REGISTER, dev);
4695         ret = notifier_to_errno(ret);
4696         if (ret) {
4697                 rollback_registered(dev);
4698                 dev->reg_state = NETREG_UNREGISTERED;
4699         }
4700
4701 out:
4702         return ret;
4703
4704 err_uninit:
4705         if (dev->netdev_ops->ndo_uninit)
4706                 dev->netdev_ops->ndo_uninit(dev);
4707         goto out;
4708 }
4709
4710 /**
4711  *      init_dummy_netdev       - init a dummy network device for NAPI
4712  *      @dev: device to init
4713  *
4714  *      This takes a network device structure and initialize the minimum
4715  *      amount of fields so it can be used to schedule NAPI polls without
4716  *      registering a full blown interface. This is to be used by drivers
4717  *      that need to tie several hardware interfaces to a single NAPI
4718  *      poll scheduler due to HW limitations.
4719  */
4720 int init_dummy_netdev(struct net_device *dev)
4721 {
4722         /* Clear everything. Note we don't initialize spinlocks
4723          * are they aren't supposed to be taken by any of the
4724          * NAPI code and this dummy netdev is supposed to be
4725          * only ever used for NAPI polls
4726          */
4727         memset(dev, 0, sizeof(struct net_device));
4728
4729         /* make sure we BUG if trying to hit standard
4730          * register/unregister code path
4731          */
4732         dev->reg_state = NETREG_DUMMY;
4733
4734         /* initialize the ref count */
4735         atomic_set(&dev->refcnt, 1);
4736
4737         /* NAPI wants this */
4738         INIT_LIST_HEAD(&dev->napi_list);
4739
4740         /* a dummy interface is started by default */
4741         set_bit(__LINK_STATE_PRESENT, &dev->state);
4742         set_bit(__LINK_STATE_START, &dev->state);
4743
4744         return 0;
4745 }
4746 EXPORT_SYMBOL_GPL(init_dummy_netdev);
4747
4748
4749 /**
4750  *      register_netdev - register a network device
4751  *      @dev: device to register
4752  *
4753  *      Take a completed network device structure and add it to the kernel
4754  *      interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
4755  *      chain. 0 is returned on success. A negative errno code is returned
4756  *      on a failure to set up the device, or if the name is a duplicate.
4757  *
4758  *      This is a wrapper around register_netdevice that takes the rtnl semaphore
4759  *      and expands the device name if you passed a format string to
4760  *      alloc_netdev.
4761  */
4762 int register_netdev(struct net_device *dev)
4763 {
4764         int err;
4765
4766         rtnl_lock();
4767
4768         /*
4769          * If the name is a format string the caller wants us to do a
4770          * name allocation.
4771          */
4772         if (strchr(dev->name, '%')) {
4773                 err = dev_alloc_name(dev, dev->name);
4774                 if (err < 0)
4775                         goto out;
4776         }
4777
4778         err = register_netdevice(dev);
4779 out:
4780         rtnl_unlock();
4781         return err;
4782 }
4783 EXPORT_SYMBOL(register_netdev);
4784
4785 /*
4786  * netdev_wait_allrefs - wait until all references are gone.
4787  *
4788  * This is called when unregistering network devices.
4789  *
4790  * Any protocol or device that holds a reference should register
4791  * for netdevice notification, and cleanup and put back the
4792  * reference if they receive an UNREGISTER event.
4793  * We can get stuck here if buggy protocols don't correctly
4794  * call dev_put.
4795  */
4796 static void netdev_wait_allrefs(struct net_device *dev)
4797 {
4798         unsigned long rebroadcast_time, warning_time;
4799
4800         rebroadcast_time = warning_time = jiffies;
4801         while (atomic_read(&dev->refcnt) != 0) {
4802                 if (time_after(jiffies, rebroadcast_time + 1 * HZ)) {
4803                         rtnl_lock();
4804
4805                         /* Rebroadcast unregister notification */
4806                         call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
4807
4808                         if (test_bit(__LINK_STATE_LINKWATCH_PENDING,
4809                                      &dev->state)) {
4810                                 /* We must not have linkwatch events
4811                                  * pending on unregister. If this
4812                                  * happens, we simply run the queue
4813                                  * unscheduled, resulting in a noop
4814                                  * for this device.
4815                                  */
4816                                 linkwatch_run_queue();
4817                         }
4818
4819                         __rtnl_unlock();
4820
4821                         rebroadcast_time = jiffies;
4822                 }
4823
4824                 msleep(250);
4825
4826                 if (time_after(jiffies, warning_time + 10 * HZ)) {
4827                         printk(KERN_EMERG "unregister_netdevice: "
4828                                "waiting for %s to become free. Usage "
4829                                "count = %d\n",
4830                                dev->name, atomic_read(&dev->refcnt));
4831                         warning_time = jiffies;
4832                 }
4833         }
4834 }
4835
4836 /* The sequence is:
4837  *
4838  *      rtnl_lock();
4839  *      ...
4840  *      register_netdevice(x1);
4841  *      register_netdevice(x2);
4842  *      ...
4843  *      unregister_netdevice(y1);
4844  *      unregister_netdevice(y2);
4845  *      ...
4846  *      rtnl_unlock();
4847  *      free_netdev(y1);
4848  *      free_netdev(y2);
4849  *
4850  * We are invoked by rtnl_unlock().
4851  * This allows us to deal with problems:
4852  * 1) We can delete sysfs objects which invoke hotplug
4853  *    without deadlocking with linkwatch via keventd.
4854  * 2) Since we run with the RTNL semaphore not held, we can sleep
4855  *    safely in order to wait for the netdev refcnt to drop to zero.
4856  *
4857  * We must not return until all unregister events added during
4858  * the interval the lock was held have been completed.
4859  */
4860 void netdev_run_todo(void)
4861 {
4862         struct list_head list;
4863
4864         /* Snapshot list, allow later requests */
4865         list_replace_init(&net_todo_list, &list);
4866
4867         __rtnl_unlock();
4868
4869         while (!list_empty(&list)) {
4870                 struct net_device *dev
4871                         = list_entry(list.next, struct net_device, todo_list);
4872                 list_del(&dev->todo_list);
4873
4874                 if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) {
4875                         printk(KERN_ERR "network todo '%s' but state %d\n",
4876                                dev->name, dev->reg_state);
4877                         dump_stack();
4878                         continue;
4879                 }
4880
4881                 dev->reg_state = NETREG_UNREGISTERED;
4882
4883                 on_each_cpu(flush_backlog, dev, 1);
4884
4885                 netdev_wait_allrefs(dev);
4886
4887                 /* paranoia */
4888                 BUG_ON(atomic_read(&dev->refcnt));
4889                 WARN_ON(dev->ip_ptr);
4890                 WARN_ON(dev->ip6_ptr);
4891                 WARN_ON(dev->dn_ptr);
4892
4893                 if (dev->destructor)
4894                         dev->destructor(dev);
4895
4896                 /* Free network device */
4897                 kobject_put(&dev->dev.kobj);
4898         }
4899 }
4900
4901 /**
4902  *      dev_get_stats   - get network device statistics
4903  *      @dev: device to get statistics from
4904  *
4905  *      Get network statistics from device. The device driver may provide
4906  *      its own method by setting dev->netdev_ops->get_stats; otherwise
4907  *      the internal statistics structure is used.
4908  */
4909 const struct net_device_stats *dev_get_stats(struct net_device *dev)
4910 {
4911         const struct net_device_ops *ops = dev->netdev_ops;
4912
4913         if (ops->ndo_get_stats)
4914                 return ops->ndo_get_stats(dev);
4915         else {
4916                 unsigned long tx_bytes = 0, tx_packets = 0, tx_dropped = 0;
4917                 struct net_device_stats *stats = &dev->stats;
4918                 unsigned int i;
4919                 struct netdev_queue *txq;
4920
4921                 for (i = 0; i < dev->num_tx_queues; i++) {
4922                         txq = netdev_get_tx_queue(dev, i);
4923                         tx_bytes   += txq->tx_bytes;
4924                         tx_packets += txq->tx_packets;
4925                         tx_dropped += txq->tx_dropped;
4926                 }
4927                 if (tx_bytes || tx_packets || tx_dropped) {
4928                         stats->tx_bytes   = tx_bytes;
4929                         stats->tx_packets = tx_packets;
4930                         stats->tx_dropped = tx_dropped;
4931                 }
4932                 return stats;
4933         }
4934 }
4935 EXPORT_SYMBOL(dev_get_stats);
4936
4937 static void netdev_init_one_queue(struct net_device *dev,
4938                                   struct netdev_queue *queue,
4939                                   void *_unused)
4940 {
4941         queue->dev = dev;
4942 }
4943
4944 static void netdev_init_queues(struct net_device *dev)
4945 {
4946         netdev_init_one_queue(dev, &dev->rx_queue, NULL);
4947         netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL);
4948         spin_lock_init(&dev->tx_global_lock);
4949 }
4950
4951 /**
4952  *      alloc_netdev_mq - allocate network device
4953  *      @sizeof_priv:   size of private data to allocate space for
4954  *      @name:          device name format string
4955  *      @setup:         callback to initialize device
4956  *      @queue_count:   the number of subqueues to allocate
4957  *
4958  *      Allocates a struct net_device with private data area for driver use
4959  *      and performs basic initialization.  Also allocates subquue structs
4960  *      for each queue on the device at the end of the netdevice.
4961  */
4962 struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
4963                 void (*setup)(struct net_device *), unsigned int queue_count)
4964 {
4965         struct netdev_queue *tx;
4966         struct net_device *dev;
4967         size_t alloc_size;
4968         void *p;
4969
4970         BUG_ON(strlen(name) >= sizeof(dev->name));
4971
4972         alloc_size = sizeof(struct net_device);
4973         if (sizeof_priv) {
4974                 /* ensure 32-byte alignment of private area */
4975                 alloc_size = (alloc_size + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST;
4976                 alloc_size += sizeof_priv;
4977         }
4978         /* ensure 32-byte alignment of whole construct */
4979         alloc_size += NETDEV_ALIGN_CONST;
4980
4981         p = kzalloc(alloc_size, GFP_KERNEL);
4982         if (!p) {
4983                 printk(KERN_ERR "alloc_netdev: Unable to allocate device.\n");
4984                 return NULL;
4985         }
4986
4987         tx = kcalloc(queue_count, sizeof(struct netdev_queue), GFP_KERNEL);
4988         if (!tx) {
4989                 printk(KERN_ERR "alloc_netdev: Unable to allocate "
4990                        "tx qdiscs.\n");
4991                 goto free_p;
4992         }
4993
4994         dev = (struct net_device *)
4995                 (((long)p + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST);
4996         dev->padded = (char *)dev - (char *)p;
4997
4998         if (dev_addr_init(dev))
4999                 goto free_tx;
5000
5001         dev_net_set(dev, &init_net);
5002
5003         dev->_tx = tx;
5004         dev->num_tx_queues = queue_count;
5005         dev->real_num_tx_queues = queue_count;
5006
5007         dev->gso_max_size = GSO_MAX_SIZE;
5008
5009         netdev_init_queues(dev);
5010
5011         INIT_LIST_HEAD(&dev->napi_list);
5012         dev->priv_flags = IFF_XMIT_DST_RELEASE;
5013         setup(dev);
5014         strcpy(dev->name, name);
5015         return dev;
5016
5017 free_tx:
5018         kfree(tx);
5019
5020 free_p:
5021         kfree(p);
5022         return NULL;
5023 }
5024 EXPORT_SYMBOL(alloc_netdev_mq);
5025
5026 /**
5027  *      free_netdev - free network device
5028  *      @dev: device
5029  *
5030  *      This function does the last stage of destroying an allocated device
5031  *      interface. The reference to the device object is released.
5032  *      If this is the last reference then it will be freed.
5033  */
5034 void free_netdev(struct net_device *dev)
5035 {
5036         struct napi_struct *p, *n;
5037
5038         release_net(dev_net(dev));
5039
5040         kfree(dev->_tx);
5041
5042         /* Flush device addresses */
5043         dev_addr_flush(dev);
5044
5045         list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
5046                 netif_napi_del(p);
5047
5048         /*  Compatibility with error handling in drivers */
5049         if (dev->reg_state == NETREG_UNINITIALIZED) {
5050                 kfree((char *)dev - dev->padded);
5051                 return;
5052         }
5053
5054         BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
5055         dev->reg_state = NETREG_RELEASED;
5056
5057         /* will free via device release */
5058         put_device(&dev->dev);
5059 }
5060
5061 /**
5062  *      synchronize_net -  Synchronize with packet receive processing
5063  *
5064  *      Wait for packets currently being received to be done.
5065  *      Does not block later packets from starting.
5066  */
5067 void synchronize_net(void)
5068 {
5069         might_sleep();
5070         synchronize_rcu();
5071 }
5072
5073 /**
5074  *      unregister_netdevice - remove device from the kernel
5075  *      @dev: device
5076  *
5077  *      This function shuts down a device interface and removes it
5078  *      from the kernel tables.
5079  *
5080  *      Callers must hold the rtnl semaphore.  You may want
5081  *      unregister_netdev() instead of this.
5082  */
5083
5084 void unregister_netdevice(struct net_device *dev)
5085 {
5086         ASSERT_RTNL();
5087
5088         rollback_registered(dev);
5089         /* Finish processing unregister after unlock */
5090         net_set_todo(dev);
5091 }
5092
5093 /**
5094  *      unregister_netdev - remove device from the kernel
5095  *      @dev: device
5096  *
5097  *      This function shuts down a device interface and removes it
5098  *      from the kernel tables.
5099  *
5100  *      This is just a wrapper for unregister_netdevice that takes
5101  *      the rtnl semaphore.  In general you want to use this and not
5102  *      unregister_netdevice.
5103  */
5104 void unregister_netdev(struct net_device *dev)
5105 {
5106         rtnl_lock();
5107         unregister_netdevice(dev);
5108         rtnl_unlock();
5109 }
5110
5111 EXPORT_SYMBOL(unregister_netdev);
5112
5113 /**
5114  *      dev_change_net_namespace - move device to different nethost namespace
5115  *      @dev: device
5116  *      @net: network namespace
5117  *      @pat: If not NULL name pattern to try if the current device name
5118  *            is already taken in the destination network namespace.
5119  *
5120  *      This function shuts down a device interface and moves it
5121  *      to a new network namespace. On success 0 is returned, on
5122  *      a failure a netagive errno code is returned.
5123  *
5124  *      Callers must hold the rtnl semaphore.
5125  */
5126
5127 int dev_change_net_namespace(struct net_device *dev, struct net *net, const char *pat)
5128 {
5129         char buf[IFNAMSIZ];
5130         const char *destname;
5131         int err;
5132
5133         ASSERT_RTNL();
5134
5135         /* Don't allow namespace local devices to be moved. */
5136         err = -EINVAL;
5137         if (dev->features & NETIF_F_NETNS_LOCAL)
5138                 goto out;
5139
5140 #ifdef CONFIG_SYSFS
5141         /* Don't allow real devices to be moved when sysfs
5142          * is enabled.
5143          */
5144         err = -EINVAL;
5145         if (dev->dev.parent)
5146                 goto out;
5147 #endif
5148
5149         /* Ensure the device has been registrered */
5150         err = -EINVAL;
5151         if (dev->reg_state != NETREG_REGISTERED)
5152                 goto out;
5153
5154         /* Get out if there is nothing todo */
5155         err = 0;
5156         if (net_eq(dev_net(dev), net))
5157                 goto out;
5158
5159         /* Pick the destination device name, and ensure
5160          * we can use it in the destination network namespace.
5161          */
5162         err = -EEXIST;
5163         destname = dev->name;
5164         if (__dev_get_by_name(net, destname)) {
5165                 /* We get here if we can't use the current device name */
5166                 if (!pat)
5167                         goto out;
5168                 if (!dev_valid_name(pat))
5169                         goto out;
5170                 if (strchr(pat, '%')) {
5171                         if (__dev_alloc_name(net, pat, buf) < 0)
5172                                 goto out;
5173                         destname = buf;
5174                 } else
5175                         destname = pat;
5176                 if (__dev_get_by_name(net, destname))
5177                         goto out;
5178         }
5179
5180         /*
5181          * And now a mini version of register_netdevice unregister_netdevice.
5182          */
5183
5184         /* If device is running close it first. */
5185         dev_close(dev);
5186
5187         /* And unlink it from device chain */
5188         err = -ENODEV;
5189         unlist_netdevice(dev);
5190
5191         synchronize_net();
5192
5193         /* Shutdown queueing discipline. */
5194         dev_shutdown(dev);
5195
5196         /* Notify protocols, that we are about to destroy
5197            this device. They should clean all the things.
5198         */
5199         call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
5200
5201         /*
5202          *      Flush the unicast and multicast chains
5203          */
5204         dev_addr_discard(dev);
5205
5206         netdev_unregister_kobject(dev);
5207
5208         /* Actually switch the network namespace */
5209         dev_net_set(dev, net);
5210
5211         /* Assign the new device name */
5212         if (destname != dev->name)
5213                 strcpy(dev->name, destname);
5214
5215         /* If there is an ifindex conflict assign a new one */
5216         if (__dev_get_by_index(net, dev->ifindex)) {
5217                 int iflink = (dev->iflink == dev->ifindex);
5218                 dev->ifindex = dev_new_index(net);
5219                 if (iflink)
5220                         dev->iflink = dev->ifindex;
5221         }
5222
5223         /* Fixup kobjects */
5224         err = netdev_register_kobject(dev);
5225         WARN_ON(err);
5226
5227         /* Add the device back in the hashes */
5228         list_netdevice(dev);
5229
5230         /* Notify protocols, that a new device appeared. */
5231         call_netdevice_notifiers(NETDEV_REGISTER, dev);
5232
5233         synchronize_net();
5234         err = 0;
5235 out:
5236         return err;
5237 }
5238
5239 static int dev_cpu_callback(struct notifier_block *nfb,
5240                             unsigned long action,
5241                             void *ocpu)
5242 {
5243         struct sk_buff **list_skb;
5244         struct Qdisc **list_net;
5245         struct sk_buff *skb;
5246         unsigned int cpu, oldcpu = (unsigned long)ocpu;
5247         struct softnet_data *sd, *oldsd;
5248
5249         if (action != CPU_DEAD && action != CPU_DEAD_FROZEN)
5250                 return NOTIFY_OK;
5251
5252         local_irq_disable();
5253         cpu = smp_processor_id();
5254         sd = &per_cpu(softnet_data, cpu);
5255         oldsd = &per_cpu(softnet_data, oldcpu);
5256
5257         /* Find end of our completion_queue. */
5258         list_skb = &sd->completion_queue;
5259         while (*list_skb)
5260                 list_skb = &(*list_skb)->next;
5261         /* Append completion queue from offline CPU. */
5262         *list_skb = oldsd->completion_queue;
5263         oldsd->completion_queue = NULL;
5264
5265         /* Find end of our output_queue. */
5266         list_net = &sd->output_queue;
5267         while (*list_net)
5268                 list_net = &(*list_net)->next_sched;
5269         /* Append output queue from offline CPU. */
5270         *list_net = oldsd->output_queue;
5271         oldsd->output_queue = NULL;
5272
5273         raise_softirq_irqoff(NET_TX_SOFTIRQ);
5274         local_irq_enable();
5275
5276         /* Process offline CPU's input_pkt_queue */
5277         while ((skb = __skb_dequeue(&oldsd->input_pkt_queue)))
5278                 netif_rx(skb);
5279
5280         return NOTIFY_OK;
5281 }
5282
5283
5284 /**
5285  *      netdev_increment_features - increment feature set by one
5286  *      @all: current feature set
5287  *      @one: new feature set
5288  *      @mask: mask feature set
5289  *
5290  *      Computes a new feature set after adding a device with feature set
5291  *      @one to the master device with current feature set @all.  Will not
5292  *      enable anything that is off in @mask. Returns the new feature set.
5293  */
5294 unsigned long netdev_increment_features(unsigned long all, unsigned long one,
5295                                         unsigned long mask)
5296 {
5297         /* If device needs checksumming, downgrade to it. */
5298         if (all & NETIF_F_NO_CSUM && !(one & NETIF_F_NO_CSUM))
5299                 all ^= NETIF_F_NO_CSUM | (one & NETIF_F_ALL_CSUM);
5300         else if (mask & NETIF_F_ALL_CSUM) {
5301                 /* If one device supports v4/v6 checksumming, set for all. */
5302                 if (one & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM) &&
5303                     !(all & NETIF_F_GEN_CSUM)) {
5304                         all &= ~NETIF_F_ALL_CSUM;
5305                         all |= one & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM);
5306                 }
5307
5308                 /* If one device supports hw checksumming, set for all. */
5309                 if (one & NETIF_F_GEN_CSUM && !(all & NETIF_F_GEN_CSUM)) {
5310                         all &= ~NETIF_F_ALL_CSUM;
5311                         all |= NETIF_F_HW_CSUM;
5312                 }
5313         }
5314
5315         one |= NETIF_F_ALL_CSUM;
5316
5317         one |= all & NETIF_F_ONE_FOR_ALL;
5318         all &= one | NETIF_F_LLTX | NETIF_F_GSO;
5319         all |= one & mask & NETIF_F_ONE_FOR_ALL;
5320
5321         return all;
5322 }
5323 EXPORT_SYMBOL(netdev_increment_features);
5324
5325 static struct hlist_head *netdev_create_hash(void)
5326 {
5327         int i;
5328         struct hlist_head *hash;
5329
5330         hash = kmalloc(sizeof(*hash) * NETDEV_HASHENTRIES, GFP_KERNEL);
5331         if (hash != NULL)
5332                 for (i = 0; i < NETDEV_HASHENTRIES; i++)
5333                         INIT_HLIST_HEAD(&hash[i]);
5334
5335         return hash;
5336 }
5337
5338 /* Initialize per network namespace state */
5339 static int __net_init netdev_init(struct net *net)
5340 {
5341         INIT_LIST_HEAD(&net->dev_base_head);
5342
5343         net->dev_name_head = netdev_create_hash();
5344         if (net->dev_name_head == NULL)
5345                 goto err_name;
5346
5347         net->dev_index_head = netdev_create_hash();
5348         if (net->dev_index_head == NULL)
5349                 goto err_idx;
5350
5351         return 0;
5352
5353 err_idx:
5354         kfree(net->dev_name_head);
5355 err_name:
5356         return -ENOMEM;
5357 }
5358
5359 /**
5360  *      netdev_drivername - network driver for the device
5361  *      @dev: network device
5362  *      @buffer: buffer for resulting name
5363  *      @len: size of buffer
5364  *
5365  *      Determine network driver for device.
5366  */
5367 char *netdev_drivername(const struct net_device *dev, char *buffer, int len)
5368 {
5369         const struct device_driver *driver;
5370         const struct device *parent;
5371
5372         if (len <= 0 || !buffer)
5373                 return buffer;
5374         buffer[0] = 0;
5375
5376         parent = dev->dev.parent;
5377
5378         if (!parent)
5379                 return buffer;
5380
5381         driver = parent->driver;
5382         if (driver && driver->name)
5383                 strlcpy(buffer, driver->name, len);
5384         return buffer;
5385 }
5386
5387 static void __net_exit netdev_exit(struct net *net)
5388 {
5389         kfree(net->dev_name_head);
5390         kfree(net->dev_index_head);
5391 }
5392
5393 static struct pernet_operations __net_initdata netdev_net_ops = {
5394         .init = netdev_init,
5395         .exit = netdev_exit,
5396 };
5397
5398 static void __net_exit default_device_exit(struct net *net)
5399 {
5400         struct net_device *dev;
5401         /*
5402          * Push all migratable of the network devices back to the
5403          * initial network namespace
5404          */
5405         rtnl_lock();
5406 restart:
5407         for_each_netdev(net, dev) {
5408                 int err;
5409                 char fb_name[IFNAMSIZ];
5410
5411                 /* Ignore unmoveable devices (i.e. loopback) */
5412                 if (dev->features & NETIF_F_NETNS_LOCAL)
5413                         continue;
5414
5415                 /* Delete virtual devices */
5416                 if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink) {
5417                         dev->rtnl_link_ops->dellink(dev);
5418                         goto restart;
5419                 }
5420
5421                 /* Push remaing network devices to init_net */
5422                 snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);
5423                 err = dev_change_net_namespace(dev, &init_net, fb_name);
5424                 if (err) {
5425                         printk(KERN_EMERG "%s: failed to move %s to init_net: %d\n",
5426                                 __func__, dev->name, err);
5427                         BUG();
5428                 }
5429                 goto restart;
5430         }
5431         rtnl_unlock();
5432 }
5433
5434 static struct pernet_operations __net_initdata default_device_ops = {
5435         .exit = default_device_exit,
5436 };
5437
5438 /*
5439  *      Initialize the DEV module. At boot time this walks the device list and
5440  *      unhooks any devices that fail to initialise (normally hardware not
5441  *      present) and leaves us with a valid list of present and active devices.
5442  *
5443  */
5444
5445 /*
5446  *       This is called single threaded during boot, so no need
5447  *       to take the rtnl semaphore.
5448  */
5449 static int __init net_dev_init(void)
5450 {
5451         int i, rc = -ENOMEM;
5452
5453         BUG_ON(!dev_boot_phase);
5454
5455         if (dev_proc_init())
5456                 goto out;
5457
5458         if (netdev_kobject_init())
5459                 goto out;
5460
5461         INIT_LIST_HEAD(&ptype_all);
5462         for (i = 0; i < PTYPE_HASH_SIZE; i++)
5463                 INIT_LIST_HEAD(&ptype_base[i]);
5464
5465         if (register_pernet_subsys(&netdev_net_ops))
5466                 goto out;
5467
5468         /*
5469          *      Initialise the packet receive queues.
5470          */
5471
5472         for_each_possible_cpu(i) {
5473                 struct softnet_data *queue;
5474
5475                 queue = &per_cpu(softnet_data, i);
5476                 skb_queue_head_init(&queue->input_pkt_queue);
5477                 queue->completion_queue = NULL;
5478                 INIT_LIST_HEAD(&queue->poll_list);
5479
5480                 queue->backlog.poll = process_backlog;
5481                 queue->backlog.weight = weight_p;
5482                 queue->backlog.gro_list = NULL;
5483                 queue->backlog.gro_count = 0;
5484         }
5485
5486         dev_boot_phase = 0;
5487
5488         /* The loopback device is special if any other network devices
5489          * is present in a network namespace the loopback device must
5490          * be present. Since we now dynamically allocate and free the
5491          * loopback device ensure this invariant is maintained by
5492          * keeping the loopback device as the first device on the
5493          * list of network devices.  Ensuring the loopback devices
5494          * is the first device that appears and the last network device
5495          * that disappears.
5496          */
5497         if (register_pernet_device(&loopback_net_ops))
5498                 goto out;
5499
5500         if (register_pernet_device(&default_device_ops))
5501                 goto out;
5502
5503         open_softirq(NET_TX_SOFTIRQ, net_tx_action);
5504         open_softirq(NET_RX_SOFTIRQ, net_rx_action);
5505
5506         hotcpu_notifier(dev_cpu_callback, 0);
5507         dst_init();
5508         dev_mcast_init();
5509         rc = 0;
5510 out:
5511         return rc;
5512 }
5513
5514 subsys_initcall(net_dev_init);
5515
5516 static int __init initialize_hashrnd(void)
5517 {
5518         get_random_bytes(&skb_tx_hashrnd, sizeof(skb_tx_hashrnd));
5519         return 0;
5520 }
5521
5522 late_initcall_sync(initialize_hashrnd);
5523
5524 EXPORT_SYMBOL(__dev_get_by_index);
5525 EXPORT_SYMBOL(__dev_get_by_name);
5526 EXPORT_SYMBOL(__dev_remove_pack);
5527 EXPORT_SYMBOL(dev_valid_name);
5528 EXPORT_SYMBOL(dev_add_pack);
5529 EXPORT_SYMBOL(dev_alloc_name);
5530 EXPORT_SYMBOL(dev_close);
5531 EXPORT_SYMBOL(dev_get_by_flags);
5532 EXPORT_SYMBOL(dev_get_by_index);
5533 EXPORT_SYMBOL(dev_get_by_name);
5534 EXPORT_SYMBOL(dev_open);
5535 EXPORT_SYMBOL(dev_queue_xmit);
5536 EXPORT_SYMBOL(dev_remove_pack);
5537 EXPORT_SYMBOL(dev_set_allmulti);
5538 EXPORT_SYMBOL(dev_set_promiscuity);
5539 EXPORT_SYMBOL(dev_change_flags);
5540 EXPORT_SYMBOL(dev_set_mtu);
5541 EXPORT_SYMBOL(dev_set_mac_address);
5542 EXPORT_SYMBOL(free_netdev);
5543 EXPORT_SYMBOL(netdev_boot_setup_check);
5544 EXPORT_SYMBOL(netdev_set_master);
5545 EXPORT_SYMBOL(netdev_state_change);
5546 EXPORT_SYMBOL(netif_receive_skb);
5547 EXPORT_SYMBOL(netif_rx);
5548 EXPORT_SYMBOL(register_gifconf);
5549 EXPORT_SYMBOL(register_netdevice);
5550 EXPORT_SYMBOL(register_netdevice_notifier);
5551 EXPORT_SYMBOL(skb_checksum_help);
5552 EXPORT_SYMBOL(synchronize_net);
5553 EXPORT_SYMBOL(unregister_netdevice);
5554 EXPORT_SYMBOL(unregister_netdevice_notifier);
5555 EXPORT_SYMBOL(net_enable_timestamp);
5556 EXPORT_SYMBOL(net_disable_timestamp);
5557 EXPORT_SYMBOL(dev_get_flags);
5558
5559 #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
5560 EXPORT_SYMBOL(br_handle_frame_hook);
5561 EXPORT_SYMBOL(br_fdb_get_hook);
5562 EXPORT_SYMBOL(br_fdb_put_hook);
5563 #endif
5564
5565 EXPORT_SYMBOL(dev_load);
5566
5567 EXPORT_PER_CPU_SYMBOL(softnet_data);