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