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