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