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