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