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