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