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