]> bbs.cooldavid.org Git - net-next-2.6.git/blob - net/core/dev.c
17b1686715010615655e7e14b55508f60304bed7
[net-next-2.6.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 void netdev_bonding_change(struct net_device *dev, unsigned long event)
1088 {
1089         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 /*
2178  * get_rps_cpu is called from netif_receive_skb and returns the target
2179  * CPU from the RPS map of the receiving queue for a given skb.
2180  */
2181 static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb)
2182 {
2183         struct ipv6hdr *ip6;
2184         struct iphdr *ip;
2185         struct netdev_rx_queue *rxqueue;
2186         struct rps_map *map;
2187         int cpu = -1;
2188         u8 ip_proto;
2189         u32 addr1, addr2, ports, ihl;
2190
2191         rcu_read_lock();
2192
2193         if (skb_rx_queue_recorded(skb)) {
2194                 u16 index = skb_get_rx_queue(skb);
2195                 if (unlikely(index >= dev->num_rx_queues)) {
2196                         if (net_ratelimit()) {
2197                                 netdev_warn(dev, "received packet on queue "
2198                                     "%u, but number of RX queues is %u\n",
2199                                      index, dev->num_rx_queues);
2200                         }
2201                         goto done;
2202                 }
2203                 rxqueue = dev->_rx + index;
2204         } else
2205                 rxqueue = dev->_rx;
2206
2207         if (!rxqueue->rps_map)
2208                 goto done;
2209
2210         if (skb->rxhash)
2211                 goto got_hash; /* Skip hash computation on packet header */
2212
2213         switch (skb->protocol) {
2214         case __constant_htons(ETH_P_IP):
2215                 if (!pskb_may_pull(skb, sizeof(*ip)))
2216                         goto done;
2217
2218                 ip = (struct iphdr *) skb->data;
2219                 ip_proto = ip->protocol;
2220                 addr1 = ip->saddr;
2221                 addr2 = ip->daddr;
2222                 ihl = ip->ihl;
2223                 break;
2224         case __constant_htons(ETH_P_IPV6):
2225                 if (!pskb_may_pull(skb, sizeof(*ip6)))
2226                         goto done;
2227
2228                 ip6 = (struct ipv6hdr *) skb->data;
2229                 ip_proto = ip6->nexthdr;
2230                 addr1 = ip6->saddr.s6_addr32[3];
2231                 addr2 = ip6->daddr.s6_addr32[3];
2232                 ihl = (40 >> 2);
2233                 break;
2234         default:
2235                 goto done;
2236         }
2237         ports = 0;
2238         switch (ip_proto) {
2239         case IPPROTO_TCP:
2240         case IPPROTO_UDP:
2241         case IPPROTO_DCCP:
2242         case IPPROTO_ESP:
2243         case IPPROTO_AH:
2244         case IPPROTO_SCTP:
2245         case IPPROTO_UDPLITE:
2246                 if (pskb_may_pull(skb, (ihl * 4) + 4))
2247                         ports = *((u32 *) (skb->data + (ihl * 4)));
2248                 break;
2249
2250         default:
2251                 break;
2252         }
2253
2254         skb->rxhash = jhash_3words(addr1, addr2, ports, hashrnd);
2255         if (!skb->rxhash)
2256                 skb->rxhash = 1;
2257
2258 got_hash:
2259         map = rcu_dereference(rxqueue->rps_map);
2260         if (map) {
2261                 u16 tcpu = map->cpus[((u64) skb->rxhash * map->len) >> 32];
2262
2263                 if (cpu_online(tcpu)) {
2264                         cpu = tcpu;
2265                         goto done;
2266                 }
2267         }
2268
2269 done:
2270         rcu_read_unlock();
2271         return cpu;
2272 }
2273
2274 /*
2275  * This structure holds the per-CPU mask of CPUs for which IPIs are scheduled
2276  * to be sent to kick remote softirq processing.  There are two masks since
2277  * the sending of IPIs must be done with interrupts enabled.  The select field
2278  * indicates the current mask that enqueue_backlog uses to schedule IPIs.
2279  * select is flipped before net_rps_action is called while still under lock,
2280  * net_rps_action then uses the non-selected mask to send the IPIs and clears
2281  * it without conflicting with enqueue_backlog operation.
2282  */
2283 struct rps_remote_softirq_cpus {
2284         cpumask_t mask[2];
2285         int select;
2286 };
2287 static DEFINE_PER_CPU(struct rps_remote_softirq_cpus, rps_remote_softirq_cpus);
2288
2289 /* Called from hardirq (IPI) context */
2290 static void trigger_softirq(void *data)
2291 {
2292         struct softnet_data *queue = data;
2293         __napi_schedule(&queue->backlog);
2294         __get_cpu_var(netdev_rx_stat).received_rps++;
2295 }
2296
2297 /*
2298  * enqueue_to_backlog is called to queue an skb to a per CPU backlog
2299  * queue (may be a remote CPU queue).
2300  */
2301 static int enqueue_to_backlog(struct sk_buff *skb, int cpu)
2302 {
2303         struct softnet_data *queue;
2304         unsigned long flags;
2305
2306         queue = &per_cpu(softnet_data, cpu);
2307
2308         local_irq_save(flags);
2309         __get_cpu_var(netdev_rx_stat).total++;
2310
2311         spin_lock(&queue->input_pkt_queue.lock);
2312         if (queue->input_pkt_queue.qlen <= netdev_max_backlog) {
2313                 if (queue->input_pkt_queue.qlen) {
2314 enqueue:
2315                         __skb_queue_tail(&queue->input_pkt_queue, skb);
2316                         spin_unlock_irqrestore(&queue->input_pkt_queue.lock,
2317                             flags);
2318                         return NET_RX_SUCCESS;
2319                 }
2320
2321                 /* Schedule NAPI for backlog device */
2322                 if (napi_schedule_prep(&queue->backlog)) {
2323                         if (cpu != smp_processor_id()) {
2324                                 struct rps_remote_softirq_cpus *rcpus =
2325                                     &__get_cpu_var(rps_remote_softirq_cpus);
2326
2327                                 cpu_set(cpu, rcpus->mask[rcpus->select]);
2328                                 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
2329                         } else
2330                                 __napi_schedule(&queue->backlog);
2331                 }
2332                 goto enqueue;
2333         }
2334
2335         spin_unlock(&queue->input_pkt_queue.lock);
2336
2337         __get_cpu_var(netdev_rx_stat).dropped++;
2338         local_irq_restore(flags);
2339
2340         kfree_skb(skb);
2341         return NET_RX_DROP;
2342 }
2343
2344 /**
2345  *      netif_rx        -       post buffer to the network code
2346  *      @skb: buffer to post
2347  *
2348  *      This function receives a packet from a device driver and queues it for
2349  *      the upper (protocol) levels to process.  It always succeeds. The buffer
2350  *      may be dropped during processing for congestion control or by the
2351  *      protocol layers.
2352  *
2353  *      return values:
2354  *      NET_RX_SUCCESS  (no congestion)
2355  *      NET_RX_DROP     (packet was dropped)
2356  *
2357  */
2358
2359 int netif_rx(struct sk_buff *skb)
2360 {
2361         int cpu;
2362
2363         /* if netpoll wants it, pretend we never saw it */
2364         if (netpoll_rx(skb))
2365                 return NET_RX_DROP;
2366
2367         if (!skb->tstamp.tv64)
2368                 net_timestamp(skb);
2369
2370         cpu = get_rps_cpu(skb->dev, skb);
2371         if (cpu < 0)
2372                 cpu = smp_processor_id();
2373
2374         return enqueue_to_backlog(skb, cpu);
2375 }
2376 EXPORT_SYMBOL(netif_rx);
2377
2378 int netif_rx_ni(struct sk_buff *skb)
2379 {
2380         int err;
2381
2382         preempt_disable();
2383         err = netif_rx(skb);
2384         if (local_softirq_pending())
2385                 do_softirq();
2386         preempt_enable();
2387
2388         return err;
2389 }
2390 EXPORT_SYMBOL(netif_rx_ni);
2391
2392 static void net_tx_action(struct softirq_action *h)
2393 {
2394         struct softnet_data *sd = &__get_cpu_var(softnet_data);
2395
2396         if (sd->completion_queue) {
2397                 struct sk_buff *clist;
2398
2399                 local_irq_disable();
2400                 clist = sd->completion_queue;
2401                 sd->completion_queue = NULL;
2402                 local_irq_enable();
2403
2404                 while (clist) {
2405                         struct sk_buff *skb = clist;
2406                         clist = clist->next;
2407
2408                         WARN_ON(atomic_read(&skb->users));
2409                         __kfree_skb(skb);
2410                 }
2411         }
2412
2413         if (sd->output_queue) {
2414                 struct Qdisc *head;
2415
2416                 local_irq_disable();
2417                 head = sd->output_queue;
2418                 sd->output_queue = NULL;
2419                 local_irq_enable();
2420
2421                 while (head) {
2422                         struct Qdisc *q = head;
2423                         spinlock_t *root_lock;
2424
2425                         head = head->next_sched;
2426
2427                         root_lock = qdisc_lock(q);
2428                         if (spin_trylock(root_lock)) {
2429                                 smp_mb__before_clear_bit();
2430                                 clear_bit(__QDISC_STATE_SCHED,
2431                                           &q->state);
2432                                 qdisc_run(q);
2433                                 spin_unlock(root_lock);
2434                         } else {
2435                                 if (!test_bit(__QDISC_STATE_DEACTIVATED,
2436                                               &q->state)) {
2437                                         __netif_reschedule(q);
2438                                 } else {
2439                                         smp_mb__before_clear_bit();
2440                                         clear_bit(__QDISC_STATE_SCHED,
2441                                                   &q->state);
2442                                 }
2443                         }
2444                 }
2445         }
2446 }
2447
2448 static inline int deliver_skb(struct sk_buff *skb,
2449                               struct packet_type *pt_prev,
2450                               struct net_device *orig_dev)
2451 {
2452         atomic_inc(&skb->users);
2453         return pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
2454 }
2455
2456 #if defined(CONFIG_BRIDGE) || defined (CONFIG_BRIDGE_MODULE)
2457
2458 #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
2459 /* This hook is defined here for ATM LANE */
2460 int (*br_fdb_test_addr_hook)(struct net_device *dev,
2461                              unsigned char *addr) __read_mostly;
2462 EXPORT_SYMBOL_GPL(br_fdb_test_addr_hook);
2463 #endif
2464
2465 /*
2466  * If bridge module is loaded call bridging hook.
2467  *  returns NULL if packet was consumed.
2468  */
2469 struct sk_buff *(*br_handle_frame_hook)(struct net_bridge_port *p,
2470                                         struct sk_buff *skb) __read_mostly;
2471 EXPORT_SYMBOL_GPL(br_handle_frame_hook);
2472
2473 static inline struct sk_buff *handle_bridge(struct sk_buff *skb,
2474                                             struct packet_type **pt_prev, int *ret,
2475                                             struct net_device *orig_dev)
2476 {
2477         struct net_bridge_port *port;
2478
2479         if (skb->pkt_type == PACKET_LOOPBACK ||
2480             (port = rcu_dereference(skb->dev->br_port)) == NULL)
2481                 return skb;
2482
2483         if (*pt_prev) {
2484                 *ret = deliver_skb(skb, *pt_prev, orig_dev);
2485                 *pt_prev = NULL;
2486         }
2487
2488         return br_handle_frame_hook(port, skb);
2489 }
2490 #else
2491 #define handle_bridge(skb, pt_prev, ret, orig_dev)      (skb)
2492 #endif
2493
2494 #if defined(CONFIG_MACVLAN) || defined(CONFIG_MACVLAN_MODULE)
2495 struct sk_buff *(*macvlan_handle_frame_hook)(struct sk_buff *skb) __read_mostly;
2496 EXPORT_SYMBOL_GPL(macvlan_handle_frame_hook);
2497
2498 static inline struct sk_buff *handle_macvlan(struct sk_buff *skb,
2499                                              struct packet_type **pt_prev,
2500                                              int *ret,
2501                                              struct net_device *orig_dev)
2502 {
2503         if (skb->dev->macvlan_port == NULL)
2504                 return skb;
2505
2506         if (*pt_prev) {
2507                 *ret = deliver_skb(skb, *pt_prev, orig_dev);
2508                 *pt_prev = NULL;
2509         }
2510         return macvlan_handle_frame_hook(skb);
2511 }
2512 #else
2513 #define handle_macvlan(skb, pt_prev, ret, orig_dev)     (skb)
2514 #endif
2515
2516 #ifdef CONFIG_NET_CLS_ACT
2517 /* TODO: Maybe we should just force sch_ingress to be compiled in
2518  * when CONFIG_NET_CLS_ACT is? otherwise some useless instructions
2519  * a compare and 2 stores extra right now if we dont have it on
2520  * but have CONFIG_NET_CLS_ACT
2521  * NOTE: This doesnt stop any functionality; if you dont have
2522  * the ingress scheduler, you just cant add policies on ingress.
2523  *
2524  */
2525 static int ing_filter(struct sk_buff *skb)
2526 {
2527         struct net_device *dev = skb->dev;
2528         u32 ttl = G_TC_RTTL(skb->tc_verd);
2529         struct netdev_queue *rxq;
2530         int result = TC_ACT_OK;
2531         struct Qdisc *q;
2532
2533         if (MAX_RED_LOOP < ttl++) {
2534                 printk(KERN_WARNING
2535                        "Redir loop detected Dropping packet (%d->%d)\n",
2536                        skb->skb_iif, dev->ifindex);
2537                 return TC_ACT_SHOT;
2538         }
2539
2540         skb->tc_verd = SET_TC_RTTL(skb->tc_verd, ttl);
2541         skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_INGRESS);
2542
2543         rxq = &dev->rx_queue;
2544
2545         q = rxq->qdisc;
2546         if (q != &noop_qdisc) {
2547                 spin_lock(qdisc_lock(q));
2548                 if (likely(!test_bit(__QDISC_STATE_DEACTIVATED, &q->state)))
2549                         result = qdisc_enqueue_root(skb, q);
2550                 spin_unlock(qdisc_lock(q));
2551         }
2552
2553         return result;
2554 }
2555
2556 static inline struct sk_buff *handle_ing(struct sk_buff *skb,
2557                                          struct packet_type **pt_prev,
2558                                          int *ret, struct net_device *orig_dev)
2559 {
2560         if (skb->dev->rx_queue.qdisc == &noop_qdisc)
2561                 goto out;
2562
2563         if (*pt_prev) {
2564                 *ret = deliver_skb(skb, *pt_prev, orig_dev);
2565                 *pt_prev = NULL;
2566         } else {
2567                 /* Huh? Why does turning on AF_PACKET affect this? */
2568                 skb->tc_verd = SET_TC_OK2MUNGE(skb->tc_verd);
2569         }
2570
2571         switch (ing_filter(skb)) {
2572         case TC_ACT_SHOT:
2573         case TC_ACT_STOLEN:
2574                 kfree_skb(skb);
2575                 return NULL;
2576         }
2577
2578 out:
2579         skb->tc_verd = 0;
2580         return skb;
2581 }
2582 #endif
2583
2584 /*
2585  *      netif_nit_deliver - deliver received packets to network taps
2586  *      @skb: buffer
2587  *
2588  *      This function is used to deliver incoming packets to network
2589  *      taps. It should be used when the normal netif_receive_skb path
2590  *      is bypassed, for example because of VLAN acceleration.
2591  */
2592 void netif_nit_deliver(struct sk_buff *skb)
2593 {
2594         struct packet_type *ptype;
2595
2596         if (list_empty(&ptype_all))
2597                 return;
2598
2599         skb_reset_network_header(skb);
2600         skb_reset_transport_header(skb);
2601         skb->mac_len = skb->network_header - skb->mac_header;
2602
2603         rcu_read_lock();
2604         list_for_each_entry_rcu(ptype, &ptype_all, list) {
2605                 if (!ptype->dev || ptype->dev == skb->dev)
2606                         deliver_skb(skb, ptype, skb->dev);
2607         }
2608         rcu_read_unlock();
2609 }
2610
2611 int __netif_receive_skb(struct sk_buff *skb)
2612 {
2613         struct packet_type *ptype, *pt_prev;
2614         struct net_device *orig_dev;
2615         struct net_device *null_or_orig;
2616         struct net_device *null_or_bond;
2617         int ret = NET_RX_DROP;
2618         __be16 type;
2619
2620         if (!skb->tstamp.tv64)
2621                 net_timestamp(skb);
2622
2623         if (vlan_tx_tag_present(skb) && vlan_hwaccel_do_receive(skb))
2624                 return NET_RX_SUCCESS;
2625
2626         /* if we've gotten here through NAPI, check netpoll */
2627         if (netpoll_receive_skb(skb))
2628                 return NET_RX_DROP;
2629
2630         if (!skb->skb_iif)
2631                 skb->skb_iif = skb->dev->ifindex;
2632
2633         null_or_orig = NULL;
2634         orig_dev = skb->dev;
2635         if (orig_dev->master) {
2636                 if (skb_bond_should_drop(skb))
2637                         null_or_orig = orig_dev; /* deliver only exact match */
2638                 else
2639                         skb->dev = orig_dev->master;
2640         }
2641
2642         __get_cpu_var(netdev_rx_stat).total++;
2643
2644         skb_reset_network_header(skb);
2645         skb_reset_transport_header(skb);
2646         skb->mac_len = skb->network_header - skb->mac_header;
2647
2648         pt_prev = NULL;
2649
2650         rcu_read_lock();
2651
2652 #ifdef CONFIG_NET_CLS_ACT
2653         if (skb->tc_verd & TC_NCLS) {
2654                 skb->tc_verd = CLR_TC_NCLS(skb->tc_verd);
2655                 goto ncls;
2656         }
2657 #endif
2658
2659         list_for_each_entry_rcu(ptype, &ptype_all, list) {
2660                 if (ptype->dev == null_or_orig || ptype->dev == skb->dev ||
2661                     ptype->dev == orig_dev) {
2662                         if (pt_prev)
2663                                 ret = deliver_skb(skb, pt_prev, orig_dev);
2664                         pt_prev = ptype;
2665                 }
2666         }
2667
2668 #ifdef CONFIG_NET_CLS_ACT
2669         skb = handle_ing(skb, &pt_prev, &ret, orig_dev);
2670         if (!skb)
2671                 goto out;
2672 ncls:
2673 #endif
2674
2675         skb = handle_bridge(skb, &pt_prev, &ret, orig_dev);
2676         if (!skb)
2677                 goto out;
2678         skb = handle_macvlan(skb, &pt_prev, &ret, orig_dev);
2679         if (!skb)
2680                 goto out;
2681
2682         /*
2683          * Make sure frames received on VLAN interfaces stacked on
2684          * bonding interfaces still make their way to any base bonding
2685          * device that may have registered for a specific ptype.  The
2686          * handler may have to adjust skb->dev and orig_dev.
2687          */
2688         null_or_bond = NULL;
2689         if ((skb->dev->priv_flags & IFF_802_1Q_VLAN) &&
2690             (vlan_dev_real_dev(skb->dev)->priv_flags & IFF_BONDING)) {
2691                 null_or_bond = vlan_dev_real_dev(skb->dev);
2692         }
2693
2694         type = skb->protocol;
2695         list_for_each_entry_rcu(ptype,
2696                         &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
2697                 if (ptype->type == type && (ptype->dev == null_or_orig ||
2698                      ptype->dev == skb->dev || ptype->dev == orig_dev ||
2699                      ptype->dev == null_or_bond)) {
2700                         if (pt_prev)
2701                                 ret = deliver_skb(skb, pt_prev, orig_dev);
2702                         pt_prev = ptype;
2703                 }
2704         }
2705
2706         if (pt_prev) {
2707                 ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
2708         } else {
2709                 kfree_skb(skb);
2710                 /* Jamal, now you will not able to escape explaining
2711                  * me how you were going to use this. :-)
2712                  */
2713                 ret = NET_RX_DROP;
2714         }
2715
2716 out:
2717         rcu_read_unlock();
2718         return ret;
2719 }
2720
2721 /**
2722  *      netif_receive_skb - process receive buffer from network
2723  *      @skb: buffer to process
2724  *
2725  *      netif_receive_skb() is the main receive data processing function.
2726  *      It always succeeds. The buffer may be dropped during processing
2727  *      for congestion control or by the protocol layers.
2728  *
2729  *      This function may only be called from softirq context and interrupts
2730  *      should be enabled.
2731  *
2732  *      Return values (usually ignored):
2733  *      NET_RX_SUCCESS: no congestion
2734  *      NET_RX_DROP: packet was dropped
2735  */
2736 int netif_receive_skb(struct sk_buff *skb)
2737 {
2738         int cpu;
2739
2740         cpu = get_rps_cpu(skb->dev, skb);
2741
2742         if (cpu < 0)
2743                 return __netif_receive_skb(skb);
2744         else
2745                 return enqueue_to_backlog(skb, cpu);
2746 }
2747 EXPORT_SYMBOL(netif_receive_skb);
2748
2749 /* Network device is going away, flush any packets still pending  */
2750 static void flush_backlog(void *arg)
2751 {
2752         struct net_device *dev = arg;
2753         struct softnet_data *queue = &__get_cpu_var(softnet_data);
2754         struct sk_buff *skb, *tmp;
2755
2756         skb_queue_walk_safe(&queue->input_pkt_queue, skb, tmp)
2757                 if (skb->dev == dev) {
2758                         __skb_unlink(skb, &queue->input_pkt_queue);
2759                         kfree_skb(skb);
2760                 }
2761 }
2762
2763 static int napi_gro_complete(struct sk_buff *skb)
2764 {
2765         struct packet_type *ptype;
2766         __be16 type = skb->protocol;
2767         struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK];
2768         int err = -ENOENT;
2769
2770         if (NAPI_GRO_CB(skb)->count == 1) {
2771                 skb_shinfo(skb)->gso_size = 0;
2772                 goto out;
2773         }
2774
2775         rcu_read_lock();
2776         list_for_each_entry_rcu(ptype, head, list) {
2777                 if (ptype->type != type || ptype->dev || !ptype->gro_complete)
2778                         continue;
2779
2780                 err = ptype->gro_complete(skb);
2781                 break;
2782         }
2783         rcu_read_unlock();
2784
2785         if (err) {
2786                 WARN_ON(&ptype->list == head);
2787                 kfree_skb(skb);
2788                 return NET_RX_SUCCESS;
2789         }
2790
2791 out:
2792         return netif_receive_skb(skb);
2793 }
2794
2795 static void napi_gro_flush(struct napi_struct *napi)
2796 {
2797         struct sk_buff *skb, *next;
2798
2799         for (skb = napi->gro_list; skb; skb = next) {
2800                 next = skb->next;
2801                 skb->next = NULL;
2802                 napi_gro_complete(skb);
2803         }
2804
2805         napi->gro_count = 0;
2806         napi->gro_list = NULL;
2807 }
2808
2809 enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
2810 {
2811         struct sk_buff **pp = NULL;
2812         struct packet_type *ptype;
2813         __be16 type = skb->protocol;
2814         struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK];
2815         int same_flow;
2816         int mac_len;
2817         enum gro_result ret;
2818
2819         if (!(skb->dev->features & NETIF_F_GRO))
2820                 goto normal;
2821
2822         if (skb_is_gso(skb) || skb_has_frags(skb))
2823                 goto normal;
2824
2825         rcu_read_lock();
2826         list_for_each_entry_rcu(ptype, head, list) {
2827                 if (ptype->type != type || ptype->dev || !ptype->gro_receive)
2828                         continue;
2829
2830                 skb_set_network_header(skb, skb_gro_offset(skb));
2831                 mac_len = skb->network_header - skb->mac_header;
2832                 skb->mac_len = mac_len;
2833                 NAPI_GRO_CB(skb)->same_flow = 0;
2834                 NAPI_GRO_CB(skb)->flush = 0;
2835                 NAPI_GRO_CB(skb)->free = 0;
2836
2837                 pp = ptype->gro_receive(&napi->gro_list, skb);
2838                 break;
2839         }
2840         rcu_read_unlock();
2841
2842         if (&ptype->list == head)
2843                 goto normal;
2844
2845         same_flow = NAPI_GRO_CB(skb)->same_flow;
2846         ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED;
2847
2848         if (pp) {
2849                 struct sk_buff *nskb = *pp;
2850
2851                 *pp = nskb->next;
2852                 nskb->next = NULL;
2853                 napi_gro_complete(nskb);
2854                 napi->gro_count--;
2855         }
2856
2857         if (same_flow)
2858                 goto ok;
2859
2860         if (NAPI_GRO_CB(skb)->flush || napi->gro_count >= MAX_GRO_SKBS)
2861                 goto normal;
2862
2863         napi->gro_count++;
2864         NAPI_GRO_CB(skb)->count = 1;
2865         skb_shinfo(skb)->gso_size = skb_gro_len(skb);
2866         skb->next = napi->gro_list;
2867         napi->gro_list = skb;
2868         ret = GRO_HELD;
2869
2870 pull:
2871         if (skb_headlen(skb) < skb_gro_offset(skb)) {
2872                 int grow = skb_gro_offset(skb) - skb_headlen(skb);
2873
2874                 BUG_ON(skb->end - skb->tail < grow);
2875
2876                 memcpy(skb_tail_pointer(skb), NAPI_GRO_CB(skb)->frag0, grow);
2877
2878                 skb->tail += grow;
2879                 skb->data_len -= grow;
2880
2881                 skb_shinfo(skb)->frags[0].page_offset += grow;
2882                 skb_shinfo(skb)->frags[0].size -= grow;
2883
2884                 if (unlikely(!skb_shinfo(skb)->frags[0].size)) {
2885                         put_page(skb_shinfo(skb)->frags[0].page);
2886                         memmove(skb_shinfo(skb)->frags,
2887                                 skb_shinfo(skb)->frags + 1,
2888                                 --skb_shinfo(skb)->nr_frags);
2889                 }
2890         }
2891
2892 ok:
2893         return ret;
2894
2895 normal:
2896         ret = GRO_NORMAL;
2897         goto pull;
2898 }
2899 EXPORT_SYMBOL(dev_gro_receive);
2900
2901 static gro_result_t
2902 __napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
2903 {
2904         struct sk_buff *p;
2905
2906         if (netpoll_rx_on(skb))
2907                 return GRO_NORMAL;
2908
2909         for (p = napi->gro_list; p; p = p->next) {
2910                 NAPI_GRO_CB(p)->same_flow =
2911                         (p->dev == skb->dev) &&
2912                         !compare_ether_header(skb_mac_header(p),
2913                                               skb_gro_mac_header(skb));
2914                 NAPI_GRO_CB(p)->flush = 0;
2915         }
2916
2917         return dev_gro_receive(napi, skb);
2918 }
2919
2920 gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb)
2921 {
2922         switch (ret) {
2923         case GRO_NORMAL:
2924                 if (netif_receive_skb(skb))
2925                         ret = GRO_DROP;
2926                 break;
2927
2928         case GRO_DROP:
2929         case GRO_MERGED_FREE:
2930                 kfree_skb(skb);
2931                 break;
2932
2933         case GRO_HELD:
2934         case GRO_MERGED:
2935                 break;
2936         }
2937
2938         return ret;
2939 }
2940 EXPORT_SYMBOL(napi_skb_finish);
2941
2942 void skb_gro_reset_offset(struct sk_buff *skb)
2943 {
2944         NAPI_GRO_CB(skb)->data_offset = 0;
2945         NAPI_GRO_CB(skb)->frag0 = NULL;
2946         NAPI_GRO_CB(skb)->frag0_len = 0;
2947
2948         if (skb->mac_header == skb->tail &&
2949             !PageHighMem(skb_shinfo(skb)->frags[0].page)) {
2950                 NAPI_GRO_CB(skb)->frag0 =
2951                         page_address(skb_shinfo(skb)->frags[0].page) +
2952                         skb_shinfo(skb)->frags[0].page_offset;
2953                 NAPI_GRO_CB(skb)->frag0_len = skb_shinfo(skb)->frags[0].size;
2954         }
2955 }
2956 EXPORT_SYMBOL(skb_gro_reset_offset);
2957
2958 gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
2959 {
2960         skb_gro_reset_offset(skb);
2961
2962         return napi_skb_finish(__napi_gro_receive(napi, skb), skb);
2963 }
2964 EXPORT_SYMBOL(napi_gro_receive);
2965
2966 void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb)
2967 {
2968         __skb_pull(skb, skb_headlen(skb));
2969         skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb));
2970
2971         napi->skb = skb;
2972 }
2973 EXPORT_SYMBOL(napi_reuse_skb);
2974
2975 struct sk_buff *napi_get_frags(struct napi_struct *napi)
2976 {
2977         struct sk_buff *skb = napi->skb;
2978
2979         if (!skb) {
2980                 skb = netdev_alloc_skb_ip_align(napi->dev, GRO_MAX_HEAD);
2981                 if (skb)
2982                         napi->skb = skb;
2983         }
2984         return skb;
2985 }
2986 EXPORT_SYMBOL(napi_get_frags);
2987
2988 gro_result_t napi_frags_finish(struct napi_struct *napi, struct sk_buff *skb,
2989                                gro_result_t ret)
2990 {
2991         switch (ret) {
2992         case GRO_NORMAL:
2993         case GRO_HELD:
2994                 skb->protocol = eth_type_trans(skb, skb->dev);
2995
2996                 if (ret == GRO_HELD)
2997                         skb_gro_pull(skb, -ETH_HLEN);
2998                 else if (netif_receive_skb(skb))
2999                         ret = GRO_DROP;
3000                 break;
3001
3002         case GRO_DROP:
3003         case GRO_MERGED_FREE:
3004                 napi_reuse_skb(napi, skb);
3005                 break;
3006
3007         case GRO_MERGED:
3008                 break;
3009         }
3010
3011         return ret;
3012 }
3013 EXPORT_SYMBOL(napi_frags_finish);
3014
3015 struct sk_buff *napi_frags_skb(struct napi_struct *napi)
3016 {
3017         struct sk_buff *skb = napi->skb;
3018         struct ethhdr *eth;
3019         unsigned int hlen;
3020         unsigned int off;
3021
3022         napi->skb = NULL;
3023
3024         skb_reset_mac_header(skb);
3025         skb_gro_reset_offset(skb);
3026
3027         off = skb_gro_offset(skb);
3028         hlen = off + sizeof(*eth);
3029         eth = skb_gro_header_fast(skb, off);
3030         if (skb_gro_header_hard(skb, hlen)) {
3031                 eth = skb_gro_header_slow(skb, hlen, off);
3032                 if (unlikely(!eth)) {
3033                         napi_reuse_skb(napi, skb);
3034                         skb = NULL;
3035                         goto out;
3036                 }
3037         }
3038
3039         skb_gro_pull(skb, sizeof(*eth));
3040
3041         /*
3042          * This works because the only protocols we care about don't require
3043          * special handling.  We'll fix it up properly at the end.
3044          */
3045         skb->protocol = eth->h_proto;
3046
3047 out:
3048         return skb;
3049 }
3050 EXPORT_SYMBOL(napi_frags_skb);
3051
3052 gro_result_t napi_gro_frags(struct napi_struct *napi)
3053 {
3054         struct sk_buff *skb = napi_frags_skb(napi);
3055
3056         if (!skb)
3057                 return GRO_DROP;
3058
3059         return napi_frags_finish(napi, skb, __napi_gro_receive(napi, skb));
3060 }
3061 EXPORT_SYMBOL(napi_gro_frags);
3062
3063 static int process_backlog(struct napi_struct *napi, int quota)
3064 {
3065         int work = 0;
3066         struct softnet_data *queue = &__get_cpu_var(softnet_data);
3067         unsigned long start_time = jiffies;
3068
3069         napi->weight = weight_p;
3070         do {
3071                 struct sk_buff *skb;
3072
3073                 spin_lock_irq(&queue->input_pkt_queue.lock);
3074                 skb = __skb_dequeue(&queue->input_pkt_queue);
3075                 if (!skb) {
3076                         __napi_complete(napi);
3077                         spin_unlock_irq(&queue->input_pkt_queue.lock);
3078                         break;
3079                 }
3080                 spin_unlock_irq(&queue->input_pkt_queue.lock);
3081
3082                 __netif_receive_skb(skb);
3083         } while (++work < quota && jiffies == start_time);
3084
3085         return work;
3086 }
3087
3088 /**
3089  * __napi_schedule - schedule for receive
3090  * @n: entry to schedule
3091  *
3092  * The entry's receive function will be scheduled to run
3093  */
3094 void __napi_schedule(struct napi_struct *n)
3095 {
3096         unsigned long flags;
3097
3098         local_irq_save(flags);
3099         list_add_tail(&n->poll_list, &__get_cpu_var(softnet_data).poll_list);
3100         __raise_softirq_irqoff(NET_RX_SOFTIRQ);
3101         local_irq_restore(flags);
3102 }
3103 EXPORT_SYMBOL(__napi_schedule);
3104
3105 void __napi_complete(struct napi_struct *n)
3106 {
3107         BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
3108         BUG_ON(n->gro_list);
3109
3110         list_del(&n->poll_list);
3111         smp_mb__before_clear_bit();
3112         clear_bit(NAPI_STATE_SCHED, &n->state);
3113 }
3114 EXPORT_SYMBOL(__napi_complete);
3115
3116 void napi_complete(struct napi_struct *n)
3117 {
3118         unsigned long flags;
3119
3120         /*
3121          * don't let napi dequeue from the cpu poll list
3122          * just in case its running on a different cpu
3123          */
3124         if (unlikely(test_bit(NAPI_STATE_NPSVC, &n->state)))
3125                 return;
3126
3127         napi_gro_flush(n);
3128         local_irq_save(flags);
3129         __napi_complete(n);
3130         local_irq_restore(flags);
3131 }
3132 EXPORT_SYMBOL(napi_complete);
3133
3134 void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
3135                     int (*poll)(struct napi_struct *, int), int weight)
3136 {
3137         INIT_LIST_HEAD(&napi->poll_list);
3138         napi->gro_count = 0;
3139         napi->gro_list = NULL;
3140         napi->skb = NULL;
3141         napi->poll = poll;
3142         napi->weight = weight;
3143         list_add(&napi->dev_list, &dev->napi_list);
3144         napi->dev = dev;
3145 #ifdef CONFIG_NETPOLL
3146         spin_lock_init(&napi->poll_lock);
3147         napi->poll_owner = -1;
3148 #endif
3149         set_bit(NAPI_STATE_SCHED, &napi->state);
3150 }
3151 EXPORT_SYMBOL(netif_napi_add);
3152
3153 void netif_napi_del(struct napi_struct *napi)
3154 {
3155         struct sk_buff *skb, *next;
3156
3157         list_del_init(&napi->dev_list);
3158         napi_free_frags(napi);
3159
3160         for (skb = napi->gro_list; skb; skb = next) {
3161                 next = skb->next;
3162                 skb->next = NULL;
3163                 kfree_skb(skb);
3164         }
3165
3166         napi->gro_list = NULL;
3167         napi->gro_count = 0;
3168 }
3169 EXPORT_SYMBOL(netif_napi_del);
3170
3171 /*
3172  * net_rps_action sends any pending IPI's for rps.  This is only called from
3173  * softirq and interrupts must be enabled.
3174  */
3175 static void net_rps_action(cpumask_t *mask)
3176 {
3177         int cpu;
3178
3179         /* Send pending IPI's to kick RPS processing on remote cpus. */
3180         for_each_cpu_mask_nr(cpu, *mask) {
3181                 struct softnet_data *queue = &per_cpu(softnet_data, cpu);
3182                 if (cpu_online(cpu))
3183                         __smp_call_function_single(cpu, &queue->csd, 0);
3184         }
3185         cpus_clear(*mask);
3186 }
3187
3188 static void net_rx_action(struct softirq_action *h)
3189 {
3190         struct list_head *list = &__get_cpu_var(softnet_data).poll_list;
3191         unsigned long time_limit = jiffies + 2;
3192         int budget = netdev_budget;
3193         void *have;
3194         int select;
3195         struct rps_remote_softirq_cpus *rcpus;
3196
3197         local_irq_disable();
3198
3199         while (!list_empty(list)) {
3200                 struct napi_struct *n;
3201                 int work, weight;
3202
3203                 /* If softirq window is exhuasted then punt.
3204                  * Allow this to run for 2 jiffies since which will allow
3205                  * an average latency of 1.5/HZ.
3206                  */
3207                 if (unlikely(budget <= 0 || time_after(jiffies, time_limit)))
3208                         goto softnet_break;
3209
3210                 local_irq_enable();
3211
3212                 /* Even though interrupts have been re-enabled, this
3213                  * access is safe because interrupts can only add new
3214                  * entries to the tail of this list, and only ->poll()
3215                  * calls can remove this head entry from the list.
3216                  */
3217                 n = list_first_entry(list, struct napi_struct, poll_list);
3218
3219                 have = netpoll_poll_lock(n);
3220
3221                 weight = n->weight;
3222
3223                 /* This NAPI_STATE_SCHED test is for avoiding a race
3224                  * with netpoll's poll_napi().  Only the entity which
3225                  * obtains the lock and sees NAPI_STATE_SCHED set will
3226                  * actually make the ->poll() call.  Therefore we avoid
3227                  * accidently calling ->poll() when NAPI is not scheduled.
3228                  */
3229                 work = 0;
3230                 if (test_bit(NAPI_STATE_SCHED, &n->state)) {
3231                         work = n->poll(n, weight);
3232                         trace_napi_poll(n);
3233                 }
3234
3235                 WARN_ON_ONCE(work > weight);
3236
3237                 budget -= work;
3238
3239                 local_irq_disable();
3240
3241                 /* Drivers must not modify the NAPI state if they
3242                  * consume the entire weight.  In such cases this code
3243                  * still "owns" the NAPI instance and therefore can
3244                  * move the instance around on the list at-will.
3245                  */
3246                 if (unlikely(work == weight)) {
3247                         if (unlikely(napi_disable_pending(n))) {
3248                                 local_irq_enable();
3249                                 napi_complete(n);
3250                                 local_irq_disable();
3251                         } else
3252                                 list_move_tail(&n->poll_list, list);
3253                 }
3254
3255                 netpoll_poll_unlock(have);
3256         }
3257 out:
3258         rcpus = &__get_cpu_var(rps_remote_softirq_cpus);
3259         select = rcpus->select;
3260         rcpus->select ^= 1;
3261
3262         local_irq_enable();
3263
3264         net_rps_action(&rcpus->mask[select]);
3265
3266 #ifdef CONFIG_NET_DMA
3267         /*
3268          * There may not be any more sk_buffs coming right now, so push
3269          * any pending DMA copies to hardware
3270          */
3271         dma_issue_pending_all();
3272 #endif
3273
3274         return;
3275
3276 softnet_break:
3277         __get_cpu_var(netdev_rx_stat).time_squeeze++;
3278         __raise_softirq_irqoff(NET_RX_SOFTIRQ);
3279         goto out;
3280 }
3281
3282 static gifconf_func_t *gifconf_list[NPROTO];
3283
3284 /**
3285  *      register_gifconf        -       register a SIOCGIF handler
3286  *      @family: Address family
3287  *      @gifconf: Function handler
3288  *
3289  *      Register protocol dependent address dumping routines. The handler
3290  *      that is passed must not be freed or reused until it has been replaced
3291  *      by another handler.
3292  */
3293 int register_gifconf(unsigned int family, gifconf_func_t *gifconf)
3294 {
3295         if (family >= NPROTO)
3296                 return -EINVAL;
3297         gifconf_list[family] = gifconf;
3298         return 0;
3299 }
3300 EXPORT_SYMBOL(register_gifconf);
3301
3302
3303 /*
3304  *      Map an interface index to its name (SIOCGIFNAME)
3305  */
3306
3307 /*
3308  *      We need this ioctl for efficient implementation of the
3309  *      if_indextoname() function required by the IPv6 API.  Without
3310  *      it, we would have to search all the interfaces to find a
3311  *      match.  --pb
3312  */
3313
3314 static int dev_ifname(struct net *net, struct ifreq __user *arg)
3315 {
3316         struct net_device *dev;
3317         struct ifreq ifr;
3318
3319         /*
3320          *      Fetch the caller's info block.
3321          */
3322
3323         if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
3324                 return -EFAULT;
3325
3326         rcu_read_lock();
3327         dev = dev_get_by_index_rcu(net, ifr.ifr_ifindex);
3328         if (!dev) {
3329                 rcu_read_unlock();
3330                 return -ENODEV;
3331         }
3332
3333         strcpy(ifr.ifr_name, dev->name);
3334         rcu_read_unlock();
3335
3336         if (copy_to_user(arg, &ifr, sizeof(struct ifreq)))
3337                 return -EFAULT;
3338         return 0;
3339 }
3340
3341 /*
3342  *      Perform a SIOCGIFCONF call. This structure will change
3343  *      size eventually, and there is nothing I can do about it.
3344  *      Thus we will need a 'compatibility mode'.
3345  */
3346
3347 static int dev_ifconf(struct net *net, char __user *arg)
3348 {
3349         struct ifconf ifc;
3350         struct net_device *dev;
3351         char __user *pos;
3352         int len;
3353         int total;
3354         int i;
3355
3356         /*
3357          *      Fetch the caller's info block.
3358          */
3359
3360         if (copy_from_user(&ifc, arg, sizeof(struct ifconf)))
3361                 return -EFAULT;
3362
3363         pos = ifc.ifc_buf;
3364         len = ifc.ifc_len;
3365
3366         /*
3367          *      Loop over the interfaces, and write an info block for each.
3368          */
3369
3370         total = 0;
3371         for_each_netdev(net, dev) {
3372                 for (i = 0; i < NPROTO; i++) {
3373                         if (gifconf_list[i]) {
3374                                 int done;
3375                                 if (!pos)
3376                                         done = gifconf_list[i](dev, NULL, 0);
3377                                 else
3378                                         done = gifconf_list[i](dev, pos + total,
3379                                                                len - total);
3380                                 if (done < 0)
3381                                         return -EFAULT;
3382                                 total += done;
3383                         }
3384                 }
3385         }
3386
3387         /*
3388          *      All done.  Write the updated control block back to the caller.
3389          */
3390         ifc.ifc_len = total;
3391
3392         /*
3393          *      Both BSD and Solaris return 0 here, so we do too.
3394          */
3395         return copy_to_user(arg, &ifc, sizeof(struct ifconf)) ? -EFAULT : 0;
3396 }
3397
3398 #ifdef CONFIG_PROC_FS
3399 /*
3400  *      This is invoked by the /proc filesystem handler to display a device
3401  *      in detail.
3402  */
3403 void *dev_seq_start(struct seq_file *seq, loff_t *pos)
3404         __acquires(RCU)
3405 {
3406         struct net *net = seq_file_net(seq);
3407         loff_t off;
3408         struct net_device *dev;
3409
3410         rcu_read_lock();
3411         if (!*pos)
3412                 return SEQ_START_TOKEN;
3413
3414         off = 1;
3415         for_each_netdev_rcu(net, dev)
3416                 if (off++ == *pos)
3417                         return dev;
3418
3419         return NULL;
3420 }
3421
3422 void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
3423 {
3424         struct net_device *dev = (v == SEQ_START_TOKEN) ?
3425                                   first_net_device(seq_file_net(seq)) :
3426                                   next_net_device((struct net_device *)v);
3427
3428         ++*pos;
3429         return rcu_dereference(dev);
3430 }
3431
3432 void dev_seq_stop(struct seq_file *seq, void *v)
3433         __releases(RCU)
3434 {
3435         rcu_read_unlock();
3436 }
3437
3438 static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
3439 {
3440         const struct net_device_stats *stats = dev_get_stats(dev);
3441
3442         seq_printf(seq, "%6s: %7lu %7lu %4lu %4lu %4lu %5lu %10lu %9lu "
3443                    "%8lu %7lu %4lu %4lu %4lu %5lu %7lu %10lu\n",
3444                    dev->name, stats->rx_bytes, stats->rx_packets,
3445                    stats->rx_errors,
3446                    stats->rx_dropped + stats->rx_missed_errors,
3447                    stats->rx_fifo_errors,
3448                    stats->rx_length_errors + stats->rx_over_errors +
3449                     stats->rx_crc_errors + stats->rx_frame_errors,
3450                    stats->rx_compressed, stats->multicast,
3451                    stats->tx_bytes, stats->tx_packets,
3452                    stats->tx_errors, stats->tx_dropped,
3453                    stats->tx_fifo_errors, stats->collisions,
3454                    stats->tx_carrier_errors +
3455                     stats->tx_aborted_errors +
3456                     stats->tx_window_errors +
3457                     stats->tx_heartbeat_errors,
3458                    stats->tx_compressed);
3459 }
3460
3461 /*
3462  *      Called from the PROCfs module. This now uses the new arbitrary sized
3463  *      /proc/net interface to create /proc/net/dev
3464  */
3465 static int dev_seq_show(struct seq_file *seq, void *v)
3466 {
3467         if (v == SEQ_START_TOKEN)
3468                 seq_puts(seq, "Inter-|   Receive                            "
3469                               "                    |  Transmit\n"
3470                               " face |bytes    packets errs drop fifo frame "
3471                               "compressed multicast|bytes    packets errs "
3472                               "drop fifo colls carrier compressed\n");
3473         else
3474                 dev_seq_printf_stats(seq, v);
3475         return 0;
3476 }
3477
3478 static struct netif_rx_stats *softnet_get_online(loff_t *pos)
3479 {
3480         struct netif_rx_stats *rc = NULL;
3481
3482         while (*pos < nr_cpu_ids)
3483                 if (cpu_online(*pos)) {
3484                         rc = &per_cpu(netdev_rx_stat, *pos);
3485                         break;
3486                 } else
3487                         ++*pos;
3488         return rc;
3489 }
3490
3491 static void *softnet_seq_start(struct seq_file *seq, loff_t *pos)
3492 {
3493         return softnet_get_online(pos);
3494 }
3495
3496 static void *softnet_seq_next(struct seq_file *seq, void *v, loff_t *pos)
3497 {
3498         ++*pos;
3499         return softnet_get_online(pos);
3500 }
3501
3502 static void softnet_seq_stop(struct seq_file *seq, void *v)
3503 {
3504 }
3505
3506 static int softnet_seq_show(struct seq_file *seq, void *v)
3507 {
3508         struct netif_rx_stats *s = v;
3509
3510         seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x\n",
3511                    s->total, s->dropped, s->time_squeeze, 0,
3512                    0, 0, 0, 0, /* was fastroute */
3513                    s->cpu_collision, s->received_rps);
3514         return 0;
3515 }
3516
3517 static const struct seq_operations dev_seq_ops = {
3518         .start = dev_seq_start,
3519         .next  = dev_seq_next,
3520         .stop  = dev_seq_stop,
3521         .show  = dev_seq_show,
3522 };
3523
3524 static int dev_seq_open(struct inode *inode, struct file *file)
3525 {
3526         return seq_open_net(inode, file, &dev_seq_ops,
3527                             sizeof(struct seq_net_private));
3528 }
3529
3530 static const struct file_operations dev_seq_fops = {
3531         .owner   = THIS_MODULE,
3532         .open    = dev_seq_open,
3533         .read    = seq_read,
3534         .llseek  = seq_lseek,
3535         .release = seq_release_net,
3536 };
3537
3538 static const struct seq_operations softnet_seq_ops = {
3539         .start = softnet_seq_start,
3540         .next  = softnet_seq_next,
3541         .stop  = softnet_seq_stop,
3542         .show  = softnet_seq_show,
3543 };
3544
3545 static int softnet_seq_open(struct inode *inode, struct file *file)
3546 {
3547         return seq_open(file, &softnet_seq_ops);
3548 }
3549
3550 static const struct file_operations softnet_seq_fops = {
3551         .owner   = THIS_MODULE,
3552         .open    = softnet_seq_open,
3553         .read    = seq_read,
3554         .llseek  = seq_lseek,
3555         .release = seq_release,
3556 };
3557
3558 static void *ptype_get_idx(loff_t pos)
3559 {
3560         struct packet_type *pt = NULL;
3561         loff_t i = 0;
3562         int t;
3563
3564         list_for_each_entry_rcu(pt, &ptype_all, list) {
3565                 if (i == pos)
3566                         return pt;
3567                 ++i;
3568         }
3569
3570         for (t = 0; t < PTYPE_HASH_SIZE; t++) {
3571                 list_for_each_entry_rcu(pt, &ptype_base[t], list) {
3572                         if (i == pos)
3573                                 return pt;
3574                         ++i;
3575                 }
3576         }
3577         return NULL;
3578 }
3579
3580 static void *ptype_seq_start(struct seq_file *seq, loff_t *pos)
3581         __acquires(RCU)
3582 {
3583         rcu_read_lock();
3584         return *pos ? ptype_get_idx(*pos - 1) : SEQ_START_TOKEN;
3585 }
3586
3587 static void *ptype_seq_next(struct seq_file *seq, void *v, loff_t *pos)
3588 {
3589         struct packet_type *pt;
3590         struct list_head *nxt;
3591         int hash;
3592
3593         ++*pos;
3594         if (v == SEQ_START_TOKEN)
3595                 return ptype_get_idx(0);
3596
3597         pt = v;
3598         nxt = pt->list.next;
3599         if (pt->type == htons(ETH_P_ALL)) {
3600                 if (nxt != &ptype_all)
3601                         goto found;
3602                 hash = 0;
3603                 nxt = ptype_base[0].next;
3604         } else
3605                 hash = ntohs(pt->type) & PTYPE_HASH_MASK;
3606
3607         while (nxt == &ptype_base[hash]) {
3608                 if (++hash >= PTYPE_HASH_SIZE)
3609                         return NULL;
3610                 nxt = ptype_base[hash].next;
3611         }
3612 found:
3613         return list_entry(nxt, struct packet_type, list);
3614 }
3615
3616 static void ptype_seq_stop(struct seq_file *seq, void *v)
3617         __releases(RCU)
3618 {
3619         rcu_read_unlock();
3620 }
3621
3622 static int ptype_seq_show(struct seq_file *seq, void *v)
3623 {
3624         struct packet_type *pt = v;
3625
3626         if (v == SEQ_START_TOKEN)
3627                 seq_puts(seq, "Type Device      Function\n");
3628         else if (pt->dev == NULL || dev_net(pt->dev) == seq_file_net(seq)) {
3629                 if (pt->type == htons(ETH_P_ALL))
3630                         seq_puts(seq, "ALL ");
3631                 else
3632                         seq_printf(seq, "%04x", ntohs(pt->type));
3633
3634                 seq_printf(seq, " %-8s %pF\n",
3635                            pt->dev ? pt->dev->name : "", pt->func);
3636         }
3637
3638         return 0;
3639 }
3640
3641 static const struct seq_operations ptype_seq_ops = {
3642         .start = ptype_seq_start,
3643         .next  = ptype_seq_next,
3644         .stop  = ptype_seq_stop,
3645         .show  = ptype_seq_show,
3646 };
3647
3648 static int ptype_seq_open(struct inode *inode, struct file *file)
3649 {
3650         return seq_open_net(inode, file, &ptype_seq_ops,
3651                         sizeof(struct seq_net_private));
3652 }
3653
3654 static const struct file_operations ptype_seq_fops = {
3655         .owner   = THIS_MODULE,
3656         .open    = ptype_seq_open,
3657         .read    = seq_read,
3658         .llseek  = seq_lseek,
3659         .release = seq_release_net,
3660 };
3661
3662
3663 static int __net_init dev_proc_net_init(struct net *net)
3664 {
3665         int rc = -ENOMEM;
3666
3667         if (!proc_net_fops_create(net, "dev", S_IRUGO, &dev_seq_fops))
3668                 goto out;
3669         if (!proc_net_fops_create(net, "softnet_stat", S_IRUGO, &softnet_seq_fops))
3670                 goto out_dev;
3671         if (!proc_net_fops_create(net, "ptype", S_IRUGO, &ptype_seq_fops))
3672                 goto out_softnet;
3673
3674         if (wext_proc_init(net))
3675                 goto out_ptype;
3676         rc = 0;
3677 out:
3678         return rc;
3679 out_ptype:
3680         proc_net_remove(net, "ptype");
3681 out_softnet:
3682         proc_net_remove(net, "softnet_stat");
3683 out_dev:
3684         proc_net_remove(net, "dev");
3685         goto out;
3686 }
3687
3688 static void __net_exit dev_proc_net_exit(struct net *net)
3689 {
3690         wext_proc_exit(net);
3691
3692         proc_net_remove(net, "ptype");
3693         proc_net_remove(net, "softnet_stat");
3694         proc_net_remove(net, "dev");
3695 }
3696
3697 static struct pernet_operations __net_initdata dev_proc_ops = {
3698         .init = dev_proc_net_init,
3699         .exit = dev_proc_net_exit,
3700 };
3701
3702 static int __init dev_proc_init(void)
3703 {
3704         return register_pernet_subsys(&dev_proc_ops);
3705 }
3706 #else
3707 #define dev_proc_init() 0
3708 #endif  /* CONFIG_PROC_FS */
3709
3710
3711 /**
3712  *      netdev_set_master       -       set up master/slave pair
3713  *      @slave: slave device
3714  *      @master: new master device
3715  *
3716  *      Changes the master device of the slave. Pass %NULL to break the
3717  *      bonding. The caller must hold the RTNL semaphore. On a failure
3718  *      a negative errno code is returned. On success the reference counts
3719  *      are adjusted, %RTM_NEWLINK is sent to the routing socket and the
3720  *      function returns zero.
3721  */
3722 int netdev_set_master(struct net_device *slave, struct net_device *master)
3723 {
3724         struct net_device *old = slave->master;
3725
3726         ASSERT_RTNL();
3727
3728         if (master) {
3729                 if (old)
3730                         return -EBUSY;
3731                 dev_hold(master);
3732         }
3733
3734         slave->master = master;
3735
3736         synchronize_net();
3737
3738         if (old)
3739                 dev_put(old);
3740
3741         if (master)
3742                 slave->flags |= IFF_SLAVE;
3743         else
3744                 slave->flags &= ~IFF_SLAVE;
3745
3746         rtmsg_ifinfo(RTM_NEWLINK, slave, IFF_SLAVE);
3747         return 0;
3748 }
3749 EXPORT_SYMBOL(netdev_set_master);
3750
3751 static void dev_change_rx_flags(struct net_device *dev, int flags)
3752 {
3753         const struct net_device_ops *ops = dev->netdev_ops;
3754
3755         if ((dev->flags & IFF_UP) && ops->ndo_change_rx_flags)
3756                 ops->ndo_change_rx_flags(dev, flags);
3757 }
3758
3759 static int __dev_set_promiscuity(struct net_device *dev, int inc)
3760 {
3761         unsigned short old_flags = dev->flags;
3762         uid_t uid;
3763         gid_t gid;
3764
3765         ASSERT_RTNL();
3766
3767         dev->flags |= IFF_PROMISC;
3768         dev->promiscuity += inc;
3769         if (dev->promiscuity == 0) {
3770                 /*
3771                  * Avoid overflow.
3772                  * If inc causes overflow, untouch promisc and return error.
3773                  */
3774                 if (inc < 0)
3775                         dev->flags &= ~IFF_PROMISC;
3776                 else {
3777                         dev->promiscuity -= inc;
3778                         printk(KERN_WARNING "%s: promiscuity touches roof, "
3779                                 "set promiscuity failed, promiscuity feature "
3780                                 "of device might be broken.\n", dev->name);
3781                         return -EOVERFLOW;
3782                 }
3783         }
3784         if (dev->flags != old_flags) {
3785                 printk(KERN_INFO "device %s %s promiscuous mode\n",
3786                        dev->name, (dev->flags & IFF_PROMISC) ? "entered" :
3787                                                                "left");
3788                 if (audit_enabled) {
3789                         current_uid_gid(&uid, &gid);
3790                         audit_log(current->audit_context, GFP_ATOMIC,
3791                                 AUDIT_ANOM_PROMISCUOUS,
3792                                 "dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u",
3793                                 dev->name, (dev->flags & IFF_PROMISC),
3794                                 (old_flags & IFF_PROMISC),
3795                                 audit_get_loginuid(current),
3796                                 uid, gid,
3797                                 audit_get_sessionid(current));
3798                 }
3799
3800                 dev_change_rx_flags(dev, IFF_PROMISC);
3801         }
3802         return 0;
3803 }
3804
3805 /**
3806  *      dev_set_promiscuity     - update promiscuity count on a device
3807  *      @dev: device
3808  *      @inc: modifier
3809  *
3810  *      Add or remove promiscuity from a device. While the count in the device
3811  *      remains above zero the interface remains promiscuous. Once it hits zero
3812  *      the device reverts back to normal filtering operation. A negative inc
3813  *      value is used to drop promiscuity on the device.
3814  *      Return 0 if successful or a negative errno code on error.
3815  */
3816 int dev_set_promiscuity(struct net_device *dev, int inc)
3817 {
3818         unsigned short old_flags = dev->flags;
3819         int err;
3820
3821         err = __dev_set_promiscuity(dev, inc);
3822         if (err < 0)
3823                 return err;
3824         if (dev->flags != old_flags)
3825                 dev_set_rx_mode(dev);
3826         return err;
3827 }
3828 EXPORT_SYMBOL(dev_set_promiscuity);
3829
3830 /**
3831  *      dev_set_allmulti        - update allmulti count on a device
3832  *      @dev: device
3833  *      @inc: modifier
3834  *
3835  *      Add or remove reception of all multicast frames to a device. While the
3836  *      count in the device remains above zero the interface remains listening
3837  *      to all interfaces. Once it hits zero the device reverts back to normal
3838  *      filtering operation. A negative @inc value is used to drop the counter
3839  *      when releasing a resource needing all multicasts.
3840  *      Return 0 if successful or a negative errno code on error.
3841  */
3842
3843 int dev_set_allmulti(struct net_device *dev, int inc)
3844 {
3845         unsigned short old_flags = dev->flags;
3846
3847         ASSERT_RTNL();
3848
3849         dev->flags |= IFF_ALLMULTI;
3850         dev->allmulti += inc;
3851         if (dev->allmulti == 0) {
3852                 /*
3853                  * Avoid overflow.
3854                  * If inc causes overflow, untouch allmulti and return error.
3855                  */
3856                 if (inc < 0)
3857                         dev->flags &= ~IFF_ALLMULTI;
3858                 else {
3859                         dev->allmulti -= inc;
3860                         printk(KERN_WARNING "%s: allmulti touches roof, "
3861                                 "set allmulti failed, allmulti feature of "
3862                                 "device might be broken.\n", dev->name);
3863                         return -EOVERFLOW;
3864                 }
3865         }
3866         if (dev->flags ^ old_flags) {
3867                 dev_change_rx_flags(dev, IFF_ALLMULTI);
3868                 dev_set_rx_mode(dev);
3869         }
3870         return 0;
3871 }
3872 EXPORT_SYMBOL(dev_set_allmulti);
3873
3874 /*
3875  *      Upload unicast and multicast address lists to device and
3876  *      configure RX filtering. When the device doesn't support unicast
3877  *      filtering it is put in promiscuous mode while unicast addresses
3878  *      are present.
3879  */
3880 void __dev_set_rx_mode(struct net_device *dev)
3881 {
3882         const struct net_device_ops *ops = dev->netdev_ops;
3883
3884         /* dev_open will call this function so the list will stay sane. */
3885         if (!(dev->flags&IFF_UP))
3886                 return;
3887
3888         if (!netif_device_present(dev))
3889                 return;
3890
3891         if (ops->ndo_set_rx_mode)
3892                 ops->ndo_set_rx_mode(dev);
3893         else {
3894                 /* Unicast addresses changes may only happen under the rtnl,
3895                  * therefore calling __dev_set_promiscuity here is safe.
3896                  */
3897                 if (!netdev_uc_empty(dev) && !dev->uc_promisc) {
3898                         __dev_set_promiscuity(dev, 1);
3899                         dev->uc_promisc = 1;
3900                 } else if (netdev_uc_empty(dev) && dev->uc_promisc) {
3901                         __dev_set_promiscuity(dev, -1);
3902                         dev->uc_promisc = 0;
3903                 }
3904
3905                 if (ops->ndo_set_multicast_list)
3906                         ops->ndo_set_multicast_list(dev);
3907         }
3908 }
3909
3910 void dev_set_rx_mode(struct net_device *dev)
3911 {
3912         netif_addr_lock_bh(dev);
3913         __dev_set_rx_mode(dev);
3914         netif_addr_unlock_bh(dev);
3915 }
3916
3917 /* hw addresses list handling functions */
3918
3919 static int __hw_addr_add(struct netdev_hw_addr_list *list, unsigned char *addr,
3920                          int addr_len, unsigned char addr_type)
3921 {
3922         struct netdev_hw_addr *ha;
3923         int alloc_size;
3924
3925         if (addr_len > MAX_ADDR_LEN)
3926                 return -EINVAL;
3927
3928         list_for_each_entry(ha, &list->list, list) {
3929                 if (!memcmp(ha->addr, addr, addr_len) &&
3930                     ha->type == addr_type) {
3931                         ha->refcount++;
3932                         return 0;
3933                 }
3934         }
3935
3936
3937         alloc_size = sizeof(*ha);
3938         if (alloc_size < L1_CACHE_BYTES)
3939                 alloc_size = L1_CACHE_BYTES;
3940         ha = kmalloc(alloc_size, GFP_ATOMIC);
3941         if (!ha)
3942                 return -ENOMEM;
3943         memcpy(ha->addr, addr, addr_len);
3944         ha->type = addr_type;
3945         ha->refcount = 1;
3946         ha->synced = false;
3947         list_add_tail_rcu(&ha->list, &list->list);
3948         list->count++;
3949         return 0;
3950 }
3951
3952 static void ha_rcu_free(struct rcu_head *head)
3953 {
3954         struct netdev_hw_addr *ha;
3955
3956         ha = container_of(head, struct netdev_hw_addr, rcu_head);
3957         kfree(ha);
3958 }
3959
3960 static int __hw_addr_del(struct netdev_hw_addr_list *list, unsigned char *addr,
3961                          int addr_len, unsigned char addr_type)
3962 {
3963         struct netdev_hw_addr *ha;
3964
3965         list_for_each_entry(ha, &list->list, list) {
3966                 if (!memcmp(ha->addr, addr, addr_len) &&
3967                     (ha->type == addr_type || !addr_type)) {
3968                         if (--ha->refcount)
3969                                 return 0;
3970                         list_del_rcu(&ha->list);
3971                         call_rcu(&ha->rcu_head, ha_rcu_free);
3972                         list->count--;
3973                         return 0;
3974                 }
3975         }
3976         return -ENOENT;
3977 }
3978
3979 static int __hw_addr_add_multiple(struct netdev_hw_addr_list *to_list,
3980                                   struct netdev_hw_addr_list *from_list,
3981                                   int addr_len,
3982                                   unsigned char addr_type)
3983 {
3984         int err;
3985         struct netdev_hw_addr *ha, *ha2;
3986         unsigned char type;
3987
3988         list_for_each_entry(ha, &from_list->list, list) {
3989                 type = addr_type ? addr_type : ha->type;
3990                 err = __hw_addr_add(to_list, ha->addr, addr_len, type);
3991                 if (err)
3992                         goto unroll;
3993         }
3994         return 0;
3995
3996 unroll:
3997         list_for_each_entry(ha2, &from_list->list, list) {
3998                 if (ha2 == ha)
3999                         break;
4000                 type = addr_type ? addr_type : ha2->type;
4001                 __hw_addr_del(to_list, ha2->addr, addr_len, type);
4002         }
4003         return err;
4004 }
4005
4006 static void __hw_addr_del_multiple(struct netdev_hw_addr_list *to_list,
4007                                    struct netdev_hw_addr_list *from_list,
4008                                    int addr_len,
4009                                    unsigned char addr_type)
4010 {
4011         struct netdev_hw_addr *ha;
4012         unsigned char type;
4013
4014         list_for_each_entry(ha, &from_list->list, list) {
4015                 type = addr_type ? addr_type : ha->type;
4016                 __hw_addr_del(to_list, ha->addr, addr_len, addr_type);
4017         }
4018 }
4019
4020 static int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
4021                           struct netdev_hw_addr_list *from_list,
4022                           int addr_len)
4023 {
4024         int err = 0;
4025         struct netdev_hw_addr *ha, *tmp;
4026
4027         list_for_each_entry_safe(ha, tmp, &from_list->list, list) {
4028                 if (!ha->synced) {
4029                         err = __hw_addr_add(to_list, ha->addr,
4030                                             addr_len, ha->type);
4031                         if (err)
4032                                 break;
4033                         ha->synced = true;
4034                         ha->refcount++;
4035                 } else if (ha->refcount == 1) {
4036                         __hw_addr_del(to_list, ha->addr, addr_len, ha->type);
4037                         __hw_addr_del(from_list, ha->addr, addr_len, ha->type);
4038                 }
4039         }
4040         return err;
4041 }
4042
4043 static void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
4044                              struct netdev_hw_addr_list *from_list,
4045                              int addr_len)
4046 {
4047         struct netdev_hw_addr *ha, *tmp;
4048
4049         list_for_each_entry_safe(ha, tmp, &from_list->list, list) {
4050                 if (ha->synced) {
4051                         __hw_addr_del(to_list, ha->addr,
4052                                       addr_len, ha->type);
4053                         ha->synced = false;
4054                         __hw_addr_del(from_list, ha->addr,
4055                                       addr_len, ha->type);
4056                 }
4057         }
4058 }
4059
4060 static void __hw_addr_flush(struct netdev_hw_addr_list *list)
4061 {
4062         struct netdev_hw_addr *ha, *tmp;
4063
4064         list_for_each_entry_safe(ha, tmp, &list->list, list) {
4065                 list_del_rcu(&ha->list);
4066                 call_rcu(&ha->rcu_head, ha_rcu_free);
4067         }
4068         list->count = 0;
4069 }
4070
4071 static void __hw_addr_init(struct netdev_hw_addr_list *list)
4072 {
4073         INIT_LIST_HEAD(&list->list);
4074         list->count = 0;
4075 }
4076
4077 /* Device addresses handling functions */
4078
4079 static void dev_addr_flush(struct net_device *dev)
4080 {
4081         /* rtnl_mutex must be held here */
4082
4083         __hw_addr_flush(&dev->dev_addrs);
4084         dev->dev_addr = NULL;
4085 }
4086
4087 static int dev_addr_init(struct net_device *dev)
4088 {
4089         unsigned char addr[MAX_ADDR_LEN];
4090         struct netdev_hw_addr *ha;
4091         int err;
4092
4093         /* rtnl_mutex must be held here */
4094
4095         __hw_addr_init(&dev->dev_addrs);
4096         memset(addr, 0, sizeof(addr));
4097         err = __hw_addr_add(&dev->dev_addrs, addr, sizeof(addr),
4098                             NETDEV_HW_ADDR_T_LAN);
4099         if (!err) {
4100                 /*
4101                  * Get the first (previously created) address from the list
4102                  * and set dev_addr pointer to this location.
4103                  */
4104                 ha = list_first_entry(&dev->dev_addrs.list,
4105                                       struct netdev_hw_addr, list);
4106                 dev->dev_addr = ha->addr;
4107         }
4108         return err;
4109 }
4110
4111 /**
4112  *      dev_addr_add    - Add a device address
4113  *      @dev: device
4114  *      @addr: address to add
4115  *      @addr_type: address type
4116  *
4117  *      Add a device address to the device or increase the reference count if
4118  *      it already exists.
4119  *
4120  *      The caller must hold the rtnl_mutex.
4121  */
4122 int dev_addr_add(struct net_device *dev, unsigned char *addr,
4123                  unsigned char addr_type)
4124 {
4125         int err;
4126
4127         ASSERT_RTNL();
4128
4129         err = __hw_addr_add(&dev->dev_addrs, addr, dev->addr_len, addr_type);
4130         if (!err)
4131                 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4132         return err;
4133 }
4134 EXPORT_SYMBOL(dev_addr_add);
4135
4136 /**
4137  *      dev_addr_del    - Release a device address.
4138  *      @dev: device
4139  *      @addr: address to delete
4140  *      @addr_type: address type
4141  *
4142  *      Release reference to a device address and remove it from the device
4143  *      if the reference count drops to zero.
4144  *
4145  *      The caller must hold the rtnl_mutex.
4146  */
4147 int dev_addr_del(struct net_device *dev, unsigned char *addr,
4148                  unsigned char addr_type)
4149 {
4150         int err;
4151         struct netdev_hw_addr *ha;
4152
4153         ASSERT_RTNL();
4154
4155         /*
4156          * We can not remove the first address from the list because
4157          * dev->dev_addr points to that.
4158          */
4159         ha = list_first_entry(&dev->dev_addrs.list,
4160                               struct netdev_hw_addr, list);
4161         if (ha->addr == dev->dev_addr && ha->refcount == 1)
4162                 return -ENOENT;
4163
4164         err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len,
4165                             addr_type);
4166         if (!err)
4167                 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4168         return err;
4169 }
4170 EXPORT_SYMBOL(dev_addr_del);
4171
4172 /**
4173  *      dev_addr_add_multiple   - Add device addresses from another device
4174  *      @to_dev: device to which addresses will be added
4175  *      @from_dev: device from which addresses will be added
4176  *      @addr_type: address type - 0 means type will be used from from_dev
4177  *
4178  *      Add device addresses of the one device to another.
4179  **
4180  *      The caller must hold the rtnl_mutex.
4181  */
4182 int dev_addr_add_multiple(struct net_device *to_dev,
4183                           struct net_device *from_dev,
4184                           unsigned char addr_type)
4185 {
4186         int err;
4187
4188         ASSERT_RTNL();
4189
4190         if (from_dev->addr_len != to_dev->addr_len)
4191                 return -EINVAL;
4192         err = __hw_addr_add_multiple(&to_dev->dev_addrs, &from_dev->dev_addrs,
4193                                      to_dev->addr_len, addr_type);
4194         if (!err)
4195                 call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
4196         return err;
4197 }
4198 EXPORT_SYMBOL(dev_addr_add_multiple);
4199
4200 /**
4201  *      dev_addr_del_multiple   - Delete device addresses by another device
4202  *      @to_dev: device where the addresses will be deleted
4203  *      @from_dev: device by which addresses the addresses will be deleted
4204  *      @addr_type: address type - 0 means type will used from from_dev
4205  *
4206  *      Deletes addresses in to device by the list of addresses in from device.
4207  *
4208  *      The caller must hold the rtnl_mutex.
4209  */
4210 int dev_addr_del_multiple(struct net_device *to_dev,
4211                           struct net_device *from_dev,
4212                           unsigned char addr_type)
4213 {
4214         ASSERT_RTNL();
4215
4216         if (from_dev->addr_len != to_dev->addr_len)
4217                 return -EINVAL;
4218         __hw_addr_del_multiple(&to_dev->dev_addrs, &from_dev->dev_addrs,
4219                                to_dev->addr_len, addr_type);
4220         call_netdevice_notifiers(NETDEV_CHANGEADDR, to_dev);
4221         return 0;
4222 }
4223 EXPORT_SYMBOL(dev_addr_del_multiple);
4224
4225 /* multicast addresses handling functions */
4226
4227 int __dev_addr_delete(struct dev_addr_list **list, int *count,
4228                       void *addr, int alen, int glbl)
4229 {
4230         struct dev_addr_list *da;
4231
4232         for (; (da = *list) != NULL; list = &da->next) {
4233                 if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 &&
4234                     alen == da->da_addrlen) {
4235                         if (glbl) {
4236                                 int old_glbl = da->da_gusers;
4237                                 da->da_gusers = 0;
4238                                 if (old_glbl == 0)
4239                                         break;
4240                         }
4241                         if (--da->da_users)
4242                                 return 0;
4243
4244                         *list = da->next;
4245                         kfree(da);
4246                         (*count)--;
4247                         return 0;
4248                 }
4249         }
4250         return -ENOENT;
4251 }
4252
4253 int __dev_addr_add(struct dev_addr_list **list, int *count,
4254                    void *addr, int alen, int glbl)
4255 {
4256         struct dev_addr_list *da;
4257
4258         for (da = *list; da != NULL; da = da->next) {
4259                 if (memcmp(da->da_addr, addr, da->da_addrlen) == 0 &&
4260                     da->da_addrlen == alen) {
4261                         if (glbl) {
4262                                 int old_glbl = da->da_gusers;
4263                                 da->da_gusers = 1;
4264                                 if (old_glbl)
4265                                         return 0;
4266                         }
4267                         da->da_users++;
4268                         return 0;
4269                 }
4270         }
4271
4272         da = kzalloc(sizeof(*da), GFP_ATOMIC);
4273         if (da == NULL)
4274                 return -ENOMEM;
4275         memcpy(da->da_addr, addr, alen);
4276         da->da_addrlen = alen;
4277         da->da_users = 1;
4278         da->da_gusers = glbl ? 1 : 0;
4279         da->next = *list;
4280         *list = da;
4281         (*count)++;
4282         return 0;
4283 }
4284
4285 /**
4286  *      dev_unicast_delete      - Release secondary unicast address.
4287  *      @dev: device
4288  *      @addr: address to delete
4289  *
4290  *      Release reference to a secondary unicast address and remove it
4291  *      from the device if the reference count drops to zero.
4292  *
4293  *      The caller must hold the rtnl_mutex.
4294  */
4295 int dev_unicast_delete(struct net_device *dev, void *addr)
4296 {
4297         int err;
4298
4299         ASSERT_RTNL();
4300
4301         netif_addr_lock_bh(dev);
4302         err = __hw_addr_del(&dev->uc, addr, dev->addr_len,
4303                             NETDEV_HW_ADDR_T_UNICAST);
4304         if (!err)
4305                 __dev_set_rx_mode(dev);
4306         netif_addr_unlock_bh(dev);
4307         return err;
4308 }
4309 EXPORT_SYMBOL(dev_unicast_delete);
4310
4311 /**
4312  *      dev_unicast_add         - add a secondary unicast address
4313  *      @dev: device
4314  *      @addr: address to add
4315  *
4316  *      Add a secondary unicast address to the device or increase
4317  *      the reference count if it already exists.
4318  *
4319  *      The caller must hold the rtnl_mutex.
4320  */
4321 int dev_unicast_add(struct net_device *dev, void *addr)
4322 {
4323         int err;
4324
4325         ASSERT_RTNL();
4326
4327         netif_addr_lock_bh(dev);
4328         err = __hw_addr_add(&dev->uc, addr, dev->addr_len,
4329                             NETDEV_HW_ADDR_T_UNICAST);
4330         if (!err)
4331                 __dev_set_rx_mode(dev);
4332         netif_addr_unlock_bh(dev);
4333         return err;
4334 }
4335 EXPORT_SYMBOL(dev_unicast_add);
4336
4337 int __dev_addr_sync(struct dev_addr_list **to, int *to_count,
4338                     struct dev_addr_list **from, int *from_count)
4339 {
4340         struct dev_addr_list *da, *next;
4341         int err = 0;
4342
4343         da = *from;
4344         while (da != NULL) {
4345                 next = da->next;
4346                 if (!da->da_synced) {
4347                         err = __dev_addr_add(to, to_count,
4348                                              da->da_addr, da->da_addrlen, 0);
4349                         if (err < 0)
4350                                 break;
4351                         da->da_synced = 1;
4352                         da->da_users++;
4353                 } else if (da->da_users == 1) {
4354                         __dev_addr_delete(to, to_count,
4355                                           da->da_addr, da->da_addrlen, 0);
4356                         __dev_addr_delete(from, from_count,
4357                                           da->da_addr, da->da_addrlen, 0);
4358                 }
4359                 da = next;
4360         }
4361         return err;
4362 }
4363 EXPORT_SYMBOL_GPL(__dev_addr_sync);
4364
4365 void __dev_addr_unsync(struct dev_addr_list **to, int *to_count,
4366                        struct dev_addr_list **from, int *from_count)
4367 {
4368         struct dev_addr_list *da, *next;
4369
4370         da = *from;
4371         while (da != NULL) {
4372                 next = da->next;
4373                 if (da->da_synced) {
4374                         __dev_addr_delete(to, to_count,
4375                                           da->da_addr, da->da_addrlen, 0);
4376                         da->da_synced = 0;
4377                         __dev_addr_delete(from, from_count,
4378                                           da->da_addr, da->da_addrlen, 0);
4379                 }
4380                 da = next;
4381         }
4382 }
4383 EXPORT_SYMBOL_GPL(__dev_addr_unsync);
4384
4385 /**
4386  *      dev_unicast_sync - Synchronize device's unicast list to another device
4387  *      @to: destination device
4388  *      @from: source device
4389  *
4390  *      Add newly added addresses to the destination device and release
4391  *      addresses that have no users left. The source device must be
4392  *      locked by netif_tx_lock_bh.
4393  *
4394  *      This function is intended to be called from the dev->set_rx_mode
4395  *      function of layered software devices.
4396  */
4397 int dev_unicast_sync(struct net_device *to, struct net_device *from)
4398 {
4399         int err = 0;
4400
4401         if (to->addr_len != from->addr_len)
4402                 return -EINVAL;
4403
4404         netif_addr_lock_bh(to);
4405         err = __hw_addr_sync(&to->uc, &from->uc, to->addr_len);
4406         if (!err)
4407                 __dev_set_rx_mode(to);
4408         netif_addr_unlock_bh(to);
4409         return err;
4410 }
4411 EXPORT_SYMBOL(dev_unicast_sync);
4412
4413 /**
4414  *      dev_unicast_unsync - Remove synchronized addresses from the destination device
4415  *      @to: destination device
4416  *      @from: source device
4417  *
4418  *      Remove all addresses that were added to the destination device by
4419  *      dev_unicast_sync(). This function is intended to be called from the
4420  *      dev->stop function of layered software devices.
4421  */
4422 void dev_unicast_unsync(struct net_device *to, struct net_device *from)
4423 {
4424         if (to->addr_len != from->addr_len)
4425                 return;
4426
4427         netif_addr_lock_bh(from);
4428         netif_addr_lock(to);
4429         __hw_addr_unsync(&to->uc, &from->uc, to->addr_len);
4430         __dev_set_rx_mode(to);
4431         netif_addr_unlock(to);
4432         netif_addr_unlock_bh(from);
4433 }
4434 EXPORT_SYMBOL(dev_unicast_unsync);
4435
4436 static void dev_unicast_flush(struct net_device *dev)
4437 {
4438         netif_addr_lock_bh(dev);
4439         __hw_addr_flush(&dev->uc);
4440         netif_addr_unlock_bh(dev);
4441 }
4442
4443 static void dev_unicast_init(struct net_device *dev)
4444 {
4445         __hw_addr_init(&dev->uc);
4446 }
4447
4448
4449 static void __dev_addr_discard(struct dev_addr_list **list)
4450 {
4451         struct dev_addr_list *tmp;
4452
4453         while (*list != NULL) {
4454                 tmp = *list;
4455                 *list = tmp->next;
4456                 if (tmp->da_users > tmp->da_gusers)
4457                         printk("__dev_addr_discard: address leakage! "
4458                                "da_users=%d\n", tmp->da_users);
4459                 kfree(tmp);
4460         }
4461 }
4462
4463 static void dev_addr_discard(struct net_device *dev)
4464 {
4465         netif_addr_lock_bh(dev);
4466
4467         __dev_addr_discard(&dev->mc_list);
4468         netdev_mc_count(dev) = 0;
4469
4470         netif_addr_unlock_bh(dev);
4471 }
4472
4473 /**
4474  *      dev_get_flags - get flags reported to userspace
4475  *      @dev: device
4476  *
4477  *      Get the combination of flag bits exported through APIs to userspace.
4478  */
4479 unsigned dev_get_flags(const struct net_device *dev)
4480 {
4481         unsigned flags;
4482
4483         flags = (dev->flags & ~(IFF_PROMISC |
4484                                 IFF_ALLMULTI |
4485                                 IFF_RUNNING |
4486                                 IFF_LOWER_UP |
4487                                 IFF_DORMANT)) |
4488                 (dev->gflags & (IFF_PROMISC |
4489                                 IFF_ALLMULTI));
4490
4491         if (netif_running(dev)) {
4492                 if (netif_oper_up(dev))
4493                         flags |= IFF_RUNNING;
4494                 if (netif_carrier_ok(dev))
4495                         flags |= IFF_LOWER_UP;
4496                 if (netif_dormant(dev))
4497                         flags |= IFF_DORMANT;
4498         }
4499
4500         return flags;
4501 }
4502 EXPORT_SYMBOL(dev_get_flags);
4503
4504 int __dev_change_flags(struct net_device *dev, unsigned int flags)
4505 {
4506         int old_flags = dev->flags;
4507         int ret;
4508
4509         ASSERT_RTNL();
4510
4511         /*
4512          *      Set the flags on our device.
4513          */
4514
4515         dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
4516                                IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
4517                                IFF_AUTOMEDIA)) |
4518                      (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC |
4519                                     IFF_ALLMULTI));
4520
4521         /*
4522          *      Load in the correct multicast list now the flags have changed.
4523          */
4524
4525         if ((old_flags ^ flags) & IFF_MULTICAST)
4526                 dev_change_rx_flags(dev, IFF_MULTICAST);
4527
4528         dev_set_rx_mode(dev);
4529
4530         /*
4531          *      Have we downed the interface. We handle IFF_UP ourselves
4532          *      according to user attempts to set it, rather than blindly
4533          *      setting it.
4534          */
4535
4536         ret = 0;
4537         if ((old_flags ^ flags) & IFF_UP) {     /* Bit is different  ? */
4538                 ret = ((old_flags & IFF_UP) ? __dev_close : __dev_open)(dev);
4539
4540                 if (!ret)
4541                         dev_set_rx_mode(dev);
4542         }
4543
4544         if ((flags ^ dev->gflags) & IFF_PROMISC) {
4545                 int inc = (flags & IFF_PROMISC) ? 1 : -1;
4546
4547                 dev->gflags ^= IFF_PROMISC;
4548                 dev_set_promiscuity(dev, inc);
4549         }
4550
4551         /* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI
4552            is important. Some (broken) drivers set IFF_PROMISC, when
4553            IFF_ALLMULTI is requested not asking us and not reporting.
4554          */
4555         if ((flags ^ dev->gflags) & IFF_ALLMULTI) {
4556                 int inc = (flags & IFF_ALLMULTI) ? 1 : -1;
4557
4558                 dev->gflags ^= IFF_ALLMULTI;
4559                 dev_set_allmulti(dev, inc);
4560         }
4561
4562         return ret;
4563 }
4564
4565 void __dev_notify_flags(struct net_device *dev, unsigned int old_flags)
4566 {
4567         unsigned int changes = dev->flags ^ old_flags;
4568
4569         if (changes & IFF_UP) {
4570                 if (dev->flags & IFF_UP)
4571                         call_netdevice_notifiers(NETDEV_UP, dev);
4572                 else
4573                         call_netdevice_notifiers(NETDEV_DOWN, dev);
4574         }
4575
4576         if (dev->flags & IFF_UP &&
4577             (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE)))
4578                 call_netdevice_notifiers(NETDEV_CHANGE, dev);
4579 }
4580
4581 /**
4582  *      dev_change_flags - change device settings
4583  *      @dev: device
4584  *      @flags: device state flags
4585  *
4586  *      Change settings on device based state flags. The flags are
4587  *      in the userspace exported format.
4588  */
4589 int dev_change_flags(struct net_device *dev, unsigned flags)
4590 {
4591         int ret, changes;
4592         int old_flags = dev->flags;
4593
4594         ret = __dev_change_flags(dev, flags);
4595         if (ret < 0)
4596                 return ret;
4597
4598         changes = old_flags ^ dev->flags;
4599         if (changes)
4600                 rtmsg_ifinfo(RTM_NEWLINK, dev, changes);
4601
4602         __dev_notify_flags(dev, old_flags);
4603         return ret;
4604 }
4605 EXPORT_SYMBOL(dev_change_flags);
4606
4607 /**
4608  *      dev_set_mtu - Change maximum transfer unit
4609  *      @dev: device
4610  *      @new_mtu: new transfer unit
4611  *
4612  *      Change the maximum transfer size of the network device.
4613  */
4614 int dev_set_mtu(struct net_device *dev, int new_mtu)
4615 {
4616         const struct net_device_ops *ops = dev->netdev_ops;
4617         int err;
4618
4619         if (new_mtu == dev->mtu)
4620                 return 0;
4621
4622         /*      MTU must be positive.    */
4623         if (new_mtu < 0)
4624                 return -EINVAL;
4625
4626         if (!netif_device_present(dev))
4627                 return -ENODEV;
4628
4629         err = 0;
4630         if (ops->ndo_change_mtu)
4631                 err = ops->ndo_change_mtu(dev, new_mtu);
4632         else
4633                 dev->mtu = new_mtu;
4634
4635         if (!err && dev->flags & IFF_UP)
4636                 call_netdevice_notifiers(NETDEV_CHANGEMTU, dev);
4637         return err;
4638 }
4639 EXPORT_SYMBOL(dev_set_mtu);
4640
4641 /**
4642  *      dev_set_mac_address - Change Media Access Control Address
4643  *      @dev: device
4644  *      @sa: new address
4645  *
4646  *      Change the hardware (MAC) address of the device
4647  */
4648 int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa)
4649 {
4650         const struct net_device_ops *ops = dev->netdev_ops;
4651         int err;
4652
4653         if (!ops->ndo_set_mac_address)
4654                 return -EOPNOTSUPP;
4655         if (sa->sa_family != dev->type)
4656                 return -EINVAL;
4657         if (!netif_device_present(dev))
4658                 return -ENODEV;
4659         err = ops->ndo_set_mac_address(dev, sa);
4660         if (!err)
4661                 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4662         return err;
4663 }
4664 EXPORT_SYMBOL(dev_set_mac_address);
4665
4666 /*
4667  *      Perform the SIOCxIFxxx calls, inside rcu_read_lock()
4668  */
4669 static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cmd)
4670 {
4671         int err;
4672         struct net_device *dev = dev_get_by_name_rcu(net, ifr->ifr_name);
4673
4674         if (!dev)
4675                 return -ENODEV;
4676
4677         switch (cmd) {
4678         case SIOCGIFFLAGS:      /* Get interface flags */
4679                 ifr->ifr_flags = (short) dev_get_flags(dev);
4680                 return 0;
4681
4682         case SIOCGIFMETRIC:     /* Get the metric on the interface
4683                                    (currently unused) */
4684                 ifr->ifr_metric = 0;
4685                 return 0;
4686
4687         case SIOCGIFMTU:        /* Get the MTU of a device */
4688                 ifr->ifr_mtu = dev->mtu;
4689                 return 0;
4690
4691         case SIOCGIFHWADDR:
4692                 if (!dev->addr_len)
4693                         memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data);
4694                 else
4695                         memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr,
4696                                min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
4697                 ifr->ifr_hwaddr.sa_family = dev->type;
4698                 return 0;
4699
4700         case SIOCGIFSLAVE:
4701                 err = -EINVAL;
4702                 break;
4703
4704         case SIOCGIFMAP:
4705                 ifr->ifr_map.mem_start = dev->mem_start;
4706                 ifr->ifr_map.mem_end   = dev->mem_end;
4707                 ifr->ifr_map.base_addr = dev->base_addr;
4708                 ifr->ifr_map.irq       = dev->irq;
4709                 ifr->ifr_map.dma       = dev->dma;
4710                 ifr->ifr_map.port      = dev->if_port;
4711                 return 0;
4712
4713         case SIOCGIFINDEX:
4714                 ifr->ifr_ifindex = dev->ifindex;
4715                 return 0;
4716
4717         case SIOCGIFTXQLEN:
4718                 ifr->ifr_qlen = dev->tx_queue_len;
4719                 return 0;
4720
4721         default:
4722                 /* dev_ioctl() should ensure this case
4723                  * is never reached
4724                  */
4725                 WARN_ON(1);
4726                 err = -EINVAL;
4727                 break;
4728
4729         }
4730         return err;
4731 }
4732
4733 /*
4734  *      Perform the SIOCxIFxxx calls, inside rtnl_lock()
4735  */
4736 static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
4737 {
4738         int err;
4739         struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
4740         const struct net_device_ops *ops;
4741
4742         if (!dev)
4743                 return -ENODEV;
4744
4745         ops = dev->netdev_ops;
4746
4747         switch (cmd) {
4748         case SIOCSIFFLAGS:      /* Set interface flags */
4749                 return dev_change_flags(dev, ifr->ifr_flags);
4750
4751         case SIOCSIFMETRIC:     /* Set the metric on the interface
4752                                    (currently unused) */
4753                 return -EOPNOTSUPP;
4754
4755         case SIOCSIFMTU:        /* Set the MTU of a device */
4756                 return dev_set_mtu(dev, ifr->ifr_mtu);
4757
4758         case SIOCSIFHWADDR:
4759                 return dev_set_mac_address(dev, &ifr->ifr_hwaddr);
4760
4761         case SIOCSIFHWBROADCAST:
4762                 if (ifr->ifr_hwaddr.sa_family != dev->type)
4763                         return -EINVAL;
4764                 memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data,
4765                        min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
4766                 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4767                 return 0;
4768
4769         case SIOCSIFMAP:
4770                 if (ops->ndo_set_config) {
4771                         if (!netif_device_present(dev))
4772                                 return -ENODEV;
4773                         return ops->ndo_set_config(dev, &ifr->ifr_map);
4774                 }
4775                 return -EOPNOTSUPP;
4776
4777         case SIOCADDMULTI:
4778                 if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
4779                     ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
4780                         return -EINVAL;
4781                 if (!netif_device_present(dev))
4782                         return -ENODEV;
4783                 return dev_mc_add(dev, ifr->ifr_hwaddr.sa_data,
4784                                   dev->addr_len, 1);
4785
4786         case SIOCDELMULTI:
4787                 if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
4788                     ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
4789                         return -EINVAL;
4790                 if (!netif_device_present(dev))
4791                         return -ENODEV;
4792                 return dev_mc_delete(dev, ifr->ifr_hwaddr.sa_data,
4793                                      dev->addr_len, 1);
4794
4795         case SIOCSIFTXQLEN:
4796                 if (ifr->ifr_qlen < 0)
4797                         return -EINVAL;
4798                 dev->tx_queue_len = ifr->ifr_qlen;
4799                 return 0;
4800
4801         case SIOCSIFNAME:
4802                 ifr->ifr_newname[IFNAMSIZ-1] = '\0';
4803                 return dev_change_name(dev, ifr->ifr_newname);
4804
4805         /*
4806          *      Unknown or private ioctl
4807          */
4808         default:
4809                 if ((cmd >= SIOCDEVPRIVATE &&
4810                     cmd <= SIOCDEVPRIVATE + 15) ||
4811                     cmd == SIOCBONDENSLAVE ||
4812                     cmd == SIOCBONDRELEASE ||
4813                     cmd == SIOCBONDSETHWADDR ||
4814                     cmd == SIOCBONDSLAVEINFOQUERY ||
4815                     cmd == SIOCBONDINFOQUERY ||
4816                     cmd == SIOCBONDCHANGEACTIVE ||
4817                     cmd == SIOCGMIIPHY ||
4818                     cmd == SIOCGMIIREG ||
4819                     cmd == SIOCSMIIREG ||
4820                     cmd == SIOCBRADDIF ||
4821                     cmd == SIOCBRDELIF ||
4822                     cmd == SIOCSHWTSTAMP ||
4823                     cmd == SIOCWANDEV) {
4824                         err = -EOPNOTSUPP;
4825                         if (ops->ndo_do_ioctl) {
4826                                 if (netif_device_present(dev))
4827                                         err = ops->ndo_do_ioctl(dev, ifr, cmd);
4828                                 else
4829                                         err = -ENODEV;
4830                         }
4831                 } else
4832                         err = -EINVAL;
4833
4834         }
4835         return err;
4836 }
4837
4838 /*
4839  *      This function handles all "interface"-type I/O control requests. The actual
4840  *      'doing' part of this is dev_ifsioc above.
4841  */
4842
4843 /**
4844  *      dev_ioctl       -       network device ioctl
4845  *      @net: the applicable net namespace
4846  *      @cmd: command to issue
4847  *      @arg: pointer to a struct ifreq in user space
4848  *
4849  *      Issue ioctl functions to devices. This is normally called by the
4850  *      user space syscall interfaces but can sometimes be useful for
4851  *      other purposes. The return value is the return from the syscall if
4852  *      positive or a negative errno code on error.
4853  */
4854
4855 int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg)
4856 {
4857         struct ifreq ifr;
4858         int ret;
4859         char *colon;
4860
4861         /* One special case: SIOCGIFCONF takes ifconf argument
4862            and requires shared lock, because it sleeps writing
4863            to user space.
4864          */
4865
4866         if (cmd == SIOCGIFCONF) {
4867                 rtnl_lock();
4868                 ret = dev_ifconf(net, (char __user *) arg);
4869                 rtnl_unlock();
4870                 return ret;
4871         }
4872         if (cmd == SIOCGIFNAME)
4873                 return dev_ifname(net, (struct ifreq __user *)arg);
4874
4875         if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
4876                 return -EFAULT;
4877
4878         ifr.ifr_name[IFNAMSIZ-1] = 0;
4879
4880         colon = strchr(ifr.ifr_name, ':');
4881         if (colon)
4882                 *colon = 0;
4883
4884         /*
4885          *      See which interface the caller is talking about.
4886          */
4887
4888         switch (cmd) {
4889         /*
4890          *      These ioctl calls:
4891          *      - can be done by all.
4892          *      - atomic and do not require locking.
4893          *      - return a value
4894          */
4895         case SIOCGIFFLAGS:
4896         case SIOCGIFMETRIC:
4897         case SIOCGIFMTU:
4898         case SIOCGIFHWADDR:
4899         case SIOCGIFSLAVE:
4900         case SIOCGIFMAP:
4901         case SIOCGIFINDEX:
4902         case SIOCGIFTXQLEN:
4903                 dev_load(net, ifr.ifr_name);
4904                 rcu_read_lock();
4905                 ret = dev_ifsioc_locked(net, &ifr, cmd);
4906                 rcu_read_unlock();
4907                 if (!ret) {
4908                         if (colon)
4909                                 *colon = ':';
4910                         if (copy_to_user(arg, &ifr,
4911                                          sizeof(struct ifreq)))
4912                                 ret = -EFAULT;
4913                 }
4914                 return ret;
4915
4916         case SIOCETHTOOL:
4917                 dev_load(net, ifr.ifr_name);
4918                 rtnl_lock();
4919                 ret = dev_ethtool(net, &ifr);
4920                 rtnl_unlock();
4921                 if (!ret) {
4922                         if (colon)
4923                                 *colon = ':';
4924                         if (copy_to_user(arg, &ifr,
4925                                          sizeof(struct ifreq)))
4926                                 ret = -EFAULT;
4927                 }
4928                 return ret;
4929
4930         /*
4931          *      These ioctl calls:
4932          *      - require superuser power.
4933          *      - require strict serialization.
4934          *      - return a value
4935          */
4936         case SIOCGMIIPHY:
4937         case SIOCGMIIREG:
4938         case SIOCSIFNAME:
4939                 if (!capable(CAP_NET_ADMIN))
4940                         return -EPERM;
4941                 dev_load(net, ifr.ifr_name);
4942                 rtnl_lock();
4943                 ret = dev_ifsioc(net, &ifr, cmd);
4944                 rtnl_unlock();
4945                 if (!ret) {
4946                         if (colon)
4947                                 *colon = ':';
4948                         if (copy_to_user(arg, &ifr,
4949                                          sizeof(struct ifreq)))
4950                                 ret = -EFAULT;
4951                 }
4952                 return ret;
4953
4954         /*
4955          *      These ioctl calls:
4956          *      - require superuser power.
4957          *      - require strict serialization.
4958          *      - do not return a value
4959          */
4960         case SIOCSIFFLAGS:
4961         case SIOCSIFMETRIC:
4962         case SIOCSIFMTU:
4963         case SIOCSIFMAP:
4964         case SIOCSIFHWADDR:
4965         case SIOCSIFSLAVE:
4966         case SIOCADDMULTI:
4967         case SIOCDELMULTI:
4968         case SIOCSIFHWBROADCAST:
4969         case SIOCSIFTXQLEN:
4970         case SIOCSMIIREG:
4971         case SIOCBONDENSLAVE:
4972         case SIOCBONDRELEASE:
4973         case SIOCBONDSETHWADDR:
4974         case SIOCBONDCHANGEACTIVE:
4975         case SIOCBRADDIF:
4976         case SIOCBRDELIF:
4977         case SIOCSHWTSTAMP:
4978                 if (!capable(CAP_NET_ADMIN))
4979                         return -EPERM;
4980                 /* fall through */
4981         case SIOCBONDSLAVEINFOQUERY:
4982         case SIOCBONDINFOQUERY:
4983                 dev_load(net, ifr.ifr_name);
4984                 rtnl_lock();
4985                 ret = dev_ifsioc(net, &ifr, cmd);
4986                 rtnl_unlock();
4987                 return ret;
4988
4989         case SIOCGIFMEM:
4990                 /* Get the per device memory space. We can add this but
4991                  * currently do not support it */
4992         case SIOCSIFMEM:
4993                 /* Set the per device memory buffer space.
4994                  * Not applicable in our case */
4995         case SIOCSIFLINK:
4996                 return -EINVAL;
4997
4998         /*
4999          *      Unknown or private ioctl.
5000          */
5001         default:
5002                 if (cmd == SIOCWANDEV ||
5003                     (cmd >= SIOCDEVPRIVATE &&
5004                      cmd <= SIOCDEVPRIVATE + 15)) {
5005                         dev_load(net, ifr.ifr_name);
5006                         rtnl_lock();
5007                         ret = dev_ifsioc(net, &ifr, cmd);
5008                         rtnl_unlock();
5009                         if (!ret && copy_to_user(arg, &ifr,
5010                                                  sizeof(struct ifreq)))
5011                                 ret = -EFAULT;
5012                         return ret;
5013                 }
5014                 /* Take care of Wireless Extensions */
5015                 if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST)
5016                         return wext_handle_ioctl(net, &ifr, cmd, arg);
5017                 return -EINVAL;
5018         }
5019 }
5020
5021
5022 /**
5023  *      dev_new_index   -       allocate an ifindex
5024  *      @net: the applicable net namespace
5025  *
5026  *      Returns a suitable unique value for a new device interface
5027  *      number.  The caller must hold the rtnl semaphore or the
5028  *      dev_base_lock to be sure it remains unique.
5029  */
5030 static int dev_new_index(struct net *net)
5031 {
5032         static int ifindex;
5033         for (;;) {
5034                 if (++ifindex <= 0)
5035                         ifindex = 1;
5036                 if (!__dev_get_by_index(net, ifindex))
5037                         return ifindex;
5038         }
5039 }
5040
5041 /* Delayed registration/unregisteration */
5042 static LIST_HEAD(net_todo_list);
5043
5044 static void net_set_todo(struct net_device *dev)
5045 {
5046         list_add_tail(&dev->todo_list, &net_todo_list);
5047 }
5048
5049 static void rollback_registered_many(struct list_head *head)
5050 {
5051         struct net_device *dev, *tmp;
5052
5053         BUG_ON(dev_boot_phase);
5054         ASSERT_RTNL();
5055
5056         list_for_each_entry_safe(dev, tmp, head, unreg_list) {
5057                 /* Some devices call without registering
5058                  * for initialization unwind. Remove those
5059                  * devices and proceed with the remaining.
5060                  */
5061                 if (dev->reg_state == NETREG_UNINITIALIZED) {
5062                         pr_debug("unregister_netdevice: device %s/%p never "
5063                                  "was registered\n", dev->name, dev);
5064
5065                         WARN_ON(1);
5066                         list_del(&dev->unreg_list);
5067                         continue;
5068                 }
5069
5070                 BUG_ON(dev->reg_state != NETREG_REGISTERED);
5071
5072                 /* If device is running, close it first. */
5073                 dev_close(dev);
5074
5075                 /* And unlink it from device chain. */
5076                 unlist_netdevice(dev);
5077
5078                 dev->reg_state = NETREG_UNREGISTERING;
5079         }
5080
5081         synchronize_net();
5082
5083         list_for_each_entry(dev, head, unreg_list) {
5084                 /* Shutdown queueing discipline. */
5085                 dev_shutdown(dev);
5086
5087
5088                 /* Notify protocols, that we are about to destroy
5089                    this device. They should clean all the things.
5090                 */
5091                 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
5092
5093                 if (!dev->rtnl_link_ops ||
5094                     dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
5095                         rtmsg_ifinfo(RTM_DELLINK, dev, ~0U);
5096
5097                 /*
5098                  *      Flush the unicast and multicast chains
5099                  */
5100                 dev_unicast_flush(dev);
5101                 dev_addr_discard(dev);
5102
5103                 if (dev->netdev_ops->ndo_uninit)
5104                         dev->netdev_ops->ndo_uninit(dev);
5105
5106                 /* Notifier chain MUST detach us from master device. */
5107                 WARN_ON(dev->master);
5108
5109                 /* Remove entries from kobject tree */
5110                 netdev_unregister_kobject(dev);
5111         }
5112
5113         /* Process any work delayed until the end of the batch */
5114         dev = list_first_entry(head, struct net_device, unreg_list);
5115         call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);
5116
5117         synchronize_net();
5118
5119         list_for_each_entry(dev, head, unreg_list)
5120                 dev_put(dev);
5121 }
5122
5123 static void rollback_registered(struct net_device *dev)
5124 {
5125         LIST_HEAD(single);
5126
5127         list_add(&dev->unreg_list, &single);
5128         rollback_registered_many(&single);
5129 }
5130
5131 static void __netdev_init_queue_locks_one(struct net_device *dev,
5132                                           struct netdev_queue *dev_queue,
5133                                           void *_unused)
5134 {
5135         spin_lock_init(&dev_queue->_xmit_lock);
5136         netdev_set_xmit_lockdep_class(&dev_queue->_xmit_lock, dev->type);
5137         dev_queue->xmit_lock_owner = -1;
5138 }
5139
5140 static void netdev_init_queue_locks(struct net_device *dev)
5141 {
5142         netdev_for_each_tx_queue(dev, __netdev_init_queue_locks_one, NULL);
5143         __netdev_init_queue_locks_one(dev, &dev->rx_queue, NULL);
5144 }
5145
5146 unsigned long netdev_fix_features(unsigned long features, const char *name)
5147 {
5148         /* Fix illegal SG+CSUM combinations. */
5149         if ((features & NETIF_F_SG) &&
5150             !(features & NETIF_F_ALL_CSUM)) {
5151                 if (name)
5152                         printk(KERN_NOTICE "%s: Dropping NETIF_F_SG since no "
5153                                "checksum feature.\n", name);
5154                 features &= ~NETIF_F_SG;
5155         }
5156
5157         /* TSO requires that SG is present as well. */
5158         if ((features & NETIF_F_TSO) && !(features & NETIF_F_SG)) {
5159                 if (name)
5160                         printk(KERN_NOTICE "%s: Dropping NETIF_F_TSO since no "
5161                                "SG feature.\n", name);
5162                 features &= ~NETIF_F_TSO;
5163         }
5164
5165         if (features & NETIF_F_UFO) {
5166                 if (!(features & NETIF_F_GEN_CSUM)) {
5167                         if (name)
5168                                 printk(KERN_ERR "%s: Dropping NETIF_F_UFO "
5169                                        "since no NETIF_F_HW_CSUM feature.\n",
5170                                        name);
5171                         features &= ~NETIF_F_UFO;
5172                 }
5173
5174                 if (!(features & NETIF_F_SG)) {
5175                         if (name)
5176                                 printk(KERN_ERR "%s: Dropping NETIF_F_UFO "
5177                                        "since no NETIF_F_SG feature.\n", name);
5178                         features &= ~NETIF_F_UFO;
5179                 }
5180         }
5181
5182         return features;
5183 }
5184 EXPORT_SYMBOL(netdev_fix_features);
5185
5186 /**
5187  *      netif_stacked_transfer_operstate -      transfer operstate
5188  *      @rootdev: the root or lower level device to transfer state from
5189  *      @dev: the device to transfer operstate to
5190  *
5191  *      Transfer operational state from root to device. This is normally
5192  *      called when a stacking relationship exists between the root
5193  *      device and the device(a leaf device).
5194  */
5195 void netif_stacked_transfer_operstate(const struct net_device *rootdev,
5196                                         struct net_device *dev)
5197 {
5198         if (rootdev->operstate == IF_OPER_DORMANT)
5199                 netif_dormant_on(dev);
5200         else
5201                 netif_dormant_off(dev);
5202
5203         if (netif_carrier_ok(rootdev)) {
5204                 if (!netif_carrier_ok(dev))
5205                         netif_carrier_on(dev);
5206         } else {
5207                 if (netif_carrier_ok(dev))
5208                         netif_carrier_off(dev);
5209         }
5210 }
5211 EXPORT_SYMBOL(netif_stacked_transfer_operstate);
5212
5213 /**
5214  *      register_netdevice      - register a network device
5215  *      @dev: device to register
5216  *
5217  *      Take a completed network device structure and add it to the kernel
5218  *      interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
5219  *      chain. 0 is returned on success. A negative errno code is returned
5220  *      on a failure to set up the device, or if the name is a duplicate.
5221  *
5222  *      Callers must hold the rtnl semaphore. You may want
5223  *      register_netdev() instead of this.
5224  *
5225  *      BUGS:
5226  *      The locking appears insufficient to guarantee two parallel registers
5227  *      will not get the same name.
5228  */
5229
5230 int register_netdevice(struct net_device *dev)
5231 {
5232         int ret;
5233         struct net *net = dev_net(dev);
5234
5235         BUG_ON(dev_boot_phase);
5236         ASSERT_RTNL();
5237
5238         might_sleep();
5239
5240         /* When net_device's are persistent, this will be fatal. */
5241         BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
5242         BUG_ON(!net);
5243
5244         spin_lock_init(&dev->addr_list_lock);
5245         netdev_set_addr_lockdep_class(dev);
5246         netdev_init_queue_locks(dev);
5247
5248         dev->iflink = -1;
5249
5250         if (!dev->num_rx_queues) {
5251                 /*
5252                  * Allocate a single RX queue if driver never called
5253                  * alloc_netdev_mq
5254                  */
5255
5256                 dev->_rx = kzalloc(sizeof(struct netdev_rx_queue), GFP_KERNEL);
5257                 if (!dev->_rx) {
5258                         ret = -ENOMEM;
5259                         goto out;
5260                 }
5261
5262                 dev->_rx->first = dev->_rx;
5263                 atomic_set(&dev->_rx->count, 1);
5264                 dev->num_rx_queues = 1;
5265         }
5266
5267         /* Init, if this function is available */
5268         if (dev->netdev_ops->ndo_init) {
5269                 ret = dev->netdev_ops->ndo_init(dev);
5270                 if (ret) {
5271                         if (ret > 0)
5272                                 ret = -EIO;
5273                         goto out;
5274                 }
5275         }
5276
5277         ret = dev_get_valid_name(net, dev->name, dev->name, 0);
5278         if (ret)
5279                 goto err_uninit;
5280
5281         dev->ifindex = dev_new_index(net);
5282         if (dev->iflink == -1)
5283                 dev->iflink = dev->ifindex;
5284
5285         /* Fix illegal checksum combinations */
5286         if ((dev->features & NETIF_F_HW_CSUM) &&
5287             (dev->features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
5288                 printk(KERN_NOTICE "%s: mixed HW and IP checksum settings.\n",
5289                        dev->name);
5290                 dev->features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
5291         }
5292
5293         if ((dev->features & NETIF_F_NO_CSUM) &&
5294             (dev->features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
5295                 printk(KERN_NOTICE "%s: mixed no checksumming and other settings.\n",
5296                        dev->name);
5297                 dev->features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM);
5298         }
5299
5300         dev->features = netdev_fix_features(dev->features, dev->name);
5301
5302         /* Enable software GSO if SG is supported. */
5303         if (dev->features & NETIF_F_SG)
5304                 dev->features |= NETIF_F_GSO;
5305
5306         netdev_initialize_kobject(dev);
5307
5308         ret = call_netdevice_notifiers(NETDEV_POST_INIT, dev);
5309         ret = notifier_to_errno(ret);
5310         if (ret)
5311                 goto err_uninit;
5312
5313         ret = netdev_register_kobject(dev);
5314         if (ret)
5315                 goto err_uninit;
5316         dev->reg_state = NETREG_REGISTERED;
5317
5318         /*
5319          *      Default initial state at registry is that the
5320          *      device is present.
5321          */
5322
5323         set_bit(__LINK_STATE_PRESENT, &dev->state);
5324
5325         dev_init_scheduler(dev);
5326         dev_hold(dev);
5327         list_netdevice(dev);
5328
5329         /* Notify protocols, that a new device appeared. */
5330         ret = call_netdevice_notifiers(NETDEV_REGISTER, dev);
5331         ret = notifier_to_errno(ret);
5332         if (ret) {
5333                 rollback_registered(dev);
5334                 dev->reg_state = NETREG_UNREGISTERED;
5335         }
5336         /*
5337          *      Prevent userspace races by waiting until the network
5338          *      device is fully setup before sending notifications.
5339          */
5340         if (!dev->rtnl_link_ops ||
5341             dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
5342                 rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U);
5343
5344 out:
5345         return ret;
5346
5347 err_uninit:
5348         if (dev->netdev_ops->ndo_uninit)
5349                 dev->netdev_ops->ndo_uninit(dev);
5350         goto out;
5351 }
5352 EXPORT_SYMBOL(register_netdevice);
5353
5354 /**
5355  *      init_dummy_netdev       - init a dummy network device for NAPI
5356  *      @dev: device to init
5357  *
5358  *      This takes a network device structure and initialize the minimum
5359  *      amount of fields so it can be used to schedule NAPI polls without
5360  *      registering a full blown interface. This is to be used by drivers
5361  *      that need to tie several hardware interfaces to a single NAPI
5362  *      poll scheduler due to HW limitations.
5363  */
5364 int init_dummy_netdev(struct net_device *dev)
5365 {
5366         /* Clear everything. Note we don't initialize spinlocks
5367          * are they aren't supposed to be taken by any of the
5368          * NAPI code and this dummy netdev is supposed to be
5369          * only ever used for NAPI polls
5370          */
5371         memset(dev, 0, sizeof(struct net_device));
5372
5373         /* make sure we BUG if trying to hit standard
5374          * register/unregister code path
5375          */
5376         dev->reg_state = NETREG_DUMMY;
5377
5378         /* initialize the ref count */
5379         atomic_set(&dev->refcnt, 1);
5380
5381         /* NAPI wants this */
5382         INIT_LIST_HEAD(&dev->napi_list);
5383
5384         /* a dummy interface is started by default */
5385         set_bit(__LINK_STATE_PRESENT, &dev->state);
5386         set_bit(__LINK_STATE_START, &dev->state);
5387
5388         return 0;
5389 }
5390 EXPORT_SYMBOL_GPL(init_dummy_netdev);
5391
5392
5393 /**
5394  *      register_netdev - register a network device
5395  *      @dev: device to register
5396  *
5397  *      Take a completed network device structure and add it to the kernel
5398  *      interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
5399  *      chain. 0 is returned on success. A negative errno code is returned
5400  *      on a failure to set up the device, or if the name is a duplicate.
5401  *
5402  *      This is a wrapper around register_netdevice that takes the rtnl semaphore
5403  *      and expands the device name if you passed a format string to
5404  *      alloc_netdev.
5405  */
5406 int register_netdev(struct net_device *dev)
5407 {
5408         int err;
5409
5410         rtnl_lock();
5411
5412         /*
5413          * If the name is a format string the caller wants us to do a
5414          * name allocation.
5415          */
5416         if (strchr(dev->name, '%')) {
5417                 err = dev_alloc_name(dev, dev->name);
5418                 if (err < 0)
5419                         goto out;
5420         }
5421
5422         err = register_netdevice(dev);
5423 out:
5424         rtnl_unlock();
5425         return err;
5426 }
5427 EXPORT_SYMBOL(register_netdev);
5428
5429 /*
5430  * netdev_wait_allrefs - wait until all references are gone.
5431  *
5432  * This is called when unregistering network devices.
5433  *
5434  * Any protocol or device that holds a reference should register
5435  * for netdevice notification, and cleanup and put back the
5436  * reference if they receive an UNREGISTER event.
5437  * We can get stuck here if buggy protocols don't correctly
5438  * call dev_put.
5439  */
5440 static void netdev_wait_allrefs(struct net_device *dev)
5441 {
5442         unsigned long rebroadcast_time, warning_time;
5443
5444         linkwatch_forget_dev(dev);
5445
5446         rebroadcast_time = warning_time = jiffies;
5447         while (atomic_read(&dev->refcnt) != 0) {
5448                 if (time_after(jiffies, rebroadcast_time + 1 * HZ)) {
5449                         rtnl_lock();
5450
5451                         /* Rebroadcast unregister notification */
5452                         call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
5453                         /* don't resend NETDEV_UNREGISTER_BATCH, _BATCH users
5454                          * should have already handle it the first time */
5455
5456                         if (test_bit(__LINK_STATE_LINKWATCH_PENDING,
5457                                      &dev->state)) {
5458                                 /* We must not have linkwatch events
5459                                  * pending on unregister. If this
5460                                  * happens, we simply run the queue
5461                                  * unscheduled, resulting in a noop
5462                                  * for this device.
5463                                  */
5464                                 linkwatch_run_queue();
5465                         }
5466
5467                         __rtnl_unlock();
5468
5469                         rebroadcast_time = jiffies;
5470                 }
5471
5472                 msleep(250);
5473
5474                 if (time_after(jiffies, warning_time + 10 * HZ)) {
5475                         printk(KERN_EMERG "unregister_netdevice: "
5476                                "waiting for %s to become free. Usage "
5477                                "count = %d\n",
5478                                dev->name, atomic_read(&dev->refcnt));
5479                         warning_time = jiffies;
5480                 }
5481         }
5482 }
5483
5484 /* The sequence is:
5485  *
5486  *      rtnl_lock();
5487  *      ...
5488  *      register_netdevice(x1);
5489  *      register_netdevice(x2);
5490  *      ...
5491  *      unregister_netdevice(y1);
5492  *      unregister_netdevice(y2);
5493  *      ...
5494  *      rtnl_unlock();
5495  *      free_netdev(y1);
5496  *      free_netdev(y2);
5497  *
5498  * We are invoked by rtnl_unlock().
5499  * This allows us to deal with problems:
5500  * 1) We can delete sysfs objects which invoke hotplug
5501  *    without deadlocking with linkwatch via keventd.
5502  * 2) Since we run with the RTNL semaphore not held, we can sleep
5503  *    safely in order to wait for the netdev refcnt to drop to zero.
5504  *
5505  * We must not return until all unregister events added during
5506  * the interval the lock was held have been completed.
5507  */
5508 void netdev_run_todo(void)
5509 {
5510         struct list_head list;
5511
5512         /* Snapshot list, allow later requests */
5513         list_replace_init(&net_todo_list, &list);
5514
5515         __rtnl_unlock();
5516
5517         while (!list_empty(&list)) {
5518                 struct net_device *dev
5519                         = list_first_entry(&list, struct net_device, todo_list);
5520                 list_del(&dev->todo_list);
5521
5522                 if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) {
5523                         printk(KERN_ERR "network todo '%s' but state %d\n",
5524                                dev->name, dev->reg_state);
5525                         dump_stack();
5526                         continue;
5527                 }
5528
5529                 dev->reg_state = NETREG_UNREGISTERED;
5530
5531                 on_each_cpu(flush_backlog, dev, 1);
5532
5533                 netdev_wait_allrefs(dev);
5534
5535                 /* paranoia */
5536                 BUG_ON(atomic_read(&dev->refcnt));
5537                 WARN_ON(dev->ip_ptr);
5538                 WARN_ON(dev->ip6_ptr);
5539                 WARN_ON(dev->dn_ptr);
5540
5541                 if (dev->destructor)
5542                         dev->destructor(dev);
5543
5544                 /* Free network device */
5545                 kobject_put(&dev->dev.kobj);
5546         }
5547 }
5548
5549 /**
5550  *      dev_txq_stats_fold - fold tx_queues stats
5551  *      @dev: device to get statistics from
5552  *      @stats: struct net_device_stats to hold results
5553  */
5554 void dev_txq_stats_fold(const struct net_device *dev,
5555                         struct net_device_stats *stats)
5556 {
5557         unsigned long tx_bytes = 0, tx_packets = 0, tx_dropped = 0;
5558         unsigned int i;
5559         struct netdev_queue *txq;
5560
5561         for (i = 0; i < dev->num_tx_queues; i++) {
5562                 txq = netdev_get_tx_queue(dev, i);
5563                 tx_bytes   += txq->tx_bytes;
5564                 tx_packets += txq->tx_packets;
5565                 tx_dropped += txq->tx_dropped;
5566         }
5567         if (tx_bytes || tx_packets || tx_dropped) {
5568                 stats->tx_bytes   = tx_bytes;
5569                 stats->tx_packets = tx_packets;
5570                 stats->tx_dropped = tx_dropped;
5571         }
5572 }
5573 EXPORT_SYMBOL(dev_txq_stats_fold);
5574
5575 /**
5576  *      dev_get_stats   - get network device statistics
5577  *      @dev: device to get statistics from
5578  *
5579  *      Get network statistics from device. The device driver may provide
5580  *      its own method by setting dev->netdev_ops->get_stats; otherwise
5581  *      the internal statistics structure is used.
5582  */
5583 const struct net_device_stats *dev_get_stats(struct net_device *dev)
5584 {
5585         const struct net_device_ops *ops = dev->netdev_ops;
5586
5587         if (ops->ndo_get_stats)
5588                 return ops->ndo_get_stats(dev);
5589
5590         dev_txq_stats_fold(dev, &dev->stats);
5591         return &dev->stats;
5592 }
5593 EXPORT_SYMBOL(dev_get_stats);
5594
5595 static void netdev_init_one_queue(struct net_device *dev,
5596                                   struct netdev_queue *queue,
5597                                   void *_unused)
5598 {
5599         queue->dev = dev;
5600 }
5601
5602 static void netdev_init_queues(struct net_device *dev)
5603 {
5604         netdev_init_one_queue(dev, &dev->rx_queue, NULL);
5605         netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL);
5606         spin_lock_init(&dev->tx_global_lock);
5607 }
5608
5609 /**
5610  *      alloc_netdev_mq - allocate network device
5611  *      @sizeof_priv:   size of private data to allocate space for
5612  *      @name:          device name format string
5613  *      @setup:         callback to initialize device
5614  *      @queue_count:   the number of subqueues to allocate
5615  *
5616  *      Allocates a struct net_device with private data area for driver use
5617  *      and performs basic initialization.  Also allocates subquue structs
5618  *      for each queue on the device at the end of the netdevice.
5619  */
5620 struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
5621                 void (*setup)(struct net_device *), unsigned int queue_count)
5622 {
5623         struct netdev_queue *tx;
5624         struct netdev_rx_queue *rx;
5625         struct net_device *dev;
5626         size_t alloc_size;
5627         struct net_device *p;
5628         int i;
5629
5630         BUG_ON(strlen(name) >= sizeof(dev->name));
5631
5632         alloc_size = sizeof(struct net_device);
5633         if (sizeof_priv) {
5634                 /* ensure 32-byte alignment of private area */
5635                 alloc_size = ALIGN(alloc_size, NETDEV_ALIGN);
5636                 alloc_size += sizeof_priv;
5637         }
5638         /* ensure 32-byte alignment of whole construct */
5639         alloc_size += NETDEV_ALIGN - 1;
5640
5641         p = kzalloc(alloc_size, GFP_KERNEL);
5642         if (!p) {
5643                 printk(KERN_ERR "alloc_netdev: Unable to allocate device.\n");
5644                 return NULL;
5645         }
5646
5647         tx = kcalloc(queue_count, sizeof(struct netdev_queue), GFP_KERNEL);
5648         if (!tx) {
5649                 printk(KERN_ERR "alloc_netdev: Unable to allocate "
5650                        "tx qdiscs.\n");
5651                 goto free_p;
5652         }
5653
5654         rx = kcalloc(queue_count, sizeof(struct netdev_rx_queue), GFP_KERNEL);
5655         if (!rx) {
5656                 printk(KERN_ERR "alloc_netdev: Unable to allocate "
5657                        "rx queues.\n");
5658                 goto free_tx;
5659         }
5660
5661         atomic_set(&rx->count, queue_count);
5662
5663         /*
5664          * Set a pointer to first element in the array which holds the
5665          * reference count.
5666          */
5667         for (i = 0; i < queue_count; i++)
5668                 rx[i].first = rx;
5669
5670         dev = PTR_ALIGN(p, NETDEV_ALIGN);
5671         dev->padded = (char *)dev - (char *)p;
5672
5673         if (dev_addr_init(dev))
5674                 goto free_rx;
5675
5676         dev_unicast_init(dev);
5677
5678         dev_net_set(dev, &init_net);
5679
5680         dev->_tx = tx;
5681         dev->num_tx_queues = queue_count;
5682         dev->real_num_tx_queues = queue_count;
5683
5684         dev->_rx = rx;
5685         dev->num_rx_queues = queue_count;
5686
5687         dev->gso_max_size = GSO_MAX_SIZE;
5688
5689         netdev_init_queues(dev);
5690
5691         INIT_LIST_HEAD(&dev->ethtool_ntuple_list.list);
5692         dev->ethtool_ntuple_list.count = 0;
5693         INIT_LIST_HEAD(&dev->napi_list);
5694         INIT_LIST_HEAD(&dev->unreg_list);
5695         INIT_LIST_HEAD(&dev->link_watch_list);
5696         dev->priv_flags = IFF_XMIT_DST_RELEASE;
5697         setup(dev);
5698         strcpy(dev->name, name);
5699         return dev;
5700
5701 free_rx:
5702         kfree(rx);
5703 free_tx:
5704         kfree(tx);
5705 free_p:
5706         kfree(p);
5707         return NULL;
5708 }
5709 EXPORT_SYMBOL(alloc_netdev_mq);
5710
5711 /**
5712  *      free_netdev - free network device
5713  *      @dev: device
5714  *
5715  *      This function does the last stage of destroying an allocated device
5716  *      interface. The reference to the device object is released.
5717  *      If this is the last reference then it will be freed.
5718  */
5719 void free_netdev(struct net_device *dev)
5720 {
5721         struct napi_struct *p, *n;
5722
5723         release_net(dev_net(dev));
5724
5725         kfree(dev->_tx);
5726
5727         /* Flush device addresses */
5728         dev_addr_flush(dev);
5729
5730         /* Clear ethtool n-tuple list */
5731         ethtool_ntuple_flush(dev);
5732
5733         list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
5734                 netif_napi_del(p);
5735
5736         /*  Compatibility with error handling in drivers */
5737         if (dev->reg_state == NETREG_UNINITIALIZED) {
5738                 kfree((char *)dev - dev->padded);
5739                 return;
5740         }
5741
5742         BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
5743         dev->reg_state = NETREG_RELEASED;
5744
5745         /* will free via device release */
5746         put_device(&dev->dev);
5747 }
5748 EXPORT_SYMBOL(free_netdev);
5749
5750 /**
5751  *      synchronize_net -  Synchronize with packet receive processing
5752  *
5753  *      Wait for packets currently being received to be done.
5754  *      Does not block later packets from starting.
5755  */
5756 void synchronize_net(void)
5757 {
5758         might_sleep();
5759         synchronize_rcu();
5760 }
5761 EXPORT_SYMBOL(synchronize_net);
5762
5763 /**
5764  *      unregister_netdevice_queue - remove device from the kernel
5765  *      @dev: device
5766  *      @head: list
5767  *
5768  *      This function shuts down a device interface and removes it
5769  *      from the kernel tables.
5770  *      If head not NULL, device is queued to be unregistered later.
5771  *
5772  *      Callers must hold the rtnl semaphore.  You may want
5773  *      unregister_netdev() instead of this.
5774  */
5775
5776 void unregister_netdevice_queue(struct net_device *dev, struct list_head *head)
5777 {
5778         ASSERT_RTNL();
5779
5780         if (head) {
5781                 list_move_tail(&dev->unreg_list, head);
5782         } else {
5783                 rollback_registered(dev);
5784                 /* Finish processing unregister after unlock */
5785                 net_set_todo(dev);
5786         }
5787 }
5788 EXPORT_SYMBOL(unregister_netdevice_queue);
5789
5790 /**
5791  *      unregister_netdevice_many - unregister many devices
5792  *      @head: list of devices
5793  */
5794 void unregister_netdevice_many(struct list_head *head)
5795 {
5796         struct net_device *dev;
5797
5798         if (!list_empty(head)) {
5799                 rollback_registered_many(head);
5800                 list_for_each_entry(dev, head, unreg_list)
5801                         net_set_todo(dev);
5802         }
5803 }
5804 EXPORT_SYMBOL(unregister_netdevice_many);
5805
5806 /**
5807  *      unregister_netdev - remove device from the kernel
5808  *      @dev: device
5809  *
5810  *      This function shuts down a device interface and removes it
5811  *      from the kernel tables.
5812  *
5813  *      This is just a wrapper for unregister_netdevice that takes
5814  *      the rtnl semaphore.  In general you want to use this and not
5815  *      unregister_netdevice.
5816  */
5817 void unregister_netdev(struct net_device *dev)
5818 {
5819         rtnl_lock();
5820         unregister_netdevice(dev);
5821         rtnl_unlock();
5822 }
5823 EXPORT_SYMBOL(unregister_netdev);
5824
5825 /**
5826  *      dev_change_net_namespace - move device to different nethost namespace
5827  *      @dev: device
5828  *      @net: network namespace
5829  *      @pat: If not NULL name pattern to try if the current device name
5830  *            is already taken in the destination network namespace.
5831  *
5832  *      This function shuts down a device interface and moves it
5833  *      to a new network namespace. On success 0 is returned, on
5834  *      a failure a netagive errno code is returned.
5835  *
5836  *      Callers must hold the rtnl semaphore.
5837  */
5838
5839 int dev_change_net_namespace(struct net_device *dev, struct net *net, const char *pat)
5840 {
5841         int err;
5842
5843         ASSERT_RTNL();
5844
5845         /* Don't allow namespace local devices to be moved. */
5846         err = -EINVAL;
5847         if (dev->features & NETIF_F_NETNS_LOCAL)
5848                 goto out;
5849
5850 #ifdef CONFIG_SYSFS
5851         /* Don't allow real devices to be moved when sysfs
5852          * is enabled.
5853          */
5854         err = -EINVAL;
5855         if (dev->dev.parent)
5856                 goto out;
5857 #endif
5858
5859         /* Ensure the device has been registrered */
5860         err = -EINVAL;
5861         if (dev->reg_state != NETREG_REGISTERED)
5862                 goto out;
5863
5864         /* Get out if there is nothing todo */
5865         err = 0;
5866         if (net_eq(dev_net(dev), net))
5867                 goto out;
5868
5869         /* Pick the destination device name, and ensure
5870          * we can use it in the destination network namespace.
5871          */
5872         err = -EEXIST;
5873         if (__dev_get_by_name(net, dev->name)) {
5874                 /* We get here if we can't use the current device name */
5875                 if (!pat)
5876                         goto out;
5877                 if (dev_get_valid_name(net, pat, dev->name, 1))
5878                         goto out;
5879         }
5880
5881         /*
5882          * And now a mini version of register_netdevice unregister_netdevice.
5883          */
5884
5885         /* If device is running close it first. */
5886         dev_close(dev);
5887
5888         /* And unlink it from device chain */
5889         err = -ENODEV;
5890         unlist_netdevice(dev);
5891
5892         synchronize_net();
5893
5894         /* Shutdown queueing discipline. */
5895         dev_shutdown(dev);
5896
5897         /* Notify protocols, that we are about to destroy
5898            this device. They should clean all the things.
5899         */
5900         call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
5901         call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);
5902
5903         /*
5904          *      Flush the unicast and multicast chains
5905          */
5906         dev_unicast_flush(dev);
5907         dev_addr_discard(dev);
5908
5909         netdev_unregister_kobject(dev);
5910
5911         /* Actually switch the network namespace */
5912         dev_net_set(dev, net);
5913
5914         /* If there is an ifindex conflict assign a new one */
5915         if (__dev_get_by_index(net, dev->ifindex)) {
5916                 int iflink = (dev->iflink == dev->ifindex);
5917                 dev->ifindex = dev_new_index(net);
5918                 if (iflink)
5919                         dev->iflink = dev->ifindex;
5920         }
5921
5922         /* Fixup kobjects */
5923         err = netdev_register_kobject(dev);
5924         WARN_ON(err);
5925
5926         /* Add the device back in the hashes */
5927         list_netdevice(dev);
5928
5929         /* Notify protocols, that a new device appeared. */
5930         call_netdevice_notifiers(NETDEV_REGISTER, dev);
5931
5932         /*
5933          *      Prevent userspace races by waiting until the network
5934          *      device is fully setup before sending notifications.
5935          */
5936         rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U);
5937
5938         synchronize_net();
5939         err = 0;
5940 out:
5941         return err;
5942 }
5943 EXPORT_SYMBOL_GPL(dev_change_net_namespace);
5944
5945 static int dev_cpu_callback(struct notifier_block *nfb,
5946                             unsigned long action,
5947                             void *ocpu)
5948 {
5949         struct sk_buff **list_skb;
5950         struct Qdisc **list_net;
5951         struct sk_buff *skb;
5952         unsigned int cpu, oldcpu = (unsigned long)ocpu;
5953         struct softnet_data *sd, *oldsd;
5954
5955         if (action != CPU_DEAD && action != CPU_DEAD_FROZEN)
5956                 return NOTIFY_OK;
5957
5958         local_irq_disable();
5959         cpu = smp_processor_id();
5960         sd = &per_cpu(softnet_data, cpu);
5961         oldsd = &per_cpu(softnet_data, oldcpu);
5962
5963         /* Find end of our completion_queue. */
5964         list_skb = &sd->completion_queue;
5965         while (*list_skb)
5966                 list_skb = &(*list_skb)->next;
5967         /* Append completion queue from offline CPU. */
5968         *list_skb = oldsd->completion_queue;
5969         oldsd->completion_queue = NULL;
5970
5971         /* Find end of our output_queue. */
5972         list_net = &sd->output_queue;
5973         while (*list_net)
5974                 list_net = &(*list_net)->next_sched;
5975         /* Append output queue from offline CPU. */
5976         *list_net = oldsd->output_queue;
5977         oldsd->output_queue = NULL;
5978
5979         raise_softirq_irqoff(NET_TX_SOFTIRQ);
5980         local_irq_enable();
5981
5982         /* Process offline CPU's input_pkt_queue */
5983         while ((skb = __skb_dequeue(&oldsd->input_pkt_queue)))
5984                 netif_rx(skb);
5985
5986         return NOTIFY_OK;
5987 }
5988
5989
5990 /**
5991  *      netdev_increment_features - increment feature set by one
5992  *      @all: current feature set
5993  *      @one: new feature set
5994  *      @mask: mask feature set
5995  *
5996  *      Computes a new feature set after adding a device with feature set
5997  *      @one to the master device with current feature set @all.  Will not
5998  *      enable anything that is off in @mask. Returns the new feature set.
5999  */
6000 unsigned long netdev_increment_features(unsigned long all, unsigned long one,
6001                                         unsigned long mask)
6002 {
6003         /* If device needs checksumming, downgrade to it. */
6004         if (all & NETIF_F_NO_CSUM && !(one & NETIF_F_NO_CSUM))
6005                 all ^= NETIF_F_NO_CSUM | (one & NETIF_F_ALL_CSUM);
6006         else if (mask & NETIF_F_ALL_CSUM) {
6007                 /* If one device supports v4/v6 checksumming, set for all. */
6008                 if (one & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM) &&
6009                     !(all & NETIF_F_GEN_CSUM)) {
6010                         all &= ~NETIF_F_ALL_CSUM;
6011                         all |= one & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM);
6012                 }
6013
6014                 /* If one device supports hw checksumming, set for all. */
6015                 if (one & NETIF_F_GEN_CSUM && !(all & NETIF_F_GEN_CSUM)) {
6016                         all &= ~NETIF_F_ALL_CSUM;
6017                         all |= NETIF_F_HW_CSUM;
6018                 }
6019         }
6020
6021         one |= NETIF_F_ALL_CSUM;
6022
6023         one |= all & NETIF_F_ONE_FOR_ALL;
6024         all &= one | NETIF_F_LLTX | NETIF_F_GSO | NETIF_F_UFO;
6025         all |= one & mask & NETIF_F_ONE_FOR_ALL;
6026
6027         return all;
6028 }
6029 EXPORT_SYMBOL(netdev_increment_features);
6030
6031 static struct hlist_head *netdev_create_hash(void)
6032 {
6033         int i;
6034         struct hlist_head *hash;
6035
6036         hash = kmalloc(sizeof(*hash) * NETDEV_HASHENTRIES, GFP_KERNEL);
6037         if (hash != NULL)
6038                 for (i = 0; i < NETDEV_HASHENTRIES; i++)
6039                         INIT_HLIST_HEAD(&hash[i]);
6040
6041         return hash;
6042 }
6043
6044 /* Initialize per network namespace state */
6045 static int __net_init netdev_init(struct net *net)
6046 {
6047         INIT_LIST_HEAD(&net->dev_base_head);
6048
6049         net->dev_name_head = netdev_create_hash();
6050         if (net->dev_name_head == NULL)
6051                 goto err_name;
6052
6053         net->dev_index_head = netdev_create_hash();
6054         if (net->dev_index_head == NULL)
6055                 goto err_idx;
6056
6057         return 0;
6058
6059 err_idx:
6060         kfree(net->dev_name_head);
6061 err_name:
6062         return -ENOMEM;
6063 }
6064
6065 /**
6066  *      netdev_drivername - network driver for the device
6067  *      @dev: network device
6068  *      @buffer: buffer for resulting name
6069  *      @len: size of buffer
6070  *
6071  *      Determine network driver for device.
6072  */
6073 char *netdev_drivername(const struct net_device *dev, char *buffer, int len)
6074 {
6075         const struct device_driver *driver;
6076         const struct device *parent;
6077
6078         if (len <= 0 || !buffer)
6079                 return buffer;
6080         buffer[0] = 0;
6081
6082         parent = dev->dev.parent;
6083
6084         if (!parent)
6085                 return buffer;
6086
6087         driver = parent->driver;
6088         if (driver && driver->name)
6089                 strlcpy(buffer, driver->name, len);
6090         return buffer;
6091 }
6092
6093 static void __net_exit netdev_exit(struct net *net)
6094 {
6095         kfree(net->dev_name_head);
6096         kfree(net->dev_index_head);
6097 }
6098
6099 static struct pernet_operations __net_initdata netdev_net_ops = {
6100         .init = netdev_init,
6101         .exit = netdev_exit,
6102 };
6103
6104 static void __net_exit default_device_exit(struct net *net)
6105 {
6106         struct net_device *dev, *aux;
6107         /*
6108          * Push all migratable network devices back to the
6109          * initial network namespace
6110          */
6111         rtnl_lock();
6112         for_each_netdev_safe(net, dev, aux) {
6113                 int err;
6114                 char fb_name[IFNAMSIZ];
6115
6116                 /* Ignore unmoveable devices (i.e. loopback) */
6117                 if (dev->features & NETIF_F_NETNS_LOCAL)
6118                         continue;
6119
6120                 /* Leave virtual devices for the generic cleanup */
6121                 if (dev->rtnl_link_ops)
6122                         continue;
6123
6124                 /* Push remaing network devices to init_net */
6125                 snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);
6126                 err = dev_change_net_namespace(dev, &init_net, fb_name);
6127                 if (err) {
6128                         printk(KERN_EMERG "%s: failed to move %s to init_net: %d\n",
6129                                 __func__, dev->name, err);
6130                         BUG();
6131                 }
6132         }
6133         rtnl_unlock();
6134 }
6135
6136 static void __net_exit default_device_exit_batch(struct list_head *net_list)
6137 {
6138         /* At exit all network devices most be removed from a network
6139          * namespace.  Do this in the reverse order of registeration.
6140          * Do this across as many network namespaces as possible to
6141          * improve batching efficiency.
6142          */
6143         struct net_device *dev;
6144         struct net *net;
6145         LIST_HEAD(dev_kill_list);
6146
6147         rtnl_lock();
6148         list_for_each_entry(net, net_list, exit_list) {
6149                 for_each_netdev_reverse(net, dev) {
6150                         if (dev->rtnl_link_ops)
6151                                 dev->rtnl_link_ops->dellink(dev, &dev_kill_list);
6152                         else
6153                                 unregister_netdevice_queue(dev, &dev_kill_list);
6154                 }
6155         }
6156         unregister_netdevice_many(&dev_kill_list);
6157         rtnl_unlock();
6158 }
6159
6160 static struct pernet_operations __net_initdata default_device_ops = {
6161         .exit = default_device_exit,
6162         .exit_batch = default_device_exit_batch,
6163 };
6164
6165 /*
6166  *      Initialize the DEV module. At boot time this walks the device list and
6167  *      unhooks any devices that fail to initialise (normally hardware not
6168  *      present) and leaves us with a valid list of present and active devices.
6169  *
6170  */
6171
6172 /*
6173  *       This is called single threaded during boot, so no need
6174  *       to take the rtnl semaphore.
6175  */
6176 static int __init net_dev_init(void)
6177 {
6178         int i, rc = -ENOMEM;
6179
6180         BUG_ON(!dev_boot_phase);
6181
6182         if (dev_proc_init())
6183                 goto out;
6184
6185         if (netdev_kobject_init())
6186                 goto out;
6187
6188         INIT_LIST_HEAD(&ptype_all);
6189         for (i = 0; i < PTYPE_HASH_SIZE; i++)
6190                 INIT_LIST_HEAD(&ptype_base[i]);
6191
6192         if (register_pernet_subsys(&netdev_net_ops))
6193                 goto out;
6194
6195         /*
6196          *      Initialise the packet receive queues.
6197          */
6198
6199         for_each_possible_cpu(i) {
6200                 struct softnet_data *queue;
6201
6202                 queue = &per_cpu(softnet_data, i);
6203                 skb_queue_head_init(&queue->input_pkt_queue);
6204                 queue->completion_queue = NULL;
6205                 INIT_LIST_HEAD(&queue->poll_list);
6206
6207                 queue->csd.func = trigger_softirq;
6208                 queue->csd.info = queue;
6209                 queue->csd.flags = 0;
6210
6211                 queue->backlog.poll = process_backlog;
6212                 queue->backlog.weight = weight_p;
6213                 queue->backlog.gro_list = NULL;
6214                 queue->backlog.gro_count = 0;
6215         }
6216
6217         dev_boot_phase = 0;
6218
6219         /* The loopback device is special if any other network devices
6220          * is present in a network namespace the loopback device must
6221          * be present. Since we now dynamically allocate and free the
6222          * loopback device ensure this invariant is maintained by
6223          * keeping the loopback device as the first device on the
6224          * list of network devices.  Ensuring the loopback devices
6225          * is the first device that appears and the last network device
6226          * that disappears.
6227          */
6228         if (register_pernet_device(&loopback_net_ops))
6229                 goto out;
6230
6231         if (register_pernet_device(&default_device_ops))
6232                 goto out;
6233
6234         open_softirq(NET_TX_SOFTIRQ, net_tx_action);
6235         open_softirq(NET_RX_SOFTIRQ, net_rx_action);
6236
6237         hotcpu_notifier(dev_cpu_callback, 0);
6238         dst_init();
6239         dev_mcast_init();
6240         rc = 0;
6241 out:
6242         return rc;
6243 }
6244
6245 subsys_initcall(net_dev_init);
6246
6247 static int __init initialize_hashrnd(void)
6248 {
6249         get_random_bytes(&hashrnd, sizeof(hashrnd));
6250         return 0;
6251 }
6252
6253 late_initcall_sync(initialize_hashrnd);
6254