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