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