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