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