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