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