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