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