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