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