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