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