xref: /linux/net/core/dev.c (revision 5e8d780d745c1619aba81fe7166c5a4b5cad2b84)
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/config.h>
80 #include <linux/cpu.h>
81 #include <linux/types.h>
82 #include <linux/kernel.h>
83 #include <linux/sched.h>
84 #include <linux/mutex.h>
85 #include <linux/string.h>
86 #include <linux/mm.h>
87 #include <linux/socket.h>
88 #include <linux/sockios.h>
89 #include <linux/errno.h>
90 #include <linux/interrupt.h>
91 #include <linux/if_ether.h>
92 #include <linux/netdevice.h>
93 #include <linux/etherdevice.h>
94 #include <linux/notifier.h>
95 #include <linux/skbuff.h>
96 #include <net/sock.h>
97 #include <linux/rtnetlink.h>
98 #include <linux/proc_fs.h>
99 #include <linux/seq_file.h>
100 #include <linux/stat.h>
101 #include <linux/if_bridge.h>
102 #include <linux/divert.h>
103 #include <net/dst.h>
104 #include <net/pkt_sched.h>
105 #include <net/checksum.h>
106 #include <linux/highmem.h>
107 #include <linux/init.h>
108 #include <linux/kmod.h>
109 #include <linux/module.h>
110 #include <linux/kallsyms.h>
111 #include <linux/netpoll.h>
112 #include <linux/rcupdate.h>
113 #include <linux/delay.h>
114 #include <linux/wireless.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 
121 /*
122  *	The list of packet types we will receive (as opposed to discard)
123  *	and the routines to invoke.
124  *
125  *	Why 16. Because with 16 the only overlap we get on a hash of the
126  *	low nibble of the protocol value is RARP/SNAP/X.25.
127  *
128  *      NOTE:  That is no longer true with the addition of VLAN tags.  Not
129  *             sure which should go first, but I bet it won't make much
130  *             difference if we are running VLANs.  The good news is that
131  *             this protocol won't be in the list unless compiled in, so
132  *             the average user (w/out VLANs) will not be adversely affected.
133  *             --BLG
134  *
135  *		0800	IP
136  *		8100    802.1Q VLAN
137  *		0001	802.3
138  *		0002	AX.25
139  *		0004	802.2
140  *		8035	RARP
141  *		0005	SNAP
142  *		0805	X.25
143  *		0806	ARP
144  *		8137	IPX
145  *		0009	Localtalk
146  *		86DD	IPv6
147  */
148 
149 static DEFINE_SPINLOCK(ptype_lock);
150 static struct list_head ptype_base[16];	/* 16 way hashed list */
151 static struct list_head ptype_all;		/* Taps */
152 
153 #ifdef CONFIG_NET_DMA
154 static struct dma_client *net_dma_client;
155 static unsigned int net_dma_count;
156 static spinlock_t net_dma_event_lock;
157 #endif
158 
159 /*
160  * The @dev_base list is protected by @dev_base_lock and the rtnl
161  * semaphore.
162  *
163  * Pure readers hold dev_base_lock for reading.
164  *
165  * Writers must hold the rtnl semaphore while they loop through the
166  * dev_base list, and hold dev_base_lock for writing when they do the
167  * actual updates.  This allows pure readers to access the list even
168  * while a writer is preparing to update it.
169  *
170  * To put it another way, dev_base_lock is held for writing only to
171  * protect against pure readers; the rtnl semaphore provides the
172  * protection against other writers.
173  *
174  * See, for example usages, register_netdevice() and
175  * unregister_netdevice(), which must be called with the rtnl
176  * semaphore held.
177  */
178 struct net_device *dev_base;
179 static struct net_device **dev_tail = &dev_base;
180 DEFINE_RWLOCK(dev_base_lock);
181 
182 EXPORT_SYMBOL(dev_base);
183 EXPORT_SYMBOL(dev_base_lock);
184 
185 #define NETDEV_HASHBITS	8
186 static struct hlist_head dev_name_head[1<<NETDEV_HASHBITS];
187 static struct hlist_head dev_index_head[1<<NETDEV_HASHBITS];
188 
189 static inline struct hlist_head *dev_name_hash(const char *name)
190 {
191 	unsigned hash = full_name_hash(name, strnlen(name, IFNAMSIZ));
192 	return &dev_name_head[hash & ((1<<NETDEV_HASHBITS)-1)];
193 }
194 
195 static inline struct hlist_head *dev_index_hash(int ifindex)
196 {
197 	return &dev_index_head[ifindex & ((1<<NETDEV_HASHBITS)-1)];
198 }
199 
200 /*
201  *	Our notifier list
202  */
203 
204 static RAW_NOTIFIER_HEAD(netdev_chain);
205 
206 /*
207  *	Device drivers call our routines to queue packets here. We empty the
208  *	queue in the local softnet handler.
209  */
210 DEFINE_PER_CPU(struct softnet_data, softnet_data) = { NULL };
211 
212 #ifdef CONFIG_SYSFS
213 extern int netdev_sysfs_init(void);
214 extern int netdev_register_sysfs(struct net_device *);
215 extern void netdev_unregister_sysfs(struct net_device *);
216 #else
217 #define netdev_sysfs_init()	 	(0)
218 #define netdev_register_sysfs(dev)	(0)
219 #define	netdev_unregister_sysfs(dev)	do { } while(0)
220 #endif
221 
222 
223 /*******************************************************************************
224 
225 		Protocol management and registration routines
226 
227 *******************************************************************************/
228 
229 /*
230  *	For efficiency
231  */
232 
233 static int netdev_nit;
234 
235 /*
236  *	Add a protocol ID to the list. Now that the input handler is
237  *	smarter we can dispense with all the messy stuff that used to be
238  *	here.
239  *
240  *	BEWARE!!! Protocol handlers, mangling input packets,
241  *	MUST BE last in hash buckets and checking protocol handlers
242  *	MUST start from promiscuous ptype_all chain in net_bh.
243  *	It is true now, do not change it.
244  *	Explanation follows: if protocol handler, mangling packet, will
245  *	be the first on list, it is not able to sense, that packet
246  *	is cloned and should be copied-on-write, so that it will
247  *	change it and subsequent readers will get broken packet.
248  *							--ANK (980803)
249  */
250 
251 /**
252  *	dev_add_pack - add packet handler
253  *	@pt: packet type declaration
254  *
255  *	Add a protocol handler to the networking stack. The passed &packet_type
256  *	is linked into kernel lists and may not be freed until it has been
257  *	removed from the kernel lists.
258  *
259  *	This call does not sleep therefore it can not
260  *	guarantee all CPU's that are in middle of receiving packets
261  *	will see the new packet type (until the next received packet).
262  */
263 
264 void dev_add_pack(struct packet_type *pt)
265 {
266 	int hash;
267 
268 	spin_lock_bh(&ptype_lock);
269 	if (pt->type == htons(ETH_P_ALL)) {
270 		netdev_nit++;
271 		list_add_rcu(&pt->list, &ptype_all);
272 	} else {
273 		hash = ntohs(pt->type) & 15;
274 		list_add_rcu(&pt->list, &ptype_base[hash]);
275 	}
276 	spin_unlock_bh(&ptype_lock);
277 }
278 
279 /**
280  *	__dev_remove_pack	 - remove packet handler
281  *	@pt: packet type declaration
282  *
283  *	Remove a protocol handler that was previously added to the kernel
284  *	protocol handlers by dev_add_pack(). The passed &packet_type is removed
285  *	from the kernel lists and can be freed or reused once this function
286  *	returns.
287  *
288  *      The packet type might still be in use by receivers
289  *	and must not be freed until after all the CPU's have gone
290  *	through a quiescent state.
291  */
292 void __dev_remove_pack(struct packet_type *pt)
293 {
294 	struct list_head *head;
295 	struct packet_type *pt1;
296 
297 	spin_lock_bh(&ptype_lock);
298 
299 	if (pt->type == htons(ETH_P_ALL)) {
300 		netdev_nit--;
301 		head = &ptype_all;
302 	} else
303 		head = &ptype_base[ntohs(pt->type) & 15];
304 
305 	list_for_each_entry(pt1, head, list) {
306 		if (pt == pt1) {
307 			list_del_rcu(&pt->list);
308 			goto out;
309 		}
310 	}
311 
312 	printk(KERN_WARNING "dev_remove_pack: %p not found.\n", pt);
313 out:
314 	spin_unlock_bh(&ptype_lock);
315 }
316 /**
317  *	dev_remove_pack	 - remove packet handler
318  *	@pt: packet type declaration
319  *
320  *	Remove a protocol handler that was previously added to the kernel
321  *	protocol handlers by dev_add_pack(). The passed &packet_type is removed
322  *	from the kernel lists and can be freed or reused once this function
323  *	returns.
324  *
325  *	This call sleeps to guarantee that no CPU is looking at the packet
326  *	type after return.
327  */
328 void dev_remove_pack(struct packet_type *pt)
329 {
330 	__dev_remove_pack(pt);
331 
332 	synchronize_net();
333 }
334 
335 /******************************************************************************
336 
337 		      Device Boot-time Settings Routines
338 
339 *******************************************************************************/
340 
341 /* Boot time configuration table */
342 static struct netdev_boot_setup dev_boot_setup[NETDEV_BOOT_SETUP_MAX];
343 
344 /**
345  *	netdev_boot_setup_add	- add new setup entry
346  *	@name: name of the device
347  *	@map: configured settings for the device
348  *
349  *	Adds new setup entry to the dev_boot_setup list.  The function
350  *	returns 0 on error and 1 on success.  This is a generic routine to
351  *	all netdevices.
352  */
353 static int netdev_boot_setup_add(char *name, struct ifmap *map)
354 {
355 	struct netdev_boot_setup *s;
356 	int i;
357 
358 	s = dev_boot_setup;
359 	for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
360 		if (s[i].name[0] == '\0' || s[i].name[0] == ' ') {
361 			memset(s[i].name, 0, sizeof(s[i].name));
362 			strcpy(s[i].name, name);
363 			memcpy(&s[i].map, map, sizeof(s[i].map));
364 			break;
365 		}
366 	}
367 
368 	return i >= NETDEV_BOOT_SETUP_MAX ? 0 : 1;
369 }
370 
371 /**
372  *	netdev_boot_setup_check	- check boot time settings
373  *	@dev: the netdevice
374  *
375  * 	Check boot time settings for the device.
376  *	The found settings are set for the device to be used
377  *	later in the device probing.
378  *	Returns 0 if no settings found, 1 if they are.
379  */
380 int netdev_boot_setup_check(struct net_device *dev)
381 {
382 	struct netdev_boot_setup *s = dev_boot_setup;
383 	int i;
384 
385 	for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
386 		if (s[i].name[0] != '\0' && s[i].name[0] != ' ' &&
387 		    !strncmp(dev->name, s[i].name, strlen(s[i].name))) {
388 			dev->irq 	= s[i].map.irq;
389 			dev->base_addr 	= s[i].map.base_addr;
390 			dev->mem_start 	= s[i].map.mem_start;
391 			dev->mem_end 	= s[i].map.mem_end;
392 			return 1;
393 		}
394 	}
395 	return 0;
396 }
397 
398 
399 /**
400  *	netdev_boot_base	- get address from boot time settings
401  *	@prefix: prefix for network device
402  *	@unit: id for network device
403  *
404  * 	Check boot time settings for the base address of device.
405  *	The found settings are set for the device to be used
406  *	later in the device probing.
407  *	Returns 0 if no settings found.
408  */
409 unsigned long netdev_boot_base(const char *prefix, int unit)
410 {
411 	const struct netdev_boot_setup *s = dev_boot_setup;
412 	char name[IFNAMSIZ];
413 	int i;
414 
415 	sprintf(name, "%s%d", prefix, unit);
416 
417 	/*
418 	 * If device already registered then return base of 1
419 	 * to indicate not to probe for this interface
420 	 */
421 	if (__dev_get_by_name(name))
422 		return 1;
423 
424 	for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++)
425 		if (!strcmp(name, s[i].name))
426 			return s[i].map.base_addr;
427 	return 0;
428 }
429 
430 /*
431  * Saves at boot time configured settings for any netdevice.
432  */
433 int __init netdev_boot_setup(char *str)
434 {
435 	int ints[5];
436 	struct ifmap map;
437 
438 	str = get_options(str, ARRAY_SIZE(ints), ints);
439 	if (!str || !*str)
440 		return 0;
441 
442 	/* Save settings */
443 	memset(&map, 0, sizeof(map));
444 	if (ints[0] > 0)
445 		map.irq = ints[1];
446 	if (ints[0] > 1)
447 		map.base_addr = ints[2];
448 	if (ints[0] > 2)
449 		map.mem_start = ints[3];
450 	if (ints[0] > 3)
451 		map.mem_end = ints[4];
452 
453 	/* Add new entry to the list */
454 	return netdev_boot_setup_add(str, &map);
455 }
456 
457 __setup("netdev=", netdev_boot_setup);
458 
459 /*******************************************************************************
460 
461 			    Device Interface Subroutines
462 
463 *******************************************************************************/
464 
465 /**
466  *	__dev_get_by_name	- find a device by its name
467  *	@name: name to find
468  *
469  *	Find an interface by name. Must be called under RTNL semaphore
470  *	or @dev_base_lock. If the name is found a pointer to the device
471  *	is returned. If the name is not found then %NULL is returned. The
472  *	reference counters are not incremented so the caller must be
473  *	careful with locks.
474  */
475 
476 struct net_device *__dev_get_by_name(const char *name)
477 {
478 	struct hlist_node *p;
479 
480 	hlist_for_each(p, dev_name_hash(name)) {
481 		struct net_device *dev
482 			= hlist_entry(p, struct net_device, name_hlist);
483 		if (!strncmp(dev->name, name, IFNAMSIZ))
484 			return dev;
485 	}
486 	return NULL;
487 }
488 
489 /**
490  *	dev_get_by_name		- find a device by its name
491  *	@name: name to find
492  *
493  *	Find an interface by name. This can be called from any
494  *	context and does its own locking. The returned handle has
495  *	the usage count incremented and the caller must use dev_put() to
496  *	release it when it is no longer needed. %NULL is returned if no
497  *	matching device is found.
498  */
499 
500 struct net_device *dev_get_by_name(const char *name)
501 {
502 	struct net_device *dev;
503 
504 	read_lock(&dev_base_lock);
505 	dev = __dev_get_by_name(name);
506 	if (dev)
507 		dev_hold(dev);
508 	read_unlock(&dev_base_lock);
509 	return dev;
510 }
511 
512 /**
513  *	__dev_get_by_index - find a device by its ifindex
514  *	@ifindex: index of device
515  *
516  *	Search for an interface by index. Returns %NULL if the device
517  *	is not found or a pointer to the device. The device has not
518  *	had its reference counter increased so the caller must be careful
519  *	about locking. The caller must hold either the RTNL semaphore
520  *	or @dev_base_lock.
521  */
522 
523 struct net_device *__dev_get_by_index(int ifindex)
524 {
525 	struct hlist_node *p;
526 
527 	hlist_for_each(p, dev_index_hash(ifindex)) {
528 		struct net_device *dev
529 			= hlist_entry(p, struct net_device, index_hlist);
530 		if (dev->ifindex == ifindex)
531 			return dev;
532 	}
533 	return NULL;
534 }
535 
536 
537 /**
538  *	dev_get_by_index - find a device by its ifindex
539  *	@ifindex: index of device
540  *
541  *	Search for an interface by index. Returns NULL if the device
542  *	is not found or a pointer to the device. The device returned has
543  *	had a reference added and the pointer is safe until the user calls
544  *	dev_put to indicate they have finished with it.
545  */
546 
547 struct net_device *dev_get_by_index(int ifindex)
548 {
549 	struct net_device *dev;
550 
551 	read_lock(&dev_base_lock);
552 	dev = __dev_get_by_index(ifindex);
553 	if (dev)
554 		dev_hold(dev);
555 	read_unlock(&dev_base_lock);
556 	return dev;
557 }
558 
559 /**
560  *	dev_getbyhwaddr - find a device by its hardware address
561  *	@type: media type of device
562  *	@ha: hardware address
563  *
564  *	Search for an interface by MAC address. Returns NULL if the device
565  *	is not found or a pointer to the device. The caller must hold the
566  *	rtnl semaphore. The returned device has not had its ref count increased
567  *	and the caller must therefore be careful about locking
568  *
569  *	BUGS:
570  *	If the API was consistent this would be __dev_get_by_hwaddr
571  */
572 
573 struct net_device *dev_getbyhwaddr(unsigned short type, char *ha)
574 {
575 	struct net_device *dev;
576 
577 	ASSERT_RTNL();
578 
579 	for (dev = dev_base; dev; dev = dev->next)
580 		if (dev->type == type &&
581 		    !memcmp(dev->dev_addr, ha, dev->addr_len))
582 			break;
583 	return dev;
584 }
585 
586 EXPORT_SYMBOL(dev_getbyhwaddr);
587 
588 struct net_device *dev_getfirstbyhwtype(unsigned short type)
589 {
590 	struct net_device *dev;
591 
592 	rtnl_lock();
593 	for (dev = dev_base; dev; dev = dev->next) {
594 		if (dev->type == type) {
595 			dev_hold(dev);
596 			break;
597 		}
598 	}
599 	rtnl_unlock();
600 	return dev;
601 }
602 
603 EXPORT_SYMBOL(dev_getfirstbyhwtype);
604 
605 /**
606  *	dev_get_by_flags - find any device with given flags
607  *	@if_flags: IFF_* values
608  *	@mask: bitmask of bits in if_flags to check
609  *
610  *	Search for any interface with the given flags. Returns NULL if a device
611  *	is not found or a pointer to the device. The device returned has
612  *	had a reference added and the pointer is safe until the user calls
613  *	dev_put to indicate they have finished with it.
614  */
615 
616 struct net_device * dev_get_by_flags(unsigned short if_flags, unsigned short mask)
617 {
618 	struct net_device *dev;
619 
620 	read_lock(&dev_base_lock);
621 	for (dev = dev_base; dev != NULL; dev = dev->next) {
622 		if (((dev->flags ^ if_flags) & mask) == 0) {
623 			dev_hold(dev);
624 			break;
625 		}
626 	}
627 	read_unlock(&dev_base_lock);
628 	return dev;
629 }
630 
631 /**
632  *	dev_valid_name - check if name is okay for network device
633  *	@name: name string
634  *
635  *	Network device names need to be valid file names to
636  *	to allow sysfs to work
637  */
638 int dev_valid_name(const char *name)
639 {
640 	return !(*name == '\0'
641 		 || !strcmp(name, ".")
642 		 || !strcmp(name, "..")
643 		 || strchr(name, '/'));
644 }
645 
646 /**
647  *	dev_alloc_name - allocate a name for a device
648  *	@dev: device
649  *	@name: name format string
650  *
651  *	Passed a format string - eg "lt%d" it will try and find a suitable
652  *	id. It scans list of devices to build up a free map, then chooses
653  *	the first empty slot. The caller must hold the dev_base or rtnl lock
654  *	while allocating the name and adding the device in order to avoid
655  *	duplicates.
656  *	Limited to bits_per_byte * page size devices (ie 32K on most platforms).
657  *	Returns the number of the unit assigned or a negative errno code.
658  */
659 
660 int dev_alloc_name(struct net_device *dev, const char *name)
661 {
662 	int i = 0;
663 	char buf[IFNAMSIZ];
664 	const char *p;
665 	const int max_netdevices = 8*PAGE_SIZE;
666 	long *inuse;
667 	struct net_device *d;
668 
669 	p = strnchr(name, IFNAMSIZ-1, '%');
670 	if (p) {
671 		/*
672 		 * Verify the string as this thing may have come from
673 		 * the user.  There must be either one "%d" and no other "%"
674 		 * characters.
675 		 */
676 		if (p[1] != 'd' || strchr(p + 2, '%'))
677 			return -EINVAL;
678 
679 		/* Use one page as a bit array of possible slots */
680 		inuse = (long *) get_zeroed_page(GFP_ATOMIC);
681 		if (!inuse)
682 			return -ENOMEM;
683 
684 		for (d = dev_base; d; d = d->next) {
685 			if (!sscanf(d->name, name, &i))
686 				continue;
687 			if (i < 0 || i >= max_netdevices)
688 				continue;
689 
690 			/*  avoid cases where sscanf is not exact inverse of printf */
691 			snprintf(buf, sizeof(buf), name, i);
692 			if (!strncmp(buf, d->name, IFNAMSIZ))
693 				set_bit(i, inuse);
694 		}
695 
696 		i = find_first_zero_bit(inuse, max_netdevices);
697 		free_page((unsigned long) inuse);
698 	}
699 
700 	snprintf(buf, sizeof(buf), name, i);
701 	if (!__dev_get_by_name(buf)) {
702 		strlcpy(dev->name, buf, IFNAMSIZ);
703 		return i;
704 	}
705 
706 	/* It is possible to run out of possible slots
707 	 * when the name is long and there isn't enough space left
708 	 * for the digits, or if all bits are used.
709 	 */
710 	return -ENFILE;
711 }
712 
713 
714 /**
715  *	dev_change_name - change name of a device
716  *	@dev: device
717  *	@newname: name (or format string) must be at least IFNAMSIZ
718  *
719  *	Change name of a device, can pass format strings "eth%d".
720  *	for wildcarding.
721  */
722 int dev_change_name(struct net_device *dev, char *newname)
723 {
724 	int err = 0;
725 
726 	ASSERT_RTNL();
727 
728 	if (dev->flags & IFF_UP)
729 		return -EBUSY;
730 
731 	if (!dev_valid_name(newname))
732 		return -EINVAL;
733 
734 	if (strchr(newname, '%')) {
735 		err = dev_alloc_name(dev, newname);
736 		if (err < 0)
737 			return err;
738 		strcpy(newname, dev->name);
739 	}
740 	else if (__dev_get_by_name(newname))
741 		return -EEXIST;
742 	else
743 		strlcpy(dev->name, newname, IFNAMSIZ);
744 
745 	err = class_device_rename(&dev->class_dev, dev->name);
746 	if (!err) {
747 		hlist_del(&dev->name_hlist);
748 		hlist_add_head(&dev->name_hlist, dev_name_hash(dev->name));
749 		raw_notifier_call_chain(&netdev_chain,
750 				NETDEV_CHANGENAME, dev);
751 	}
752 
753 	return err;
754 }
755 
756 /**
757  *	netdev_features_change - device changes features
758  *	@dev: device to cause notification
759  *
760  *	Called to indicate a device has changed features.
761  */
762 void netdev_features_change(struct net_device *dev)
763 {
764 	raw_notifier_call_chain(&netdev_chain, NETDEV_FEAT_CHANGE, dev);
765 }
766 EXPORT_SYMBOL(netdev_features_change);
767 
768 /**
769  *	netdev_state_change - device changes state
770  *	@dev: device to cause notification
771  *
772  *	Called to indicate a device has changed state. This function calls
773  *	the notifier chains for netdev_chain and sends a NEWLINK message
774  *	to the routing socket.
775  */
776 void netdev_state_change(struct net_device *dev)
777 {
778 	if (dev->flags & IFF_UP) {
779 		raw_notifier_call_chain(&netdev_chain,
780 				NETDEV_CHANGE, dev);
781 		rtmsg_ifinfo(RTM_NEWLINK, dev, 0);
782 	}
783 }
784 
785 /**
786  *	dev_load 	- load a network module
787  *	@name: name of interface
788  *
789  *	If a network interface is not present and the process has suitable
790  *	privileges this function loads the module. If module loading is not
791  *	available in this kernel then it becomes a nop.
792  */
793 
794 void dev_load(const char *name)
795 {
796 	struct net_device *dev;
797 
798 	read_lock(&dev_base_lock);
799 	dev = __dev_get_by_name(name);
800 	read_unlock(&dev_base_lock);
801 
802 	if (!dev && capable(CAP_SYS_MODULE))
803 		request_module("%s", name);
804 }
805 
806 static int default_rebuild_header(struct sk_buff *skb)
807 {
808 	printk(KERN_DEBUG "%s: default_rebuild_header called -- BUG!\n",
809 	       skb->dev ? skb->dev->name : "NULL!!!");
810 	kfree_skb(skb);
811 	return 1;
812 }
813 
814 
815 /**
816  *	dev_open	- prepare an interface for use.
817  *	@dev:	device to open
818  *
819  *	Takes a device from down to up state. The device's private open
820  *	function is invoked and then the multicast lists are loaded. Finally
821  *	the device is moved into the up state and a %NETDEV_UP message is
822  *	sent to the netdev notifier chain.
823  *
824  *	Calling this function on an active interface is a nop. On a failure
825  *	a negative errno code is returned.
826  */
827 int dev_open(struct net_device *dev)
828 {
829 	int ret = 0;
830 
831 	/*
832 	 *	Is it already up?
833 	 */
834 
835 	if (dev->flags & IFF_UP)
836 		return 0;
837 
838 	/*
839 	 *	Is it even present?
840 	 */
841 	if (!netif_device_present(dev))
842 		return -ENODEV;
843 
844 	/*
845 	 *	Call device private open method
846 	 */
847 	set_bit(__LINK_STATE_START, &dev->state);
848 	if (dev->open) {
849 		ret = dev->open(dev);
850 		if (ret)
851 			clear_bit(__LINK_STATE_START, &dev->state);
852 	}
853 
854  	/*
855 	 *	If it went open OK then:
856 	 */
857 
858 	if (!ret) {
859 		/*
860 		 *	Set the flags.
861 		 */
862 		dev->flags |= IFF_UP;
863 
864 		/*
865 		 *	Initialize multicasting status
866 		 */
867 		dev_mc_upload(dev);
868 
869 		/*
870 		 *	Wakeup transmit queue engine
871 		 */
872 		dev_activate(dev);
873 
874 		/*
875 		 *	... and announce new interface.
876 		 */
877 		raw_notifier_call_chain(&netdev_chain, NETDEV_UP, dev);
878 	}
879 	return ret;
880 }
881 
882 /**
883  *	dev_close - shutdown an interface.
884  *	@dev: device to shutdown
885  *
886  *	This function moves an active device into down state. A
887  *	%NETDEV_GOING_DOWN is sent to the netdev notifier chain. The device
888  *	is then deactivated and finally a %NETDEV_DOWN is sent to the notifier
889  *	chain.
890  */
891 int dev_close(struct net_device *dev)
892 {
893 	if (!(dev->flags & IFF_UP))
894 		return 0;
895 
896 	/*
897 	 *	Tell people we are going down, so that they can
898 	 *	prepare to death, when device is still operating.
899 	 */
900 	raw_notifier_call_chain(&netdev_chain, NETDEV_GOING_DOWN, dev);
901 
902 	dev_deactivate(dev);
903 
904 	clear_bit(__LINK_STATE_START, &dev->state);
905 
906 	/* Synchronize to scheduled poll. We cannot touch poll list,
907 	 * it can be even on different cpu. So just clear netif_running(),
908 	 * and wait when poll really will happen. Actually, the best place
909 	 * for this is inside dev->stop() after device stopped its irq
910 	 * engine, but this requires more changes in devices. */
911 
912 	smp_mb__after_clear_bit(); /* Commit netif_running(). */
913 	while (test_bit(__LINK_STATE_RX_SCHED, &dev->state)) {
914 		/* No hurry. */
915 		msleep(1);
916 	}
917 
918 	/*
919 	 *	Call the device specific close. This cannot fail.
920 	 *	Only if device is UP
921 	 *
922 	 *	We allow it to be called even after a DETACH hot-plug
923 	 *	event.
924 	 */
925 	if (dev->stop)
926 		dev->stop(dev);
927 
928 	/*
929 	 *	Device is now down.
930 	 */
931 
932 	dev->flags &= ~IFF_UP;
933 
934 	/*
935 	 * Tell people we are down
936 	 */
937 	raw_notifier_call_chain(&netdev_chain, NETDEV_DOWN, dev);
938 
939 	return 0;
940 }
941 
942 
943 /*
944  *	Device change register/unregister. These are not inline or static
945  *	as we export them to the world.
946  */
947 
948 /**
949  *	register_netdevice_notifier - register a network notifier block
950  *	@nb: notifier
951  *
952  *	Register a notifier to be called when network device events occur.
953  *	The notifier passed is linked into the kernel structures and must
954  *	not be reused until it has been unregistered. A negative errno code
955  *	is returned on a failure.
956  *
957  * 	When registered all registration and up events are replayed
958  *	to the new notifier to allow device to have a race free
959  *	view of the network device list.
960  */
961 
962 int register_netdevice_notifier(struct notifier_block *nb)
963 {
964 	struct net_device *dev;
965 	int err;
966 
967 	rtnl_lock();
968 	err = raw_notifier_chain_register(&netdev_chain, nb);
969 	if (!err) {
970 		for (dev = dev_base; dev; dev = dev->next) {
971 			nb->notifier_call(nb, NETDEV_REGISTER, dev);
972 
973 			if (dev->flags & IFF_UP)
974 				nb->notifier_call(nb, NETDEV_UP, dev);
975 		}
976 	}
977 	rtnl_unlock();
978 	return err;
979 }
980 
981 /**
982  *	unregister_netdevice_notifier - unregister a network notifier block
983  *	@nb: notifier
984  *
985  *	Unregister a notifier previously registered by
986  *	register_netdevice_notifier(). The notifier is unlinked into the
987  *	kernel structures and may then be reused. A negative errno code
988  *	is returned on a failure.
989  */
990 
991 int unregister_netdevice_notifier(struct notifier_block *nb)
992 {
993 	int err;
994 
995 	rtnl_lock();
996 	err = raw_notifier_chain_unregister(&netdev_chain, nb);
997 	rtnl_unlock();
998 	return err;
999 }
1000 
1001 /**
1002  *	call_netdevice_notifiers - call all network notifier blocks
1003  *      @val: value passed unmodified to notifier function
1004  *      @v:   pointer passed unmodified to notifier function
1005  *
1006  *	Call all network notifier blocks.  Parameters and return value
1007  *	are as for raw_notifier_call_chain().
1008  */
1009 
1010 int call_netdevice_notifiers(unsigned long val, void *v)
1011 {
1012 	return raw_notifier_call_chain(&netdev_chain, val, v);
1013 }
1014 
1015 /* When > 0 there are consumers of rx skb time stamps */
1016 static atomic_t netstamp_needed = ATOMIC_INIT(0);
1017 
1018 void net_enable_timestamp(void)
1019 {
1020 	atomic_inc(&netstamp_needed);
1021 }
1022 
1023 void net_disable_timestamp(void)
1024 {
1025 	atomic_dec(&netstamp_needed);
1026 }
1027 
1028 void __net_timestamp(struct sk_buff *skb)
1029 {
1030 	struct timeval tv;
1031 
1032 	do_gettimeofday(&tv);
1033 	skb_set_timestamp(skb, &tv);
1034 }
1035 EXPORT_SYMBOL(__net_timestamp);
1036 
1037 static inline void net_timestamp(struct sk_buff *skb)
1038 {
1039 	if (atomic_read(&netstamp_needed))
1040 		__net_timestamp(skb);
1041 	else {
1042 		skb->tstamp.off_sec = 0;
1043 		skb->tstamp.off_usec = 0;
1044 	}
1045 }
1046 
1047 /*
1048  *	Support routine. Sends outgoing frames to any network
1049  *	taps currently in use.
1050  */
1051 
1052 static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
1053 {
1054 	struct packet_type *ptype;
1055 
1056 	net_timestamp(skb);
1057 
1058 	rcu_read_lock();
1059 	list_for_each_entry_rcu(ptype, &ptype_all, list) {
1060 		/* Never send packets back to the socket
1061 		 * they originated from - MvS (miquels@drinkel.ow.org)
1062 		 */
1063 		if ((ptype->dev == dev || !ptype->dev) &&
1064 		    (ptype->af_packet_priv == NULL ||
1065 		     (struct sock *)ptype->af_packet_priv != skb->sk)) {
1066 			struct sk_buff *skb2= skb_clone(skb, GFP_ATOMIC);
1067 			if (!skb2)
1068 				break;
1069 
1070 			/* skb->nh should be correctly
1071 			   set by sender, so that the second statement is
1072 			   just protection against buggy protocols.
1073 			 */
1074 			skb2->mac.raw = skb2->data;
1075 
1076 			if (skb2->nh.raw < skb2->data ||
1077 			    skb2->nh.raw > skb2->tail) {
1078 				if (net_ratelimit())
1079 					printk(KERN_CRIT "protocol %04x is "
1080 					       "buggy, dev %s\n",
1081 					       skb2->protocol, dev->name);
1082 				skb2->nh.raw = skb2->data;
1083 			}
1084 
1085 			skb2->h.raw = skb2->nh.raw;
1086 			skb2->pkt_type = PACKET_OUTGOING;
1087 			ptype->func(skb2, skb->dev, ptype, skb->dev);
1088 		}
1089 	}
1090 	rcu_read_unlock();
1091 }
1092 
1093 
1094 void __netif_schedule(struct net_device *dev)
1095 {
1096 	if (!test_and_set_bit(__LINK_STATE_SCHED, &dev->state)) {
1097 		unsigned long flags;
1098 		struct softnet_data *sd;
1099 
1100 		local_irq_save(flags);
1101 		sd = &__get_cpu_var(softnet_data);
1102 		dev->next_sched = sd->output_queue;
1103 		sd->output_queue = dev;
1104 		raise_softirq_irqoff(NET_TX_SOFTIRQ);
1105 		local_irq_restore(flags);
1106 	}
1107 }
1108 EXPORT_SYMBOL(__netif_schedule);
1109 
1110 void __netif_rx_schedule(struct net_device *dev)
1111 {
1112 	unsigned long flags;
1113 
1114 	local_irq_save(flags);
1115 	dev_hold(dev);
1116 	list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list);
1117 	if (dev->quota < 0)
1118 		dev->quota += dev->weight;
1119 	else
1120 		dev->quota = dev->weight;
1121 	__raise_softirq_irqoff(NET_RX_SOFTIRQ);
1122 	local_irq_restore(flags);
1123 }
1124 EXPORT_SYMBOL(__netif_rx_schedule);
1125 
1126 void dev_kfree_skb_any(struct sk_buff *skb)
1127 {
1128 	if (in_irq() || irqs_disabled())
1129 		dev_kfree_skb_irq(skb);
1130 	else
1131 		dev_kfree_skb(skb);
1132 }
1133 EXPORT_SYMBOL(dev_kfree_skb_any);
1134 
1135 
1136 /* Hot-plugging. */
1137 void netif_device_detach(struct net_device *dev)
1138 {
1139 	if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
1140 	    netif_running(dev)) {
1141 		netif_stop_queue(dev);
1142 	}
1143 }
1144 EXPORT_SYMBOL(netif_device_detach);
1145 
1146 void netif_device_attach(struct net_device *dev)
1147 {
1148 	if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
1149 	    netif_running(dev)) {
1150 		netif_wake_queue(dev);
1151  		__netdev_watchdog_up(dev);
1152 	}
1153 }
1154 EXPORT_SYMBOL(netif_device_attach);
1155 
1156 
1157 /*
1158  * Invalidate hardware checksum when packet is to be mangled, and
1159  * complete checksum manually on outgoing path.
1160  */
1161 int skb_checksum_help(struct sk_buff *skb, int inward)
1162 {
1163 	unsigned int csum;
1164 	int ret = 0, offset = skb->h.raw - skb->data;
1165 
1166 	if (inward) {
1167 		skb->ip_summed = CHECKSUM_NONE;
1168 		goto out;
1169 	}
1170 
1171 	if (skb_cloned(skb)) {
1172 		ret = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
1173 		if (ret)
1174 			goto out;
1175 	}
1176 
1177 	BUG_ON(offset > (int)skb->len);
1178 	csum = skb_checksum(skb, offset, skb->len-offset, 0);
1179 
1180 	offset = skb->tail - skb->h.raw;
1181 	BUG_ON(offset <= 0);
1182 	BUG_ON(skb->csum + 2 > offset);
1183 
1184 	*(u16*)(skb->h.raw + skb->csum) = csum_fold(csum);
1185 	skb->ip_summed = CHECKSUM_NONE;
1186 out:
1187 	return ret;
1188 }
1189 
1190 /**
1191  *	skb_gso_segment - Perform segmentation on skb.
1192  *	@skb: buffer to segment
1193  *	@features: features for the output path (see dev->features)
1194  *
1195  *	This function segments the given skb and returns a list of segments.
1196  *
1197  *	It may return NULL if the skb requires no segmentation.  This is
1198  *	only possible when GSO is used for verifying header integrity.
1199  */
1200 struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)
1201 {
1202 	struct sk_buff *segs = ERR_PTR(-EPROTONOSUPPORT);
1203 	struct packet_type *ptype;
1204 	int type = skb->protocol;
1205 
1206 	BUG_ON(skb_shinfo(skb)->frag_list);
1207 	BUG_ON(skb->ip_summed != CHECKSUM_HW);
1208 
1209 	skb->mac.raw = skb->data;
1210 	skb->mac_len = skb->nh.raw - skb->data;
1211 	__skb_pull(skb, skb->mac_len);
1212 
1213 	rcu_read_lock();
1214 	list_for_each_entry_rcu(ptype, &ptype_base[ntohs(type) & 15], list) {
1215 		if (ptype->type == type && !ptype->dev && ptype->gso_segment) {
1216 			segs = ptype->gso_segment(skb, features);
1217 			break;
1218 		}
1219 	}
1220 	rcu_read_unlock();
1221 
1222 	__skb_push(skb, skb->data - skb->mac.raw);
1223 
1224 	return segs;
1225 }
1226 
1227 EXPORT_SYMBOL(skb_gso_segment);
1228 
1229 /* Take action when hardware reception checksum errors are detected. */
1230 #ifdef CONFIG_BUG
1231 void netdev_rx_csum_fault(struct net_device *dev)
1232 {
1233 	if (net_ratelimit()) {
1234 		printk(KERN_ERR "%s: hw csum failure.\n",
1235 			dev ? dev->name : "<unknown>");
1236 		dump_stack();
1237 	}
1238 }
1239 EXPORT_SYMBOL(netdev_rx_csum_fault);
1240 #endif
1241 
1242 /* Actually, we should eliminate this check as soon as we know, that:
1243  * 1. IOMMU is present and allows to map all the memory.
1244  * 2. No high memory really exists on this machine.
1245  */
1246 
1247 static inline int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
1248 {
1249 #ifdef CONFIG_HIGHMEM
1250 	int i;
1251 
1252 	if (dev->features & NETIF_F_HIGHDMA)
1253 		return 0;
1254 
1255 	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
1256 		if (PageHighMem(skb_shinfo(skb)->frags[i].page))
1257 			return 1;
1258 
1259 #endif
1260 	return 0;
1261 }
1262 
1263 struct dev_gso_cb {
1264 	void (*destructor)(struct sk_buff *skb);
1265 };
1266 
1267 #define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
1268 
1269 static void dev_gso_skb_destructor(struct sk_buff *skb)
1270 {
1271 	struct dev_gso_cb *cb;
1272 
1273 	do {
1274 		struct sk_buff *nskb = skb->next;
1275 
1276 		skb->next = nskb->next;
1277 		nskb->next = NULL;
1278 		kfree_skb(nskb);
1279 	} while (skb->next);
1280 
1281 	cb = DEV_GSO_CB(skb);
1282 	if (cb->destructor)
1283 		cb->destructor(skb);
1284 }
1285 
1286 /**
1287  *	dev_gso_segment - Perform emulated hardware segmentation on skb.
1288  *	@skb: buffer to segment
1289  *
1290  *	This function segments the given skb and stores the list of segments
1291  *	in skb->next.
1292  */
1293 static int dev_gso_segment(struct sk_buff *skb)
1294 {
1295 	struct net_device *dev = skb->dev;
1296 	struct sk_buff *segs;
1297 	int features = dev->features & ~(illegal_highdma(dev, skb) ?
1298 					 NETIF_F_SG : 0);
1299 
1300 	segs = skb_gso_segment(skb, features);
1301 
1302 	/* Verifying header integrity only. */
1303 	if (!segs)
1304 		return 0;
1305 
1306 	if (unlikely(IS_ERR(segs)))
1307 		return PTR_ERR(segs);
1308 
1309 	skb->next = segs;
1310 	DEV_GSO_CB(skb)->destructor = skb->destructor;
1311 	skb->destructor = dev_gso_skb_destructor;
1312 
1313 	return 0;
1314 }
1315 
1316 int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
1317 {
1318 	if (likely(!skb->next)) {
1319 		if (netdev_nit)
1320 			dev_queue_xmit_nit(skb, dev);
1321 
1322 		if (netif_needs_gso(dev, skb)) {
1323 			if (unlikely(dev_gso_segment(skb)))
1324 				goto out_kfree_skb;
1325 			if (skb->next)
1326 				goto gso;
1327 		}
1328 
1329 		return dev->hard_start_xmit(skb, dev);
1330 	}
1331 
1332 gso:
1333 	do {
1334 		struct sk_buff *nskb = skb->next;
1335 		int rc;
1336 
1337 		skb->next = nskb->next;
1338 		nskb->next = NULL;
1339 		rc = dev->hard_start_xmit(nskb, dev);
1340 		if (unlikely(rc)) {
1341 			nskb->next = skb->next;
1342 			skb->next = nskb;
1343 			return rc;
1344 		}
1345 		if (unlikely(netif_queue_stopped(dev) && skb->next))
1346 			return NETDEV_TX_BUSY;
1347 	} while (skb->next);
1348 
1349 	skb->destructor = DEV_GSO_CB(skb)->destructor;
1350 
1351 out_kfree_skb:
1352 	kfree_skb(skb);
1353 	return 0;
1354 }
1355 
1356 #define HARD_TX_LOCK(dev, cpu) {			\
1357 	if ((dev->features & NETIF_F_LLTX) == 0) {	\
1358 		netif_tx_lock(dev);			\
1359 	}						\
1360 }
1361 
1362 #define HARD_TX_UNLOCK(dev) {				\
1363 	if ((dev->features & NETIF_F_LLTX) == 0) {	\
1364 		netif_tx_unlock(dev);			\
1365 	}						\
1366 }
1367 
1368 /**
1369  *	dev_queue_xmit - transmit a buffer
1370  *	@skb: buffer to transmit
1371  *
1372  *	Queue a buffer for transmission to a network device. The caller must
1373  *	have set the device and priority and built the buffer before calling
1374  *	this function. The function can be called from an interrupt.
1375  *
1376  *	A negative errno code is returned on a failure. A success does not
1377  *	guarantee the frame will be transmitted as it may be dropped due
1378  *	to congestion or traffic shaping.
1379  *
1380  * -----------------------------------------------------------------------------------
1381  *      I notice this method can also return errors from the queue disciplines,
1382  *      including NET_XMIT_DROP, which is a positive value.  So, errors can also
1383  *      be positive.
1384  *
1385  *      Regardless of the return value, the skb is consumed, so it is currently
1386  *      difficult to retry a send to this method.  (You can bump the ref count
1387  *      before sending to hold a reference for retry if you are careful.)
1388  *
1389  *      When calling this method, interrupts MUST be enabled.  This is because
1390  *      the BH enable code must have IRQs enabled so that it will not deadlock.
1391  *          --BLG
1392  */
1393 
1394 int dev_queue_xmit(struct sk_buff *skb)
1395 {
1396 	struct net_device *dev = skb->dev;
1397 	struct Qdisc *q;
1398 	int rc = -ENOMEM;
1399 
1400 	/* GSO will handle the following emulations directly. */
1401 	if (netif_needs_gso(dev, skb))
1402 		goto gso;
1403 
1404 	if (skb_shinfo(skb)->frag_list &&
1405 	    !(dev->features & NETIF_F_FRAGLIST) &&
1406 	    __skb_linearize(skb))
1407 		goto out_kfree_skb;
1408 
1409 	/* Fragmented skb is linearized if device does not support SG,
1410 	 * or if at least one of fragments is in highmem and device
1411 	 * does not support DMA from it.
1412 	 */
1413 	if (skb_shinfo(skb)->nr_frags &&
1414 	    (!(dev->features & NETIF_F_SG) || illegal_highdma(dev, skb)) &&
1415 	    __skb_linearize(skb))
1416 		goto out_kfree_skb;
1417 
1418 	/* If packet is not checksummed and device does not support
1419 	 * checksumming for this protocol, complete checksumming here.
1420 	 */
1421 	if (skb->ip_summed == CHECKSUM_HW &&
1422 	    (!(dev->features & NETIF_F_GEN_CSUM) &&
1423 	     (!(dev->features & NETIF_F_IP_CSUM) ||
1424 	      skb->protocol != htons(ETH_P_IP))))
1425 	      	if (skb_checksum_help(skb, 0))
1426 	      		goto out_kfree_skb;
1427 
1428 gso:
1429 	spin_lock_prefetch(&dev->queue_lock);
1430 
1431 	/* Disable soft irqs for various locks below. Also
1432 	 * stops preemption for RCU.
1433 	 */
1434 	rcu_read_lock_bh();
1435 
1436 	/* Updates of qdisc are serialized by queue_lock.
1437 	 * The struct Qdisc which is pointed to by qdisc is now a
1438 	 * rcu structure - it may be accessed without acquiring
1439 	 * a lock (but the structure may be stale.) The freeing of the
1440 	 * qdisc will be deferred until it's known that there are no
1441 	 * more references to it.
1442 	 *
1443 	 * If the qdisc has an enqueue function, we still need to
1444 	 * hold the queue_lock before calling it, since queue_lock
1445 	 * also serializes access to the device queue.
1446 	 */
1447 
1448 	q = rcu_dereference(dev->qdisc);
1449 #ifdef CONFIG_NET_CLS_ACT
1450 	skb->tc_verd = SET_TC_AT(skb->tc_verd,AT_EGRESS);
1451 #endif
1452 	if (q->enqueue) {
1453 		/* Grab device queue */
1454 		spin_lock(&dev->queue_lock);
1455 
1456 		rc = q->enqueue(skb, q);
1457 
1458 		qdisc_run(dev);
1459 
1460 		spin_unlock(&dev->queue_lock);
1461 		rc = rc == NET_XMIT_BYPASS ? NET_XMIT_SUCCESS : rc;
1462 		goto out;
1463 	}
1464 
1465 	/* The device has no queue. Common case for software devices:
1466 	   loopback, all the sorts of tunnels...
1467 
1468 	   Really, it is unlikely that netif_tx_lock protection is necessary
1469 	   here.  (f.e. loopback and IP tunnels are clean ignoring statistics
1470 	   counters.)
1471 	   However, it is possible, that they rely on protection
1472 	   made by us here.
1473 
1474 	   Check this and shot the lock. It is not prone from deadlocks.
1475 	   Either shot noqueue qdisc, it is even simpler 8)
1476 	 */
1477 	if (dev->flags & IFF_UP) {
1478 		int cpu = smp_processor_id(); /* ok because BHs are off */
1479 
1480 		if (dev->xmit_lock_owner != cpu) {
1481 
1482 			HARD_TX_LOCK(dev, cpu);
1483 
1484 			if (!netif_queue_stopped(dev)) {
1485 				rc = 0;
1486 				if (!dev_hard_start_xmit(skb, dev)) {
1487 					HARD_TX_UNLOCK(dev);
1488 					goto out;
1489 				}
1490 			}
1491 			HARD_TX_UNLOCK(dev);
1492 			if (net_ratelimit())
1493 				printk(KERN_CRIT "Virtual device %s asks to "
1494 				       "queue packet!\n", dev->name);
1495 		} else {
1496 			/* Recursion is detected! It is possible,
1497 			 * unfortunately */
1498 			if (net_ratelimit())
1499 				printk(KERN_CRIT "Dead loop on virtual device "
1500 				       "%s, fix it urgently!\n", dev->name);
1501 		}
1502 	}
1503 
1504 	rc = -ENETDOWN;
1505 	rcu_read_unlock_bh();
1506 
1507 out_kfree_skb:
1508 	kfree_skb(skb);
1509 	return rc;
1510 out:
1511 	rcu_read_unlock_bh();
1512 	return rc;
1513 }
1514 
1515 
1516 /*=======================================================================
1517 			Receiver routines
1518   =======================================================================*/
1519 
1520 int netdev_max_backlog = 1000;
1521 int netdev_budget = 300;
1522 int weight_p = 64;            /* old backlog weight */
1523 
1524 DEFINE_PER_CPU(struct netif_rx_stats, netdev_rx_stat) = { 0, };
1525 
1526 
1527 /**
1528  *	netif_rx	-	post buffer to the network code
1529  *	@skb: buffer to post
1530  *
1531  *	This function receives a packet from a device driver and queues it for
1532  *	the upper (protocol) levels to process.  It always succeeds. The buffer
1533  *	may be dropped during processing for congestion control or by the
1534  *	protocol layers.
1535  *
1536  *	return values:
1537  *	NET_RX_SUCCESS	(no congestion)
1538  *	NET_RX_CN_LOW   (low congestion)
1539  *	NET_RX_CN_MOD   (moderate congestion)
1540  *	NET_RX_CN_HIGH  (high congestion)
1541  *	NET_RX_DROP     (packet was dropped)
1542  *
1543  */
1544 
1545 int netif_rx(struct sk_buff *skb)
1546 {
1547 	struct softnet_data *queue;
1548 	unsigned long flags;
1549 
1550 	/* if netpoll wants it, pretend we never saw it */
1551 	if (netpoll_rx(skb))
1552 		return NET_RX_DROP;
1553 
1554 	if (!skb->tstamp.off_sec)
1555 		net_timestamp(skb);
1556 
1557 	/*
1558 	 * The code is rearranged so that the path is the most
1559 	 * short when CPU is congested, but is still operating.
1560 	 */
1561 	local_irq_save(flags);
1562 	queue = &__get_cpu_var(softnet_data);
1563 
1564 	__get_cpu_var(netdev_rx_stat).total++;
1565 	if (queue->input_pkt_queue.qlen <= netdev_max_backlog) {
1566 		if (queue->input_pkt_queue.qlen) {
1567 enqueue:
1568 			dev_hold(skb->dev);
1569 			__skb_queue_tail(&queue->input_pkt_queue, skb);
1570 			local_irq_restore(flags);
1571 			return NET_RX_SUCCESS;
1572 		}
1573 
1574 		netif_rx_schedule(&queue->backlog_dev);
1575 		goto enqueue;
1576 	}
1577 
1578 	__get_cpu_var(netdev_rx_stat).dropped++;
1579 	local_irq_restore(flags);
1580 
1581 	kfree_skb(skb);
1582 	return NET_RX_DROP;
1583 }
1584 
1585 int netif_rx_ni(struct sk_buff *skb)
1586 {
1587 	int err;
1588 
1589 	preempt_disable();
1590 	err = netif_rx(skb);
1591 	if (local_softirq_pending())
1592 		do_softirq();
1593 	preempt_enable();
1594 
1595 	return err;
1596 }
1597 
1598 EXPORT_SYMBOL(netif_rx_ni);
1599 
1600 static inline struct net_device *skb_bond(struct sk_buff *skb)
1601 {
1602 	struct net_device *dev = skb->dev;
1603 
1604 	if (dev->master) {
1605 		/*
1606 		 * On bonding slaves other than the currently active
1607 		 * slave, suppress duplicates except for 802.3ad
1608 		 * ETH_P_SLOW and alb non-mcast/bcast.
1609 		 */
1610 		if (dev->priv_flags & IFF_SLAVE_INACTIVE) {
1611 			if (dev->master->priv_flags & IFF_MASTER_ALB) {
1612 				if (skb->pkt_type != PACKET_BROADCAST &&
1613 				    skb->pkt_type != PACKET_MULTICAST)
1614 					goto keep;
1615 			}
1616 
1617 			if (dev->master->priv_flags & IFF_MASTER_8023AD &&
1618 			    skb->protocol == __constant_htons(ETH_P_SLOW))
1619 				goto keep;
1620 
1621 			kfree_skb(skb);
1622 			return NULL;
1623 		}
1624 keep:
1625 		skb->dev = dev->master;
1626 	}
1627 
1628 	return dev;
1629 }
1630 
1631 static void net_tx_action(struct softirq_action *h)
1632 {
1633 	struct softnet_data *sd = &__get_cpu_var(softnet_data);
1634 
1635 	if (sd->completion_queue) {
1636 		struct sk_buff *clist;
1637 
1638 		local_irq_disable();
1639 		clist = sd->completion_queue;
1640 		sd->completion_queue = NULL;
1641 		local_irq_enable();
1642 
1643 		while (clist) {
1644 			struct sk_buff *skb = clist;
1645 			clist = clist->next;
1646 
1647 			BUG_TRAP(!atomic_read(&skb->users));
1648 			__kfree_skb(skb);
1649 		}
1650 	}
1651 
1652 	if (sd->output_queue) {
1653 		struct net_device *head;
1654 
1655 		local_irq_disable();
1656 		head = sd->output_queue;
1657 		sd->output_queue = NULL;
1658 		local_irq_enable();
1659 
1660 		while (head) {
1661 			struct net_device *dev = head;
1662 			head = head->next_sched;
1663 
1664 			smp_mb__before_clear_bit();
1665 			clear_bit(__LINK_STATE_SCHED, &dev->state);
1666 
1667 			if (spin_trylock(&dev->queue_lock)) {
1668 				qdisc_run(dev);
1669 				spin_unlock(&dev->queue_lock);
1670 			} else {
1671 				netif_schedule(dev);
1672 			}
1673 		}
1674 	}
1675 }
1676 
1677 static __inline__ int deliver_skb(struct sk_buff *skb,
1678 				  struct packet_type *pt_prev,
1679 				  struct net_device *orig_dev)
1680 {
1681 	atomic_inc(&skb->users);
1682 	return pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
1683 }
1684 
1685 #if defined(CONFIG_BRIDGE) || defined (CONFIG_BRIDGE_MODULE)
1686 int (*br_handle_frame_hook)(struct net_bridge_port *p, struct sk_buff **pskb);
1687 struct net_bridge;
1688 struct net_bridge_fdb_entry *(*br_fdb_get_hook)(struct net_bridge *br,
1689 						unsigned char *addr);
1690 void (*br_fdb_put_hook)(struct net_bridge_fdb_entry *ent);
1691 
1692 static __inline__ int handle_bridge(struct sk_buff **pskb,
1693 				    struct packet_type **pt_prev, int *ret,
1694 				    struct net_device *orig_dev)
1695 {
1696 	struct net_bridge_port *port;
1697 
1698 	if ((*pskb)->pkt_type == PACKET_LOOPBACK ||
1699 	    (port = rcu_dereference((*pskb)->dev->br_port)) == NULL)
1700 		return 0;
1701 
1702 	if (*pt_prev) {
1703 		*ret = deliver_skb(*pskb, *pt_prev, orig_dev);
1704 		*pt_prev = NULL;
1705 	}
1706 
1707 	return br_handle_frame_hook(port, pskb);
1708 }
1709 #else
1710 #define handle_bridge(skb, pt_prev, ret, orig_dev)	(0)
1711 #endif
1712 
1713 #ifdef CONFIG_NET_CLS_ACT
1714 /* TODO: Maybe we should just force sch_ingress to be compiled in
1715  * when CONFIG_NET_CLS_ACT is? otherwise some useless instructions
1716  * a compare and 2 stores extra right now if we dont have it on
1717  * but have CONFIG_NET_CLS_ACT
1718  * NOTE: This doesnt stop any functionality; if you dont have
1719  * the ingress scheduler, you just cant add policies on ingress.
1720  *
1721  */
1722 static int ing_filter(struct sk_buff *skb)
1723 {
1724 	struct Qdisc *q;
1725 	struct net_device *dev = skb->dev;
1726 	int result = TC_ACT_OK;
1727 
1728 	if (dev->qdisc_ingress) {
1729 		__u32 ttl = (__u32) G_TC_RTTL(skb->tc_verd);
1730 		if (MAX_RED_LOOP < ttl++) {
1731 			printk("Redir loop detected Dropping packet (%s->%s)\n",
1732 				skb->input_dev->name, skb->dev->name);
1733 			return TC_ACT_SHOT;
1734 		}
1735 
1736 		skb->tc_verd = SET_TC_RTTL(skb->tc_verd,ttl);
1737 
1738 		skb->tc_verd = SET_TC_AT(skb->tc_verd,AT_INGRESS);
1739 
1740 		spin_lock(&dev->ingress_lock);
1741 		if ((q = dev->qdisc_ingress) != NULL)
1742 			result = q->enqueue(skb, q);
1743 		spin_unlock(&dev->ingress_lock);
1744 
1745 	}
1746 
1747 	return result;
1748 }
1749 #endif
1750 
1751 int netif_receive_skb(struct sk_buff *skb)
1752 {
1753 	struct packet_type *ptype, *pt_prev;
1754 	struct net_device *orig_dev;
1755 	int ret = NET_RX_DROP;
1756 	unsigned short type;
1757 
1758 	/* if we've gotten here through NAPI, check netpoll */
1759 	if (skb->dev->poll && netpoll_rx(skb))
1760 		return NET_RX_DROP;
1761 
1762 	if (!skb->tstamp.off_sec)
1763 		net_timestamp(skb);
1764 
1765 	if (!skb->input_dev)
1766 		skb->input_dev = skb->dev;
1767 
1768 	orig_dev = skb_bond(skb);
1769 
1770 	if (!orig_dev)
1771 		return NET_RX_DROP;
1772 
1773 	__get_cpu_var(netdev_rx_stat).total++;
1774 
1775 	skb->h.raw = skb->nh.raw = skb->data;
1776 	skb->mac_len = skb->nh.raw - skb->mac.raw;
1777 
1778 	pt_prev = NULL;
1779 
1780 	rcu_read_lock();
1781 
1782 #ifdef CONFIG_NET_CLS_ACT
1783 	if (skb->tc_verd & TC_NCLS) {
1784 		skb->tc_verd = CLR_TC_NCLS(skb->tc_verd);
1785 		goto ncls;
1786 	}
1787 #endif
1788 
1789 	list_for_each_entry_rcu(ptype, &ptype_all, list) {
1790 		if (!ptype->dev || ptype->dev == skb->dev) {
1791 			if (pt_prev)
1792 				ret = deliver_skb(skb, pt_prev, orig_dev);
1793 			pt_prev = ptype;
1794 		}
1795 	}
1796 
1797 #ifdef CONFIG_NET_CLS_ACT
1798 	if (pt_prev) {
1799 		ret = deliver_skb(skb, pt_prev, orig_dev);
1800 		pt_prev = NULL; /* noone else should process this after*/
1801 	} else {
1802 		skb->tc_verd = SET_TC_OK2MUNGE(skb->tc_verd);
1803 	}
1804 
1805 	ret = ing_filter(skb);
1806 
1807 	if (ret == TC_ACT_SHOT || (ret == TC_ACT_STOLEN)) {
1808 		kfree_skb(skb);
1809 		goto out;
1810 	}
1811 
1812 	skb->tc_verd = 0;
1813 ncls:
1814 #endif
1815 
1816 	handle_diverter(skb);
1817 
1818 	if (handle_bridge(&skb, &pt_prev, &ret, orig_dev))
1819 		goto out;
1820 
1821 	type = skb->protocol;
1822 	list_for_each_entry_rcu(ptype, &ptype_base[ntohs(type)&15], list) {
1823 		if (ptype->type == type &&
1824 		    (!ptype->dev || ptype->dev == skb->dev)) {
1825 			if (pt_prev)
1826 				ret = deliver_skb(skb, pt_prev, orig_dev);
1827 			pt_prev = ptype;
1828 		}
1829 	}
1830 
1831 	if (pt_prev) {
1832 		ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
1833 	} else {
1834 		kfree_skb(skb);
1835 		/* Jamal, now you will not able to escape explaining
1836 		 * me how you were going to use this. :-)
1837 		 */
1838 		ret = NET_RX_DROP;
1839 	}
1840 
1841 out:
1842 	rcu_read_unlock();
1843 	return ret;
1844 }
1845 
1846 static int process_backlog(struct net_device *backlog_dev, int *budget)
1847 {
1848 	int work = 0;
1849 	int quota = min(backlog_dev->quota, *budget);
1850 	struct softnet_data *queue = &__get_cpu_var(softnet_data);
1851 	unsigned long start_time = jiffies;
1852 
1853 	backlog_dev->weight = weight_p;
1854 	for (;;) {
1855 		struct sk_buff *skb;
1856 		struct net_device *dev;
1857 
1858 		local_irq_disable();
1859 		skb = __skb_dequeue(&queue->input_pkt_queue);
1860 		if (!skb)
1861 			goto job_done;
1862 		local_irq_enable();
1863 
1864 		dev = skb->dev;
1865 
1866 		netif_receive_skb(skb);
1867 
1868 		dev_put(dev);
1869 
1870 		work++;
1871 
1872 		if (work >= quota || jiffies - start_time > 1)
1873 			break;
1874 
1875 	}
1876 
1877 	backlog_dev->quota -= work;
1878 	*budget -= work;
1879 	return -1;
1880 
1881 job_done:
1882 	backlog_dev->quota -= work;
1883 	*budget -= work;
1884 
1885 	list_del(&backlog_dev->poll_list);
1886 	smp_mb__before_clear_bit();
1887 	netif_poll_enable(backlog_dev);
1888 
1889 	local_irq_enable();
1890 	return 0;
1891 }
1892 
1893 static void net_rx_action(struct softirq_action *h)
1894 {
1895 	struct softnet_data *queue = &__get_cpu_var(softnet_data);
1896 	unsigned long start_time = jiffies;
1897 	int budget = netdev_budget;
1898 	void *have;
1899 
1900 	local_irq_disable();
1901 
1902 	while (!list_empty(&queue->poll_list)) {
1903 		struct net_device *dev;
1904 
1905 		if (budget <= 0 || jiffies - start_time > 1)
1906 			goto softnet_break;
1907 
1908 		local_irq_enable();
1909 
1910 		dev = list_entry(queue->poll_list.next,
1911 				 struct net_device, poll_list);
1912 		have = netpoll_poll_lock(dev);
1913 
1914 		if (dev->quota <= 0 || dev->poll(dev, &budget)) {
1915 			netpoll_poll_unlock(have);
1916 			local_irq_disable();
1917 			list_move_tail(&dev->poll_list, &queue->poll_list);
1918 			if (dev->quota < 0)
1919 				dev->quota += dev->weight;
1920 			else
1921 				dev->quota = dev->weight;
1922 		} else {
1923 			netpoll_poll_unlock(have);
1924 			dev_put(dev);
1925 			local_irq_disable();
1926 		}
1927 	}
1928 out:
1929 #ifdef CONFIG_NET_DMA
1930 	/*
1931 	 * There may not be any more sk_buffs coming right now, so push
1932 	 * any pending DMA copies to hardware
1933 	 */
1934 	if (net_dma_client) {
1935 		struct dma_chan *chan;
1936 		rcu_read_lock();
1937 		list_for_each_entry_rcu(chan, &net_dma_client->channels, client_node)
1938 			dma_async_memcpy_issue_pending(chan);
1939 		rcu_read_unlock();
1940 	}
1941 #endif
1942 	local_irq_enable();
1943 	return;
1944 
1945 softnet_break:
1946 	__get_cpu_var(netdev_rx_stat).time_squeeze++;
1947 	__raise_softirq_irqoff(NET_RX_SOFTIRQ);
1948 	goto out;
1949 }
1950 
1951 static gifconf_func_t * gifconf_list [NPROTO];
1952 
1953 /**
1954  *	register_gifconf	-	register a SIOCGIF handler
1955  *	@family: Address family
1956  *	@gifconf: Function handler
1957  *
1958  *	Register protocol dependent address dumping routines. The handler
1959  *	that is passed must not be freed or reused until it has been replaced
1960  *	by another handler.
1961  */
1962 int register_gifconf(unsigned int family, gifconf_func_t * gifconf)
1963 {
1964 	if (family >= NPROTO)
1965 		return -EINVAL;
1966 	gifconf_list[family] = gifconf;
1967 	return 0;
1968 }
1969 
1970 
1971 /*
1972  *	Map an interface index to its name (SIOCGIFNAME)
1973  */
1974 
1975 /*
1976  *	We need this ioctl for efficient implementation of the
1977  *	if_indextoname() function required by the IPv6 API.  Without
1978  *	it, we would have to search all the interfaces to find a
1979  *	match.  --pb
1980  */
1981 
1982 static int dev_ifname(struct ifreq __user *arg)
1983 {
1984 	struct net_device *dev;
1985 	struct ifreq ifr;
1986 
1987 	/*
1988 	 *	Fetch the caller's info block.
1989 	 */
1990 
1991 	if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
1992 		return -EFAULT;
1993 
1994 	read_lock(&dev_base_lock);
1995 	dev = __dev_get_by_index(ifr.ifr_ifindex);
1996 	if (!dev) {
1997 		read_unlock(&dev_base_lock);
1998 		return -ENODEV;
1999 	}
2000 
2001 	strcpy(ifr.ifr_name, dev->name);
2002 	read_unlock(&dev_base_lock);
2003 
2004 	if (copy_to_user(arg, &ifr, sizeof(struct ifreq)))
2005 		return -EFAULT;
2006 	return 0;
2007 }
2008 
2009 /*
2010  *	Perform a SIOCGIFCONF call. This structure will change
2011  *	size eventually, and there is nothing I can do about it.
2012  *	Thus we will need a 'compatibility mode'.
2013  */
2014 
2015 static int dev_ifconf(char __user *arg)
2016 {
2017 	struct ifconf ifc;
2018 	struct net_device *dev;
2019 	char __user *pos;
2020 	int len;
2021 	int total;
2022 	int i;
2023 
2024 	/*
2025 	 *	Fetch the caller's info block.
2026 	 */
2027 
2028 	if (copy_from_user(&ifc, arg, sizeof(struct ifconf)))
2029 		return -EFAULT;
2030 
2031 	pos = ifc.ifc_buf;
2032 	len = ifc.ifc_len;
2033 
2034 	/*
2035 	 *	Loop over the interfaces, and write an info block for each.
2036 	 */
2037 
2038 	total = 0;
2039 	for (dev = dev_base; dev; dev = dev->next) {
2040 		for (i = 0; i < NPROTO; i++) {
2041 			if (gifconf_list[i]) {
2042 				int done;
2043 				if (!pos)
2044 					done = gifconf_list[i](dev, NULL, 0);
2045 				else
2046 					done = gifconf_list[i](dev, pos + total,
2047 							       len - total);
2048 				if (done < 0)
2049 					return -EFAULT;
2050 				total += done;
2051 			}
2052 		}
2053   	}
2054 
2055 	/*
2056 	 *	All done.  Write the updated control block back to the caller.
2057 	 */
2058 	ifc.ifc_len = total;
2059 
2060 	/*
2061 	 * 	Both BSD and Solaris return 0 here, so we do too.
2062 	 */
2063 	return copy_to_user(arg, &ifc, sizeof(struct ifconf)) ? -EFAULT : 0;
2064 }
2065 
2066 #ifdef CONFIG_PROC_FS
2067 /*
2068  *	This is invoked by the /proc filesystem handler to display a device
2069  *	in detail.
2070  */
2071 static __inline__ struct net_device *dev_get_idx(loff_t pos)
2072 {
2073 	struct net_device *dev;
2074 	loff_t i;
2075 
2076 	for (i = 0, dev = dev_base; dev && i < pos; ++i, dev = dev->next);
2077 
2078 	return i == pos ? dev : NULL;
2079 }
2080 
2081 void *dev_seq_start(struct seq_file *seq, loff_t *pos)
2082 {
2083 	read_lock(&dev_base_lock);
2084 	return *pos ? dev_get_idx(*pos - 1) : SEQ_START_TOKEN;
2085 }
2086 
2087 void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
2088 {
2089 	++*pos;
2090 	return v == SEQ_START_TOKEN ? dev_base : ((struct net_device *)v)->next;
2091 }
2092 
2093 void dev_seq_stop(struct seq_file *seq, void *v)
2094 {
2095 	read_unlock(&dev_base_lock);
2096 }
2097 
2098 static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
2099 {
2100 	if (dev->get_stats) {
2101 		struct net_device_stats *stats = dev->get_stats(dev);
2102 
2103 		seq_printf(seq, "%6s:%8lu %7lu %4lu %4lu %4lu %5lu %10lu %9lu "
2104 				"%8lu %7lu %4lu %4lu %4lu %5lu %7lu %10lu\n",
2105 			   dev->name, stats->rx_bytes, stats->rx_packets,
2106 			   stats->rx_errors,
2107 			   stats->rx_dropped + stats->rx_missed_errors,
2108 			   stats->rx_fifo_errors,
2109 			   stats->rx_length_errors + stats->rx_over_errors +
2110 			     stats->rx_crc_errors + stats->rx_frame_errors,
2111 			   stats->rx_compressed, stats->multicast,
2112 			   stats->tx_bytes, stats->tx_packets,
2113 			   stats->tx_errors, stats->tx_dropped,
2114 			   stats->tx_fifo_errors, stats->collisions,
2115 			   stats->tx_carrier_errors +
2116 			     stats->tx_aborted_errors +
2117 			     stats->tx_window_errors +
2118 			     stats->tx_heartbeat_errors,
2119 			   stats->tx_compressed);
2120 	} else
2121 		seq_printf(seq, "%6s: No statistics available.\n", dev->name);
2122 }
2123 
2124 /*
2125  *	Called from the PROCfs module. This now uses the new arbitrary sized
2126  *	/proc/net interface to create /proc/net/dev
2127  */
2128 static int dev_seq_show(struct seq_file *seq, void *v)
2129 {
2130 	if (v == SEQ_START_TOKEN)
2131 		seq_puts(seq, "Inter-|   Receive                            "
2132 			      "                    |  Transmit\n"
2133 			      " face |bytes    packets errs drop fifo frame "
2134 			      "compressed multicast|bytes    packets errs "
2135 			      "drop fifo colls carrier compressed\n");
2136 	else
2137 		dev_seq_printf_stats(seq, v);
2138 	return 0;
2139 }
2140 
2141 static struct netif_rx_stats *softnet_get_online(loff_t *pos)
2142 {
2143 	struct netif_rx_stats *rc = NULL;
2144 
2145 	while (*pos < NR_CPUS)
2146 	       	if (cpu_online(*pos)) {
2147 			rc = &per_cpu(netdev_rx_stat, *pos);
2148 			break;
2149 		} else
2150 			++*pos;
2151 	return rc;
2152 }
2153 
2154 static void *softnet_seq_start(struct seq_file *seq, loff_t *pos)
2155 {
2156 	return softnet_get_online(pos);
2157 }
2158 
2159 static void *softnet_seq_next(struct seq_file *seq, void *v, loff_t *pos)
2160 {
2161 	++*pos;
2162 	return softnet_get_online(pos);
2163 }
2164 
2165 static void softnet_seq_stop(struct seq_file *seq, void *v)
2166 {
2167 }
2168 
2169 static int softnet_seq_show(struct seq_file *seq, void *v)
2170 {
2171 	struct netif_rx_stats *s = v;
2172 
2173 	seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x %08x\n",
2174 		   s->total, s->dropped, s->time_squeeze, 0,
2175 		   0, 0, 0, 0, /* was fastroute */
2176 		   s->cpu_collision );
2177 	return 0;
2178 }
2179 
2180 static struct seq_operations dev_seq_ops = {
2181 	.start = dev_seq_start,
2182 	.next  = dev_seq_next,
2183 	.stop  = dev_seq_stop,
2184 	.show  = dev_seq_show,
2185 };
2186 
2187 static int dev_seq_open(struct inode *inode, struct file *file)
2188 {
2189 	return seq_open(file, &dev_seq_ops);
2190 }
2191 
2192 static struct file_operations dev_seq_fops = {
2193 	.owner	 = THIS_MODULE,
2194 	.open    = dev_seq_open,
2195 	.read    = seq_read,
2196 	.llseek  = seq_lseek,
2197 	.release = seq_release,
2198 };
2199 
2200 static struct seq_operations softnet_seq_ops = {
2201 	.start = softnet_seq_start,
2202 	.next  = softnet_seq_next,
2203 	.stop  = softnet_seq_stop,
2204 	.show  = softnet_seq_show,
2205 };
2206 
2207 static int softnet_seq_open(struct inode *inode, struct file *file)
2208 {
2209 	return seq_open(file, &softnet_seq_ops);
2210 }
2211 
2212 static struct file_operations softnet_seq_fops = {
2213 	.owner	 = THIS_MODULE,
2214 	.open    = softnet_seq_open,
2215 	.read    = seq_read,
2216 	.llseek  = seq_lseek,
2217 	.release = seq_release,
2218 };
2219 
2220 #ifdef CONFIG_WIRELESS_EXT
2221 extern int wireless_proc_init(void);
2222 #else
2223 #define wireless_proc_init() 0
2224 #endif
2225 
2226 static int __init dev_proc_init(void)
2227 {
2228 	int rc = -ENOMEM;
2229 
2230 	if (!proc_net_fops_create("dev", S_IRUGO, &dev_seq_fops))
2231 		goto out;
2232 	if (!proc_net_fops_create("softnet_stat", S_IRUGO, &softnet_seq_fops))
2233 		goto out_dev;
2234 	if (wireless_proc_init())
2235 		goto out_softnet;
2236 	rc = 0;
2237 out:
2238 	return rc;
2239 out_softnet:
2240 	proc_net_remove("softnet_stat");
2241 out_dev:
2242 	proc_net_remove("dev");
2243 	goto out;
2244 }
2245 #else
2246 #define dev_proc_init() 0
2247 #endif	/* CONFIG_PROC_FS */
2248 
2249 
2250 /**
2251  *	netdev_set_master	-	set up master/slave pair
2252  *	@slave: slave device
2253  *	@master: new master device
2254  *
2255  *	Changes the master device of the slave. Pass %NULL to break the
2256  *	bonding. The caller must hold the RTNL semaphore. On a failure
2257  *	a negative errno code is returned. On success the reference counts
2258  *	are adjusted, %RTM_NEWLINK is sent to the routing socket and the
2259  *	function returns zero.
2260  */
2261 int netdev_set_master(struct net_device *slave, struct net_device *master)
2262 {
2263 	struct net_device *old = slave->master;
2264 
2265 	ASSERT_RTNL();
2266 
2267 	if (master) {
2268 		if (old)
2269 			return -EBUSY;
2270 		dev_hold(master);
2271 	}
2272 
2273 	slave->master = master;
2274 
2275 	synchronize_net();
2276 
2277 	if (old)
2278 		dev_put(old);
2279 
2280 	if (master)
2281 		slave->flags |= IFF_SLAVE;
2282 	else
2283 		slave->flags &= ~IFF_SLAVE;
2284 
2285 	rtmsg_ifinfo(RTM_NEWLINK, slave, IFF_SLAVE);
2286 	return 0;
2287 }
2288 
2289 /**
2290  *	dev_set_promiscuity	- update promiscuity count on a device
2291  *	@dev: device
2292  *	@inc: modifier
2293  *
2294  *	Add or remove promiscuity from a device. While the count in the device
2295  *	remains above zero the interface remains promiscuous. Once it hits zero
2296  *	the device reverts back to normal filtering operation. A negative inc
2297  *	value is used to drop promiscuity on the device.
2298  */
2299 void dev_set_promiscuity(struct net_device *dev, int inc)
2300 {
2301 	unsigned short old_flags = dev->flags;
2302 
2303 	if ((dev->promiscuity += inc) == 0)
2304 		dev->flags &= ~IFF_PROMISC;
2305 	else
2306 		dev->flags |= IFF_PROMISC;
2307 	if (dev->flags != old_flags) {
2308 		dev_mc_upload(dev);
2309 		printk(KERN_INFO "device %s %s promiscuous mode\n",
2310 		       dev->name, (dev->flags & IFF_PROMISC) ? "entered" :
2311 		       					       "left");
2312 		audit_log(current->audit_context, GFP_ATOMIC,
2313 			AUDIT_ANOM_PROMISCUOUS,
2314 			"dev=%s prom=%d old_prom=%d auid=%u",
2315 			dev->name, (dev->flags & IFF_PROMISC),
2316 			(old_flags & IFF_PROMISC),
2317 			audit_get_loginuid(current->audit_context));
2318 	}
2319 }
2320 
2321 /**
2322  *	dev_set_allmulti	- update allmulti count on a device
2323  *	@dev: device
2324  *	@inc: modifier
2325  *
2326  *	Add or remove reception of all multicast frames to a device. While the
2327  *	count in the device remains above zero the interface remains listening
2328  *	to all interfaces. Once it hits zero the device reverts back to normal
2329  *	filtering operation. A negative @inc value is used to drop the counter
2330  *	when releasing a resource needing all multicasts.
2331  */
2332 
2333 void dev_set_allmulti(struct net_device *dev, int inc)
2334 {
2335 	unsigned short old_flags = dev->flags;
2336 
2337 	dev->flags |= IFF_ALLMULTI;
2338 	if ((dev->allmulti += inc) == 0)
2339 		dev->flags &= ~IFF_ALLMULTI;
2340 	if (dev->flags ^ old_flags)
2341 		dev_mc_upload(dev);
2342 }
2343 
2344 unsigned dev_get_flags(const struct net_device *dev)
2345 {
2346 	unsigned flags;
2347 
2348 	flags = (dev->flags & ~(IFF_PROMISC |
2349 				IFF_ALLMULTI |
2350 				IFF_RUNNING |
2351 				IFF_LOWER_UP |
2352 				IFF_DORMANT)) |
2353 		(dev->gflags & (IFF_PROMISC |
2354 				IFF_ALLMULTI));
2355 
2356 	if (netif_running(dev)) {
2357 		if (netif_oper_up(dev))
2358 			flags |= IFF_RUNNING;
2359 		if (netif_carrier_ok(dev))
2360 			flags |= IFF_LOWER_UP;
2361 		if (netif_dormant(dev))
2362 			flags |= IFF_DORMANT;
2363 	}
2364 
2365 	return flags;
2366 }
2367 
2368 int dev_change_flags(struct net_device *dev, unsigned flags)
2369 {
2370 	int ret;
2371 	int old_flags = dev->flags;
2372 
2373 	/*
2374 	 *	Set the flags on our device.
2375 	 */
2376 
2377 	dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
2378 			       IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
2379 			       IFF_AUTOMEDIA)) |
2380 		     (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC |
2381 				    IFF_ALLMULTI));
2382 
2383 	/*
2384 	 *	Load in the correct multicast list now the flags have changed.
2385 	 */
2386 
2387 	dev_mc_upload(dev);
2388 
2389 	/*
2390 	 *	Have we downed the interface. We handle IFF_UP ourselves
2391 	 *	according to user attempts to set it, rather than blindly
2392 	 *	setting it.
2393 	 */
2394 
2395 	ret = 0;
2396 	if ((old_flags ^ flags) & IFF_UP) {	/* Bit is different  ? */
2397 		ret = ((old_flags & IFF_UP) ? dev_close : dev_open)(dev);
2398 
2399 		if (!ret)
2400 			dev_mc_upload(dev);
2401 	}
2402 
2403 	if (dev->flags & IFF_UP &&
2404 	    ((old_flags ^ dev->flags) &~ (IFF_UP | IFF_PROMISC | IFF_ALLMULTI |
2405 					  IFF_VOLATILE)))
2406 		raw_notifier_call_chain(&netdev_chain,
2407 				NETDEV_CHANGE, dev);
2408 
2409 	if ((flags ^ dev->gflags) & IFF_PROMISC) {
2410 		int inc = (flags & IFF_PROMISC) ? +1 : -1;
2411 		dev->gflags ^= IFF_PROMISC;
2412 		dev_set_promiscuity(dev, inc);
2413 	}
2414 
2415 	/* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI
2416 	   is important. Some (broken) drivers set IFF_PROMISC, when
2417 	   IFF_ALLMULTI is requested not asking us and not reporting.
2418 	 */
2419 	if ((flags ^ dev->gflags) & IFF_ALLMULTI) {
2420 		int inc = (flags & IFF_ALLMULTI) ? +1 : -1;
2421 		dev->gflags ^= IFF_ALLMULTI;
2422 		dev_set_allmulti(dev, inc);
2423 	}
2424 
2425 	if (old_flags ^ dev->flags)
2426 		rtmsg_ifinfo(RTM_NEWLINK, dev, old_flags ^ dev->flags);
2427 
2428 	return ret;
2429 }
2430 
2431 int dev_set_mtu(struct net_device *dev, int new_mtu)
2432 {
2433 	int err;
2434 
2435 	if (new_mtu == dev->mtu)
2436 		return 0;
2437 
2438 	/*	MTU must be positive.	 */
2439 	if (new_mtu < 0)
2440 		return -EINVAL;
2441 
2442 	if (!netif_device_present(dev))
2443 		return -ENODEV;
2444 
2445 	err = 0;
2446 	if (dev->change_mtu)
2447 		err = dev->change_mtu(dev, new_mtu);
2448 	else
2449 		dev->mtu = new_mtu;
2450 	if (!err && dev->flags & IFF_UP)
2451 		raw_notifier_call_chain(&netdev_chain,
2452 				NETDEV_CHANGEMTU, dev);
2453 	return err;
2454 }
2455 
2456 int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa)
2457 {
2458 	int err;
2459 
2460 	if (!dev->set_mac_address)
2461 		return -EOPNOTSUPP;
2462 	if (sa->sa_family != dev->type)
2463 		return -EINVAL;
2464 	if (!netif_device_present(dev))
2465 		return -ENODEV;
2466 	err = dev->set_mac_address(dev, sa);
2467 	if (!err)
2468 		raw_notifier_call_chain(&netdev_chain,
2469 				NETDEV_CHANGEADDR, dev);
2470 	return err;
2471 }
2472 
2473 /*
2474  *	Perform the SIOCxIFxxx calls.
2475  */
2476 static int dev_ifsioc(struct ifreq *ifr, unsigned int cmd)
2477 {
2478 	int err;
2479 	struct net_device *dev = __dev_get_by_name(ifr->ifr_name);
2480 
2481 	if (!dev)
2482 		return -ENODEV;
2483 
2484 	switch (cmd) {
2485 		case SIOCGIFFLAGS:	/* Get interface flags */
2486 			ifr->ifr_flags = dev_get_flags(dev);
2487 			return 0;
2488 
2489 		case SIOCSIFFLAGS:	/* Set interface flags */
2490 			return dev_change_flags(dev, ifr->ifr_flags);
2491 
2492 		case SIOCGIFMETRIC:	/* Get the metric on the interface
2493 					   (currently unused) */
2494 			ifr->ifr_metric = 0;
2495 			return 0;
2496 
2497 		case SIOCSIFMETRIC:	/* Set the metric on the interface
2498 					   (currently unused) */
2499 			return -EOPNOTSUPP;
2500 
2501 		case SIOCGIFMTU:	/* Get the MTU of a device */
2502 			ifr->ifr_mtu = dev->mtu;
2503 			return 0;
2504 
2505 		case SIOCSIFMTU:	/* Set the MTU of a device */
2506 			return dev_set_mtu(dev, ifr->ifr_mtu);
2507 
2508 		case SIOCGIFHWADDR:
2509 			if (!dev->addr_len)
2510 				memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data);
2511 			else
2512 				memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr,
2513 				       min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
2514 			ifr->ifr_hwaddr.sa_family = dev->type;
2515 			return 0;
2516 
2517 		case SIOCSIFHWADDR:
2518 			return dev_set_mac_address(dev, &ifr->ifr_hwaddr);
2519 
2520 		case SIOCSIFHWBROADCAST:
2521 			if (ifr->ifr_hwaddr.sa_family != dev->type)
2522 				return -EINVAL;
2523 			memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data,
2524 			       min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
2525 			raw_notifier_call_chain(&netdev_chain,
2526 					    NETDEV_CHANGEADDR, dev);
2527 			return 0;
2528 
2529 		case SIOCGIFMAP:
2530 			ifr->ifr_map.mem_start = dev->mem_start;
2531 			ifr->ifr_map.mem_end   = dev->mem_end;
2532 			ifr->ifr_map.base_addr = dev->base_addr;
2533 			ifr->ifr_map.irq       = dev->irq;
2534 			ifr->ifr_map.dma       = dev->dma;
2535 			ifr->ifr_map.port      = dev->if_port;
2536 			return 0;
2537 
2538 		case SIOCSIFMAP:
2539 			if (dev->set_config) {
2540 				if (!netif_device_present(dev))
2541 					return -ENODEV;
2542 				return dev->set_config(dev, &ifr->ifr_map);
2543 			}
2544 			return -EOPNOTSUPP;
2545 
2546 		case SIOCADDMULTI:
2547 			if (!dev->set_multicast_list ||
2548 			    ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
2549 				return -EINVAL;
2550 			if (!netif_device_present(dev))
2551 				return -ENODEV;
2552 			return dev_mc_add(dev, ifr->ifr_hwaddr.sa_data,
2553 					  dev->addr_len, 1);
2554 
2555 		case SIOCDELMULTI:
2556 			if (!dev->set_multicast_list ||
2557 			    ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
2558 				return -EINVAL;
2559 			if (!netif_device_present(dev))
2560 				return -ENODEV;
2561 			return dev_mc_delete(dev, ifr->ifr_hwaddr.sa_data,
2562 					     dev->addr_len, 1);
2563 
2564 		case SIOCGIFINDEX:
2565 			ifr->ifr_ifindex = dev->ifindex;
2566 			return 0;
2567 
2568 		case SIOCGIFTXQLEN:
2569 			ifr->ifr_qlen = dev->tx_queue_len;
2570 			return 0;
2571 
2572 		case SIOCSIFTXQLEN:
2573 			if (ifr->ifr_qlen < 0)
2574 				return -EINVAL;
2575 			dev->tx_queue_len = ifr->ifr_qlen;
2576 			return 0;
2577 
2578 		case SIOCSIFNAME:
2579 			ifr->ifr_newname[IFNAMSIZ-1] = '\0';
2580 			return dev_change_name(dev, ifr->ifr_newname);
2581 
2582 		/*
2583 		 *	Unknown or private ioctl
2584 		 */
2585 
2586 		default:
2587 			if ((cmd >= SIOCDEVPRIVATE &&
2588 			    cmd <= SIOCDEVPRIVATE + 15) ||
2589 			    cmd == SIOCBONDENSLAVE ||
2590 			    cmd == SIOCBONDRELEASE ||
2591 			    cmd == SIOCBONDSETHWADDR ||
2592 			    cmd == SIOCBONDSLAVEINFOQUERY ||
2593 			    cmd == SIOCBONDINFOQUERY ||
2594 			    cmd == SIOCBONDCHANGEACTIVE ||
2595 			    cmd == SIOCGMIIPHY ||
2596 			    cmd == SIOCGMIIREG ||
2597 			    cmd == SIOCSMIIREG ||
2598 			    cmd == SIOCBRADDIF ||
2599 			    cmd == SIOCBRDELIF ||
2600 			    cmd == SIOCWANDEV) {
2601 				err = -EOPNOTSUPP;
2602 				if (dev->do_ioctl) {
2603 					if (netif_device_present(dev))
2604 						err = dev->do_ioctl(dev, ifr,
2605 								    cmd);
2606 					else
2607 						err = -ENODEV;
2608 				}
2609 			} else
2610 				err = -EINVAL;
2611 
2612 	}
2613 	return err;
2614 }
2615 
2616 /*
2617  *	This function handles all "interface"-type I/O control requests. The actual
2618  *	'doing' part of this is dev_ifsioc above.
2619  */
2620 
2621 /**
2622  *	dev_ioctl	-	network device ioctl
2623  *	@cmd: command to issue
2624  *	@arg: pointer to a struct ifreq in user space
2625  *
2626  *	Issue ioctl functions to devices. This is normally called by the
2627  *	user space syscall interfaces but can sometimes be useful for
2628  *	other purposes. The return value is the return from the syscall if
2629  *	positive or a negative errno code on error.
2630  */
2631 
2632 int dev_ioctl(unsigned int cmd, void __user *arg)
2633 {
2634 	struct ifreq ifr;
2635 	int ret;
2636 	char *colon;
2637 
2638 	/* One special case: SIOCGIFCONF takes ifconf argument
2639 	   and requires shared lock, because it sleeps writing
2640 	   to user space.
2641 	 */
2642 
2643 	if (cmd == SIOCGIFCONF) {
2644 		rtnl_lock();
2645 		ret = dev_ifconf((char __user *) arg);
2646 		rtnl_unlock();
2647 		return ret;
2648 	}
2649 	if (cmd == SIOCGIFNAME)
2650 		return dev_ifname((struct ifreq __user *)arg);
2651 
2652 	if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
2653 		return -EFAULT;
2654 
2655 	ifr.ifr_name[IFNAMSIZ-1] = 0;
2656 
2657 	colon = strchr(ifr.ifr_name, ':');
2658 	if (colon)
2659 		*colon = 0;
2660 
2661 	/*
2662 	 *	See which interface the caller is talking about.
2663 	 */
2664 
2665 	switch (cmd) {
2666 		/*
2667 		 *	These ioctl calls:
2668 		 *	- can be done by all.
2669 		 *	- atomic and do not require locking.
2670 		 *	- return a value
2671 		 */
2672 		case SIOCGIFFLAGS:
2673 		case SIOCGIFMETRIC:
2674 		case SIOCGIFMTU:
2675 		case SIOCGIFHWADDR:
2676 		case SIOCGIFSLAVE:
2677 		case SIOCGIFMAP:
2678 		case SIOCGIFINDEX:
2679 		case SIOCGIFTXQLEN:
2680 			dev_load(ifr.ifr_name);
2681 			read_lock(&dev_base_lock);
2682 			ret = dev_ifsioc(&ifr, cmd);
2683 			read_unlock(&dev_base_lock);
2684 			if (!ret) {
2685 				if (colon)
2686 					*colon = ':';
2687 				if (copy_to_user(arg, &ifr,
2688 						 sizeof(struct ifreq)))
2689 					ret = -EFAULT;
2690 			}
2691 			return ret;
2692 
2693 		case SIOCETHTOOL:
2694 			dev_load(ifr.ifr_name);
2695 			rtnl_lock();
2696 			ret = dev_ethtool(&ifr);
2697 			rtnl_unlock();
2698 			if (!ret) {
2699 				if (colon)
2700 					*colon = ':';
2701 				if (copy_to_user(arg, &ifr,
2702 						 sizeof(struct ifreq)))
2703 					ret = -EFAULT;
2704 			}
2705 			return ret;
2706 
2707 		/*
2708 		 *	These ioctl calls:
2709 		 *	- require superuser power.
2710 		 *	- require strict serialization.
2711 		 *	- return a value
2712 		 */
2713 		case SIOCGMIIPHY:
2714 		case SIOCGMIIREG:
2715 		case SIOCSIFNAME:
2716 			if (!capable(CAP_NET_ADMIN))
2717 				return -EPERM;
2718 			dev_load(ifr.ifr_name);
2719 			rtnl_lock();
2720 			ret = dev_ifsioc(&ifr, cmd);
2721 			rtnl_unlock();
2722 			if (!ret) {
2723 				if (colon)
2724 					*colon = ':';
2725 				if (copy_to_user(arg, &ifr,
2726 						 sizeof(struct ifreq)))
2727 					ret = -EFAULT;
2728 			}
2729 			return ret;
2730 
2731 		/*
2732 		 *	These ioctl calls:
2733 		 *	- require superuser power.
2734 		 *	- require strict serialization.
2735 		 *	- do not return a value
2736 		 */
2737 		case SIOCSIFFLAGS:
2738 		case SIOCSIFMETRIC:
2739 		case SIOCSIFMTU:
2740 		case SIOCSIFMAP:
2741 		case SIOCSIFHWADDR:
2742 		case SIOCSIFSLAVE:
2743 		case SIOCADDMULTI:
2744 		case SIOCDELMULTI:
2745 		case SIOCSIFHWBROADCAST:
2746 		case SIOCSIFTXQLEN:
2747 		case SIOCSMIIREG:
2748 		case SIOCBONDENSLAVE:
2749 		case SIOCBONDRELEASE:
2750 		case SIOCBONDSETHWADDR:
2751 		case SIOCBONDCHANGEACTIVE:
2752 		case SIOCBRADDIF:
2753 		case SIOCBRDELIF:
2754 			if (!capable(CAP_NET_ADMIN))
2755 				return -EPERM;
2756 			/* fall through */
2757 		case SIOCBONDSLAVEINFOQUERY:
2758 		case SIOCBONDINFOQUERY:
2759 			dev_load(ifr.ifr_name);
2760 			rtnl_lock();
2761 			ret = dev_ifsioc(&ifr, cmd);
2762 			rtnl_unlock();
2763 			return ret;
2764 
2765 		case SIOCGIFMEM:
2766 			/* Get the per device memory space. We can add this but
2767 			 * currently do not support it */
2768 		case SIOCSIFMEM:
2769 			/* Set the per device memory buffer space.
2770 			 * Not applicable in our case */
2771 		case SIOCSIFLINK:
2772 			return -EINVAL;
2773 
2774 		/*
2775 		 *	Unknown or private ioctl.
2776 		 */
2777 		default:
2778 			if (cmd == SIOCWANDEV ||
2779 			    (cmd >= SIOCDEVPRIVATE &&
2780 			     cmd <= SIOCDEVPRIVATE + 15)) {
2781 				dev_load(ifr.ifr_name);
2782 				rtnl_lock();
2783 				ret = dev_ifsioc(&ifr, cmd);
2784 				rtnl_unlock();
2785 				if (!ret && copy_to_user(arg, &ifr,
2786 							 sizeof(struct ifreq)))
2787 					ret = -EFAULT;
2788 				return ret;
2789 			}
2790 #ifdef CONFIG_WIRELESS_EXT
2791 			/* Take care of Wireless Extensions */
2792 			if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {
2793 				/* If command is `set a parameter', or
2794 				 * `get the encoding parameters', check if
2795 				 * the user has the right to do it */
2796 				if (IW_IS_SET(cmd) || cmd == SIOCGIWENCODE
2797 				    || cmd == SIOCGIWENCODEEXT) {
2798 					if (!capable(CAP_NET_ADMIN))
2799 						return -EPERM;
2800 				}
2801 				dev_load(ifr.ifr_name);
2802 				rtnl_lock();
2803 				/* Follow me in net/core/wireless.c */
2804 				ret = wireless_process_ioctl(&ifr, cmd);
2805 				rtnl_unlock();
2806 				if (IW_IS_GET(cmd) &&
2807 				    copy_to_user(arg, &ifr,
2808 					    	 sizeof(struct ifreq)))
2809 					ret = -EFAULT;
2810 				return ret;
2811 			}
2812 #endif	/* CONFIG_WIRELESS_EXT */
2813 			return -EINVAL;
2814 	}
2815 }
2816 
2817 
2818 /**
2819  *	dev_new_index	-	allocate an ifindex
2820  *
2821  *	Returns a suitable unique value for a new device interface
2822  *	number.  The caller must hold the rtnl semaphore or the
2823  *	dev_base_lock to be sure it remains unique.
2824  */
2825 static int dev_new_index(void)
2826 {
2827 	static int ifindex;
2828 	for (;;) {
2829 		if (++ifindex <= 0)
2830 			ifindex = 1;
2831 		if (!__dev_get_by_index(ifindex))
2832 			return ifindex;
2833 	}
2834 }
2835 
2836 static int dev_boot_phase = 1;
2837 
2838 /* Delayed registration/unregisteration */
2839 static DEFINE_SPINLOCK(net_todo_list_lock);
2840 static struct list_head net_todo_list = LIST_HEAD_INIT(net_todo_list);
2841 
2842 static inline void net_set_todo(struct net_device *dev)
2843 {
2844 	spin_lock(&net_todo_list_lock);
2845 	list_add_tail(&dev->todo_list, &net_todo_list);
2846 	spin_unlock(&net_todo_list_lock);
2847 }
2848 
2849 /**
2850  *	register_netdevice	- register a network device
2851  *	@dev: device to register
2852  *
2853  *	Take a completed network device structure and add it to the kernel
2854  *	interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
2855  *	chain. 0 is returned on success. A negative errno code is returned
2856  *	on a failure to set up the device, or if the name is a duplicate.
2857  *
2858  *	Callers must hold the rtnl semaphore. You may want
2859  *	register_netdev() instead of this.
2860  *
2861  *	BUGS:
2862  *	The locking appears insufficient to guarantee two parallel registers
2863  *	will not get the same name.
2864  */
2865 
2866 int register_netdevice(struct net_device *dev)
2867 {
2868 	struct hlist_head *head;
2869 	struct hlist_node *p;
2870 	int ret;
2871 
2872 	BUG_ON(dev_boot_phase);
2873 	ASSERT_RTNL();
2874 
2875 	might_sleep();
2876 
2877 	/* When net_device's are persistent, this will be fatal. */
2878 	BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
2879 
2880 	spin_lock_init(&dev->queue_lock);
2881 	spin_lock_init(&dev->_xmit_lock);
2882 	dev->xmit_lock_owner = -1;
2883 #ifdef CONFIG_NET_CLS_ACT
2884 	spin_lock_init(&dev->ingress_lock);
2885 #endif
2886 
2887 	ret = alloc_divert_blk(dev);
2888 	if (ret)
2889 		goto out;
2890 
2891 	dev->iflink = -1;
2892 
2893 	/* Init, if this function is available */
2894 	if (dev->init) {
2895 		ret = dev->init(dev);
2896 		if (ret) {
2897 			if (ret > 0)
2898 				ret = -EIO;
2899 			goto out_err;
2900 		}
2901 	}
2902 
2903 	if (!dev_valid_name(dev->name)) {
2904 		ret = -EINVAL;
2905 		goto out_err;
2906 	}
2907 
2908 	dev->ifindex = dev_new_index();
2909 	if (dev->iflink == -1)
2910 		dev->iflink = dev->ifindex;
2911 
2912 	/* Check for existence of name */
2913 	head = dev_name_hash(dev->name);
2914 	hlist_for_each(p, head) {
2915 		struct net_device *d
2916 			= hlist_entry(p, struct net_device, name_hlist);
2917 		if (!strncmp(d->name, dev->name, IFNAMSIZ)) {
2918 			ret = -EEXIST;
2919  			goto out_err;
2920 		}
2921  	}
2922 
2923 	/* Fix illegal SG+CSUM combinations. */
2924 	if ((dev->features & NETIF_F_SG) &&
2925 	    !(dev->features & NETIF_F_ALL_CSUM)) {
2926 		printk("%s: Dropping NETIF_F_SG since no checksum feature.\n",
2927 		       dev->name);
2928 		dev->features &= ~NETIF_F_SG;
2929 	}
2930 
2931 	/* TSO requires that SG is present as well. */
2932 	if ((dev->features & NETIF_F_TSO) &&
2933 	    !(dev->features & NETIF_F_SG)) {
2934 		printk("%s: Dropping NETIF_F_TSO since no SG feature.\n",
2935 		       dev->name);
2936 		dev->features &= ~NETIF_F_TSO;
2937 	}
2938 	if (dev->features & NETIF_F_UFO) {
2939 		if (!(dev->features & NETIF_F_HW_CSUM)) {
2940 			printk(KERN_ERR "%s: Dropping NETIF_F_UFO since no "
2941 					"NETIF_F_HW_CSUM feature.\n",
2942 							dev->name);
2943 			dev->features &= ~NETIF_F_UFO;
2944 		}
2945 		if (!(dev->features & NETIF_F_SG)) {
2946 			printk(KERN_ERR "%s: Dropping NETIF_F_UFO since no "
2947 					"NETIF_F_SG feature.\n",
2948 					dev->name);
2949 			dev->features &= ~NETIF_F_UFO;
2950 		}
2951 	}
2952 
2953 	/*
2954 	 *	nil rebuild_header routine,
2955 	 *	that should be never called and used as just bug trap.
2956 	 */
2957 
2958 	if (!dev->rebuild_header)
2959 		dev->rebuild_header = default_rebuild_header;
2960 
2961 	ret = netdev_register_sysfs(dev);
2962 	if (ret)
2963 		goto out_err;
2964 	dev->reg_state = NETREG_REGISTERED;
2965 
2966 	/*
2967 	 *	Default initial state at registry is that the
2968 	 *	device is present.
2969 	 */
2970 
2971 	set_bit(__LINK_STATE_PRESENT, &dev->state);
2972 
2973 	dev->next = NULL;
2974 	dev_init_scheduler(dev);
2975 	write_lock_bh(&dev_base_lock);
2976 	*dev_tail = dev;
2977 	dev_tail = &dev->next;
2978 	hlist_add_head(&dev->name_hlist, head);
2979 	hlist_add_head(&dev->index_hlist, dev_index_hash(dev->ifindex));
2980 	dev_hold(dev);
2981 	write_unlock_bh(&dev_base_lock);
2982 
2983 	/* Notify protocols, that a new device appeared. */
2984 	raw_notifier_call_chain(&netdev_chain, NETDEV_REGISTER, dev);
2985 
2986 	ret = 0;
2987 
2988 out:
2989 	return ret;
2990 out_err:
2991 	free_divert_blk(dev);
2992 	goto out;
2993 }
2994 
2995 /**
2996  *	register_netdev	- register a network device
2997  *	@dev: device to register
2998  *
2999  *	Take a completed network device structure and add it to the kernel
3000  *	interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
3001  *	chain. 0 is returned on success. A negative errno code is returned
3002  *	on a failure to set up the device, or if the name is a duplicate.
3003  *
3004  *	This is a wrapper around register_netdev that takes the rtnl semaphore
3005  *	and expands the device name if you passed a format string to
3006  *	alloc_netdev.
3007  */
3008 int register_netdev(struct net_device *dev)
3009 {
3010 	int err;
3011 
3012 	rtnl_lock();
3013 
3014 	/*
3015 	 * If the name is a format string the caller wants us to do a
3016 	 * name allocation.
3017 	 */
3018 	if (strchr(dev->name, '%')) {
3019 		err = dev_alloc_name(dev, dev->name);
3020 		if (err < 0)
3021 			goto out;
3022 	}
3023 
3024 	/*
3025 	 * Back compatibility hook. Kill this one in 2.5
3026 	 */
3027 	if (dev->name[0] == 0 || dev->name[0] == ' ') {
3028 		err = dev_alloc_name(dev, "eth%d");
3029 		if (err < 0)
3030 			goto out;
3031 	}
3032 
3033 	err = register_netdevice(dev);
3034 out:
3035 	rtnl_unlock();
3036 	return err;
3037 }
3038 EXPORT_SYMBOL(register_netdev);
3039 
3040 /*
3041  * netdev_wait_allrefs - wait until all references are gone.
3042  *
3043  * This is called when unregistering network devices.
3044  *
3045  * Any protocol or device that holds a reference should register
3046  * for netdevice notification, and cleanup and put back the
3047  * reference if they receive an UNREGISTER event.
3048  * We can get stuck here if buggy protocols don't correctly
3049  * call dev_put.
3050  */
3051 static void netdev_wait_allrefs(struct net_device *dev)
3052 {
3053 	unsigned long rebroadcast_time, warning_time;
3054 
3055 	rebroadcast_time = warning_time = jiffies;
3056 	while (atomic_read(&dev->refcnt) != 0) {
3057 		if (time_after(jiffies, rebroadcast_time + 1 * HZ)) {
3058 			rtnl_lock();
3059 
3060 			/* Rebroadcast unregister notification */
3061 			raw_notifier_call_chain(&netdev_chain,
3062 					    NETDEV_UNREGISTER, dev);
3063 
3064 			if (test_bit(__LINK_STATE_LINKWATCH_PENDING,
3065 				     &dev->state)) {
3066 				/* We must not have linkwatch events
3067 				 * pending on unregister. If this
3068 				 * happens, we simply run the queue
3069 				 * unscheduled, resulting in a noop
3070 				 * for this device.
3071 				 */
3072 				linkwatch_run_queue();
3073 			}
3074 
3075 			__rtnl_unlock();
3076 
3077 			rebroadcast_time = jiffies;
3078 		}
3079 
3080 		msleep(250);
3081 
3082 		if (time_after(jiffies, warning_time + 10 * HZ)) {
3083 			printk(KERN_EMERG "unregister_netdevice: "
3084 			       "waiting for %s to become free. Usage "
3085 			       "count = %d\n",
3086 			       dev->name, atomic_read(&dev->refcnt));
3087 			warning_time = jiffies;
3088 		}
3089 	}
3090 }
3091 
3092 /* The sequence is:
3093  *
3094  *	rtnl_lock();
3095  *	...
3096  *	register_netdevice(x1);
3097  *	register_netdevice(x2);
3098  *	...
3099  *	unregister_netdevice(y1);
3100  *	unregister_netdevice(y2);
3101  *      ...
3102  *	rtnl_unlock();
3103  *	free_netdev(y1);
3104  *	free_netdev(y2);
3105  *
3106  * We are invoked by rtnl_unlock() after it drops the semaphore.
3107  * This allows us to deal with problems:
3108  * 1) We can delete sysfs objects which invoke hotplug
3109  *    without deadlocking with linkwatch via keventd.
3110  * 2) Since we run with the RTNL semaphore not held, we can sleep
3111  *    safely in order to wait for the netdev refcnt to drop to zero.
3112  */
3113 static DEFINE_MUTEX(net_todo_run_mutex);
3114 void netdev_run_todo(void)
3115 {
3116 	struct list_head list;
3117 
3118 	/* Need to guard against multiple cpu's getting out of order. */
3119 	mutex_lock(&net_todo_run_mutex);
3120 
3121 	/* Not safe to do outside the semaphore.  We must not return
3122 	 * until all unregister events invoked by the local processor
3123 	 * have been completed (either by this todo run, or one on
3124 	 * another cpu).
3125 	 */
3126 	if (list_empty(&net_todo_list))
3127 		goto out;
3128 
3129 	/* Snapshot list, allow later requests */
3130 	spin_lock(&net_todo_list_lock);
3131 	list_replace_init(&net_todo_list, &list);
3132 	spin_unlock(&net_todo_list_lock);
3133 
3134 	while (!list_empty(&list)) {
3135 		struct net_device *dev
3136 			= list_entry(list.next, struct net_device, todo_list);
3137 		list_del(&dev->todo_list);
3138 
3139 		if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) {
3140 			printk(KERN_ERR "network todo '%s' but state %d\n",
3141 			       dev->name, dev->reg_state);
3142 			dump_stack();
3143 			continue;
3144 		}
3145 
3146 		netdev_unregister_sysfs(dev);
3147 		dev->reg_state = NETREG_UNREGISTERED;
3148 
3149 		netdev_wait_allrefs(dev);
3150 
3151 		/* paranoia */
3152 		BUG_ON(atomic_read(&dev->refcnt));
3153 		BUG_TRAP(!dev->ip_ptr);
3154 		BUG_TRAP(!dev->ip6_ptr);
3155 		BUG_TRAP(!dev->dn_ptr);
3156 
3157 		/* It must be the very last action,
3158 		 * after this 'dev' may point to freed up memory.
3159 		 */
3160 		if (dev->destructor)
3161 			dev->destructor(dev);
3162 	}
3163 
3164 out:
3165 	mutex_unlock(&net_todo_run_mutex);
3166 }
3167 
3168 /**
3169  *	alloc_netdev - allocate network device
3170  *	@sizeof_priv:	size of private data to allocate space for
3171  *	@name:		device name format string
3172  *	@setup:		callback to initialize device
3173  *
3174  *	Allocates a struct net_device with private data area for driver use
3175  *	and performs basic initialization.
3176  */
3177 struct net_device *alloc_netdev(int sizeof_priv, const char *name,
3178 		void (*setup)(struct net_device *))
3179 {
3180 	void *p;
3181 	struct net_device *dev;
3182 	int alloc_size;
3183 
3184 	/* ensure 32-byte alignment of both the device and private area */
3185 	alloc_size = (sizeof(*dev) + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST;
3186 	alloc_size += sizeof_priv + NETDEV_ALIGN_CONST;
3187 
3188 	p = kzalloc(alloc_size, GFP_KERNEL);
3189 	if (!p) {
3190 		printk(KERN_ERR "alloc_dev: Unable to allocate device.\n");
3191 		return NULL;
3192 	}
3193 
3194 	dev = (struct net_device *)
3195 		(((long)p + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST);
3196 	dev->padded = (char *)dev - (char *)p;
3197 
3198 	if (sizeof_priv)
3199 		dev->priv = netdev_priv(dev);
3200 
3201 	setup(dev);
3202 	strcpy(dev->name, name);
3203 	return dev;
3204 }
3205 EXPORT_SYMBOL(alloc_netdev);
3206 
3207 /**
3208  *	free_netdev - free network device
3209  *	@dev: device
3210  *
3211  *	This function does the last stage of destroying an allocated device
3212  * 	interface. The reference to the device object is released.
3213  *	If this is the last reference then it will be freed.
3214  */
3215 void free_netdev(struct net_device *dev)
3216 {
3217 #ifdef CONFIG_SYSFS
3218 	/*  Compatibility with error handling in drivers */
3219 	if (dev->reg_state == NETREG_UNINITIALIZED) {
3220 		kfree((char *)dev - dev->padded);
3221 		return;
3222 	}
3223 
3224 	BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
3225 	dev->reg_state = NETREG_RELEASED;
3226 
3227 	/* will free via class release */
3228 	class_device_put(&dev->class_dev);
3229 #else
3230 	kfree((char *)dev - dev->padded);
3231 #endif
3232 }
3233 
3234 /* Synchronize with packet receive processing. */
3235 void synchronize_net(void)
3236 {
3237 	might_sleep();
3238 	synchronize_rcu();
3239 }
3240 
3241 /**
3242  *	unregister_netdevice - remove device from the kernel
3243  *	@dev: device
3244  *
3245  *	This function shuts down a device interface and removes it
3246  *	from the kernel tables. On success 0 is returned, on a failure
3247  *	a negative errno code is returned.
3248  *
3249  *	Callers must hold the rtnl semaphore.  You may want
3250  *	unregister_netdev() instead of this.
3251  */
3252 
3253 int unregister_netdevice(struct net_device *dev)
3254 {
3255 	struct net_device *d, **dp;
3256 
3257 	BUG_ON(dev_boot_phase);
3258 	ASSERT_RTNL();
3259 
3260 	/* Some devices call without registering for initialization unwind. */
3261 	if (dev->reg_state == NETREG_UNINITIALIZED) {
3262 		printk(KERN_DEBUG "unregister_netdevice: device %s/%p never "
3263 				  "was registered\n", dev->name, dev);
3264 		return -ENODEV;
3265 	}
3266 
3267 	BUG_ON(dev->reg_state != NETREG_REGISTERED);
3268 
3269 	/* If device is running, close it first. */
3270 	if (dev->flags & IFF_UP)
3271 		dev_close(dev);
3272 
3273 	/* And unlink it from device chain. */
3274 	for (dp = &dev_base; (d = *dp) != NULL; dp = &d->next) {
3275 		if (d == dev) {
3276 			write_lock_bh(&dev_base_lock);
3277 			hlist_del(&dev->name_hlist);
3278 			hlist_del(&dev->index_hlist);
3279 			if (dev_tail == &dev->next)
3280 				dev_tail = dp;
3281 			*dp = d->next;
3282 			write_unlock_bh(&dev_base_lock);
3283 			break;
3284 		}
3285 	}
3286 	if (!d) {
3287 		printk(KERN_ERR "unregister net_device: '%s' not found\n",
3288 		       dev->name);
3289 		return -ENODEV;
3290 	}
3291 
3292 	dev->reg_state = NETREG_UNREGISTERING;
3293 
3294 	synchronize_net();
3295 
3296 	/* Shutdown queueing discipline. */
3297 	dev_shutdown(dev);
3298 
3299 
3300 	/* Notify protocols, that we are about to destroy
3301 	   this device. They should clean all the things.
3302 	*/
3303 	raw_notifier_call_chain(&netdev_chain, NETDEV_UNREGISTER, dev);
3304 
3305 	/*
3306 	 *	Flush the multicast chain
3307 	 */
3308 	dev_mc_discard(dev);
3309 
3310 	if (dev->uninit)
3311 		dev->uninit(dev);
3312 
3313 	/* Notifier chain MUST detach us from master device. */
3314 	BUG_TRAP(!dev->master);
3315 
3316 	free_divert_blk(dev);
3317 
3318 	/* Finish processing unregister after unlock */
3319 	net_set_todo(dev);
3320 
3321 	synchronize_net();
3322 
3323 	dev_put(dev);
3324 	return 0;
3325 }
3326 
3327 /**
3328  *	unregister_netdev - remove device from the kernel
3329  *	@dev: device
3330  *
3331  *	This function shuts down a device interface and removes it
3332  *	from the kernel tables. On success 0 is returned, on a failure
3333  *	a negative errno code is returned.
3334  *
3335  *	This is just a wrapper for unregister_netdevice that takes
3336  *	the rtnl semaphore.  In general you want to use this and not
3337  *	unregister_netdevice.
3338  */
3339 void unregister_netdev(struct net_device *dev)
3340 {
3341 	rtnl_lock();
3342 	unregister_netdevice(dev);
3343 	rtnl_unlock();
3344 }
3345 
3346 EXPORT_SYMBOL(unregister_netdev);
3347 
3348 #ifdef CONFIG_HOTPLUG_CPU
3349 static int dev_cpu_callback(struct notifier_block *nfb,
3350 			    unsigned long action,
3351 			    void *ocpu)
3352 {
3353 	struct sk_buff **list_skb;
3354 	struct net_device **list_net;
3355 	struct sk_buff *skb;
3356 	unsigned int cpu, oldcpu = (unsigned long)ocpu;
3357 	struct softnet_data *sd, *oldsd;
3358 
3359 	if (action != CPU_DEAD)
3360 		return NOTIFY_OK;
3361 
3362 	local_irq_disable();
3363 	cpu = smp_processor_id();
3364 	sd = &per_cpu(softnet_data, cpu);
3365 	oldsd = &per_cpu(softnet_data, oldcpu);
3366 
3367 	/* Find end of our completion_queue. */
3368 	list_skb = &sd->completion_queue;
3369 	while (*list_skb)
3370 		list_skb = &(*list_skb)->next;
3371 	/* Append completion queue from offline CPU. */
3372 	*list_skb = oldsd->completion_queue;
3373 	oldsd->completion_queue = NULL;
3374 
3375 	/* Find end of our output_queue. */
3376 	list_net = &sd->output_queue;
3377 	while (*list_net)
3378 		list_net = &(*list_net)->next_sched;
3379 	/* Append output queue from offline CPU. */
3380 	*list_net = oldsd->output_queue;
3381 	oldsd->output_queue = NULL;
3382 
3383 	raise_softirq_irqoff(NET_TX_SOFTIRQ);
3384 	local_irq_enable();
3385 
3386 	/* Process offline CPU's input_pkt_queue */
3387 	while ((skb = __skb_dequeue(&oldsd->input_pkt_queue)))
3388 		netif_rx(skb);
3389 
3390 	return NOTIFY_OK;
3391 }
3392 #endif /* CONFIG_HOTPLUG_CPU */
3393 
3394 #ifdef CONFIG_NET_DMA
3395 /**
3396  * net_dma_rebalance -
3397  * This is called when the number of channels allocated to the net_dma_client
3398  * changes.  The net_dma_client tries to have one DMA channel per CPU.
3399  */
3400 static void net_dma_rebalance(void)
3401 {
3402 	unsigned int cpu, i, n;
3403 	struct dma_chan *chan;
3404 
3405 	lock_cpu_hotplug();
3406 
3407 	if (net_dma_count == 0) {
3408 		for_each_online_cpu(cpu)
3409 			rcu_assign_pointer(per_cpu(softnet_data.net_dma, cpu), NULL);
3410 		unlock_cpu_hotplug();
3411 		return;
3412 	}
3413 
3414 	i = 0;
3415 	cpu = first_cpu(cpu_online_map);
3416 
3417 	rcu_read_lock();
3418 	list_for_each_entry(chan, &net_dma_client->channels, client_node) {
3419 		n = ((num_online_cpus() / net_dma_count)
3420 		   + (i < (num_online_cpus() % net_dma_count) ? 1 : 0));
3421 
3422 		while(n) {
3423 			per_cpu(softnet_data.net_dma, cpu) = chan;
3424 			cpu = next_cpu(cpu, cpu_online_map);
3425 			n--;
3426 		}
3427 		i++;
3428 	}
3429 	rcu_read_unlock();
3430 
3431 	unlock_cpu_hotplug();
3432 }
3433 
3434 /**
3435  * netdev_dma_event - event callback for the net_dma_client
3436  * @client: should always be net_dma_client
3437  * @chan: DMA channel for the event
3438  * @event: event type
3439  */
3440 static void netdev_dma_event(struct dma_client *client, struct dma_chan *chan,
3441 	enum dma_event event)
3442 {
3443 	spin_lock(&net_dma_event_lock);
3444 	switch (event) {
3445 	case DMA_RESOURCE_ADDED:
3446 		net_dma_count++;
3447 		net_dma_rebalance();
3448 		break;
3449 	case DMA_RESOURCE_REMOVED:
3450 		net_dma_count--;
3451 		net_dma_rebalance();
3452 		break;
3453 	default:
3454 		break;
3455 	}
3456 	spin_unlock(&net_dma_event_lock);
3457 }
3458 
3459 /**
3460  * netdev_dma_regiser - register the networking subsystem as a DMA client
3461  */
3462 static int __init netdev_dma_register(void)
3463 {
3464 	spin_lock_init(&net_dma_event_lock);
3465 	net_dma_client = dma_async_client_register(netdev_dma_event);
3466 	if (net_dma_client == NULL)
3467 		return -ENOMEM;
3468 
3469 	dma_async_client_chan_request(net_dma_client, num_online_cpus());
3470 	return 0;
3471 }
3472 
3473 #else
3474 static int __init netdev_dma_register(void) { return -ENODEV; }
3475 #endif /* CONFIG_NET_DMA */
3476 
3477 /*
3478  *	Initialize the DEV module. At boot time this walks the device list and
3479  *	unhooks any devices that fail to initialise (normally hardware not
3480  *	present) and leaves us with a valid list of present and active devices.
3481  *
3482  */
3483 
3484 /*
3485  *       This is called single threaded during boot, so no need
3486  *       to take the rtnl semaphore.
3487  */
3488 static int __init net_dev_init(void)
3489 {
3490 	int i, rc = -ENOMEM;
3491 
3492 	BUG_ON(!dev_boot_phase);
3493 
3494 	net_random_init();
3495 
3496 	if (dev_proc_init())
3497 		goto out;
3498 
3499 	if (netdev_sysfs_init())
3500 		goto out;
3501 
3502 	INIT_LIST_HEAD(&ptype_all);
3503 	for (i = 0; i < 16; i++)
3504 		INIT_LIST_HEAD(&ptype_base[i]);
3505 
3506 	for (i = 0; i < ARRAY_SIZE(dev_name_head); i++)
3507 		INIT_HLIST_HEAD(&dev_name_head[i]);
3508 
3509 	for (i = 0; i < ARRAY_SIZE(dev_index_head); i++)
3510 		INIT_HLIST_HEAD(&dev_index_head[i]);
3511 
3512 	/*
3513 	 *	Initialise the packet receive queues.
3514 	 */
3515 
3516 	for_each_possible_cpu(i) {
3517 		struct softnet_data *queue;
3518 
3519 		queue = &per_cpu(softnet_data, i);
3520 		skb_queue_head_init(&queue->input_pkt_queue);
3521 		queue->completion_queue = NULL;
3522 		INIT_LIST_HEAD(&queue->poll_list);
3523 		set_bit(__LINK_STATE_START, &queue->backlog_dev.state);
3524 		queue->backlog_dev.weight = weight_p;
3525 		queue->backlog_dev.poll = process_backlog;
3526 		atomic_set(&queue->backlog_dev.refcnt, 1);
3527 	}
3528 
3529 	netdev_dma_register();
3530 
3531 	dev_boot_phase = 0;
3532 
3533 	open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL);
3534 	open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL);
3535 
3536 	hotcpu_notifier(dev_cpu_callback, 0);
3537 	dst_init();
3538 	dev_mcast_init();
3539 	rc = 0;
3540 out:
3541 	return rc;
3542 }
3543 
3544 subsys_initcall(net_dev_init);
3545 
3546 EXPORT_SYMBOL(__dev_get_by_index);
3547 EXPORT_SYMBOL(__dev_get_by_name);
3548 EXPORT_SYMBOL(__dev_remove_pack);
3549 EXPORT_SYMBOL(dev_valid_name);
3550 EXPORT_SYMBOL(dev_add_pack);
3551 EXPORT_SYMBOL(dev_alloc_name);
3552 EXPORT_SYMBOL(dev_close);
3553 EXPORT_SYMBOL(dev_get_by_flags);
3554 EXPORT_SYMBOL(dev_get_by_index);
3555 EXPORT_SYMBOL(dev_get_by_name);
3556 EXPORT_SYMBOL(dev_open);
3557 EXPORT_SYMBOL(dev_queue_xmit);
3558 EXPORT_SYMBOL(dev_remove_pack);
3559 EXPORT_SYMBOL(dev_set_allmulti);
3560 EXPORT_SYMBOL(dev_set_promiscuity);
3561 EXPORT_SYMBOL(dev_change_flags);
3562 EXPORT_SYMBOL(dev_set_mtu);
3563 EXPORT_SYMBOL(dev_set_mac_address);
3564 EXPORT_SYMBOL(free_netdev);
3565 EXPORT_SYMBOL(netdev_boot_setup_check);
3566 EXPORT_SYMBOL(netdev_set_master);
3567 EXPORT_SYMBOL(netdev_state_change);
3568 EXPORT_SYMBOL(netif_receive_skb);
3569 EXPORT_SYMBOL(netif_rx);
3570 EXPORT_SYMBOL(register_gifconf);
3571 EXPORT_SYMBOL(register_netdevice);
3572 EXPORT_SYMBOL(register_netdevice_notifier);
3573 EXPORT_SYMBOL(skb_checksum_help);
3574 EXPORT_SYMBOL(synchronize_net);
3575 EXPORT_SYMBOL(unregister_netdevice);
3576 EXPORT_SYMBOL(unregister_netdevice_notifier);
3577 EXPORT_SYMBOL(net_enable_timestamp);
3578 EXPORT_SYMBOL(net_disable_timestamp);
3579 EXPORT_SYMBOL(dev_get_flags);
3580 
3581 #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
3582 EXPORT_SYMBOL(br_handle_frame_hook);
3583 EXPORT_SYMBOL(br_fdb_get_hook);
3584 EXPORT_SYMBOL(br_fdb_put_hook);
3585 #endif
3586 
3587 #ifdef CONFIG_KMOD
3588 EXPORT_SYMBOL(dev_load);
3589 #endif
3590 
3591 EXPORT_PER_CPU_SYMBOL(softnet_data);
3592