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