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