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