Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

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