SOURCES: kernel-desktop-PF_RING.patch - update from linux-PF_RING....

glen glen at pld-linux.org
Wed Apr 9 01:18:59 CEST 2008


Author: glen                         Date: Tue Apr  8 23:18:59 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- update from linux-PF_RING.patch,1.1.2.5

---- Files affected:
SOURCES:
   kernel-desktop-PF_RING.patch (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/kernel-desktop-PF_RING.patch
diff -u SOURCES/kernel-desktop-PF_RING.patch:1.1 SOURCES/kernel-desktop-PF_RING.patch:1.2
--- SOURCES/kernel-desktop-PF_RING.patch:1.1	Thu Aug 23 14:10:35 2007
+++ SOURCES/kernel-desktop-PF_RING.patch	Wed Apr  9 01:18:54 2008
@@ -264,64 +264,6 @@
  obj-$(CONFIG_IP_DCCP)		+= dccp/
  obj-$(CONFIG_IP_SCTP)		+= sctp/
  obj-$(CONFIG_IEEE80211)		+= ieee80211/
-diff --unified --recursive --new-file linux-2.6.21.4/net/Makefile.ORG linux-2.6.21.4-1-686-smp-ring3/net/Makefile.ORG
---- linux-2.6.21.4/net/Makefile.ORG	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21.4-1-686-smp-ring3/net/Makefile.ORG	2007-06-10 16:43:04.386423079 +0000
-@@ -0,0 +1,54 @@
-+#
-+# Makefile for the linux networking.
-+#
-+# 2 Sep 2000, Christoph Hellwig <hch at infradead.org>
-+# Rewritten to use lists instead of if-statements.
-+#
-+
-+obj-y	:= nonet.o
-+
-+obj-$(CONFIG_NET)		:= socket.o core/
-+
-+tmp-$(CONFIG_COMPAT) 		:= compat.o
-+obj-$(CONFIG_NET)		+= $(tmp-y)
-+
-+# LLC has to be linked before the files in net/802/
-+obj-$(CONFIG_LLC)		+= llc/
-+obj-$(CONFIG_NET)		+= ethernet/ 802/ sched/ netlink/
-+obj-$(CONFIG_NETFILTER)		+= netfilter/
-+obj-$(CONFIG_INET)		+= ipv4/
-+obj-$(CONFIG_XFRM)		+= xfrm/
-+obj-$(CONFIG_UNIX)		+= unix/
-+ifneq ($(CONFIG_IPV6),)
-+obj-y				+= ipv6/
-+endif
-+obj-$(CONFIG_PACKET)		+= packet/
-+obj-$(CONFIG_NET_KEY)		+= key/
-+obj-$(CONFIG_NET_SCHED)		+= sched/
-+obj-$(CONFIG_BRIDGE)		+= bridge/
-+obj-$(CONFIG_IPX)		+= ipx/
-+obj-$(CONFIG_ATALK)		+= appletalk/
-+obj-$(CONFIG_WAN_ROUTER)	+= wanrouter/
-+obj-$(CONFIG_X25)		+= x25/
-+obj-$(CONFIG_LAPB)		+= lapb/
-+obj-$(CONFIG_NETROM)		+= netrom/
-+obj-$(CONFIG_ROSE)		+= rose/
-+obj-$(CONFIG_AX25)		+= ax25/
-+obj-$(CONFIG_IRDA)		+= irda/
-+obj-$(CONFIG_BT)		+= bluetooth/
-+obj-$(CONFIG_SUNRPC)		+= sunrpc/
-+obj-$(CONFIG_RXRPC)		+= rxrpc/
-+obj-$(CONFIG_ATM)		+= atm/
-+obj-$(CONFIG_DECNET)		+= decnet/
-+obj-$(CONFIG_ECONET)		+= econet/
-+obj-$(CONFIG_VLAN_8021Q)	+= 8021q/
-+obj-$(CONFIG_IP_DCCP)		+= dccp/
-+obj-$(CONFIG_IP_SCTP)		+= sctp/
-+obj-$(CONFIG_IEEE80211)		+= ieee80211/
-+obj-$(CONFIG_TIPC)		+= tipc/
-+obj-$(CONFIG_NETLABEL)		+= netlabel/
-+obj-$(CONFIG_IUCV)		+= iucv/
-+
-+ifeq ($(CONFIG_NET),y)
-+obj-$(CONFIG_SYSCTL)		+= sysctl_net.o
-+endif
 diff --unified --recursive --new-file linux-2.6.21.4/net/core/dev.c linux-2.6.21.4-1-686-smp-ring3/net/core/dev.c
 --- linux-2.6.21.4/net/core/dev.c	2007-06-07 21:27:31.000000000 +0000
 +++ linux-2.6.21.4-1-686-smp-ring3/net/core/dev.c	2007-06-10 16:43:04.382422906 +0000
@@ -421,3581 +363,6 @@
  
  	/* if we've gotten here through NAPI, check netpoll */
  	if (skb->dev->poll && netpoll_rx(skb))
-diff --unified --recursive --new-file linux-2.6.21.4/net/core/dev.c.ORG linux-2.6.21.4-1-686-smp-ring3/net/core/dev.c.ORG
---- linux-2.6.21.4/net/core/dev.c.ORG	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21.4-1-686-smp-ring3/net/core/dev.c.ORG	2007-06-10 16:43:04.354421694 +0000
-@@ -0,0 +1,3571 @@
-+/*
-+ * 	NET3	Protocol independent device support routines.
-+ *
-+ *		This program is free software; you can redistribute it and/or
-+ *		modify it under the terms of the GNU General Public License
-+ *		as published by the Free Software Foundation; either version
-+ *		2 of the License, or (at your option) any later version.
-+ *
-+ *	Derived from the non IP parts of dev.c 1.0.19
-+ * 		Authors:	Ross Biro
-+ *				Fred N. van Kempen, <waltje at uWalt.NL.Mugnet.ORG>
-+ *				Mark Evans, <evansmp at uhura.aston.ac.uk>
-+ *
-+ *	Additional Authors:
-+ *		Florian la Roche <rzsfl at rz.uni-sb.de>
-+ *		Alan Cox <gw4pts at gw4pts.ampr.org>
-+ *		David Hinds <dahinds at users.sourceforge.net>
-+ *		Alexey Kuznetsov <kuznet at ms2.inr.ac.ru>
-+ *		Adam Sulmicki <adam at cfar.umd.edu>
-+ *              Pekka Riikonen <priikone at poesidon.pspt.fi>
-+ *
-+ *	Changes:
-+ *              D.J. Barrow     :       Fixed bug where dev->refcnt gets set
-+ *              			to 2 if register_netdev gets called
-+ *              			before net_dev_init & also removed a
-+ *              			few lines of code in the process.
-+ *		Alan Cox	:	device private ioctl copies fields back.
-+ *		Alan Cox	:	Transmit queue code does relevant
-+ *					stunts to keep the queue safe.
-+ *		Alan Cox	:	Fixed double lock.
-+ *		Alan Cox	:	Fixed promisc NULL pointer trap
-+ *		????????	:	Support the full private ioctl range
-+ *		Alan Cox	:	Moved ioctl permission check into
-+ *					drivers
-+ *		Tim Kordas	:	SIOCADDMULTI/SIOCDELMULTI
-+ *		Alan Cox	:	100 backlog just doesn't cut it when
-+ *					you start doing multicast video 8)
-+ *		Alan Cox	:	Rewrote net_bh and list manager.
-+ *		Alan Cox	: 	Fix ETH_P_ALL echoback lengths.
-+ *		Alan Cox	:	Took out transmit every packet pass
-+ *					Saved a few bytes in the ioctl handler
-+ *		Alan Cox	:	Network driver sets packet type before
-+ *					calling netif_rx. Saves a function
-+ *					call a packet.
-+ *		Alan Cox	:	Hashed net_bh()
-+ *		Richard Kooijman:	Timestamp fixes.
-+ *		Alan Cox	:	Wrong field in SIOCGIFDSTADDR
-+ *		Alan Cox	:	Device lock protection.
-+ *		Alan Cox	: 	Fixed nasty side effect of device close
-+ *					changes.
-+ *		Rudi Cilibrasi	:	Pass the right thing to
-+ *					set_mac_address()
-+ *		Dave Miller	:	32bit quantity for the device lock to
-+ *					make it work out on a Sparc.
-+ *		Bjorn Ekwall	:	Added KERNELD hack.
-+ *		Alan Cox	:	Cleaned up the backlog initialise.
-+ *		Craig Metz	:	SIOCGIFCONF fix if space for under
-+ *					1 device.
-+ *	    Thomas Bogendoerfer :	Return ENODEV for dev_open, if there
-+ *					is no device open function.
-+ *		Andi Kleen	:	Fix error reporting for SIOCGIFCONF
-+ *	    Michael Chastain	:	Fix signed/unsigned for SIOCGIFCONF
-+ *		Cyrus Durgin	:	Cleaned for KMOD
-+ *		Adam Sulmicki   :	Bug Fix : Network Device Unload
-+ *					A network device unload needs to purge
-+ *					the backlog queue.
-+ *	Paul Rusty Russell	:	SIOCSIFNAME
-+ *              Pekka Riikonen  :	Netdev boot-time settings code
-+ *              Andrew Morton   :       Make unregister_netdevice wait
-+ *              			indefinitely on dev->refcnt
-+ * 		J Hadi Salim	:	- Backlog queue sampling
-+ *				        - netif_rx() feedback
-+ */
-+
-+#include <asm/uaccess.h>
-+#include <asm/system.h>
-+#include <linux/bitops.h>
-+#include <linux/capability.h>
-+#include <linux/cpu.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/mutex.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/socket.h>
-+#include <linux/sockios.h>
-+#include <linux/errno.h>
-+#include <linux/interrupt.h>
-+#include <linux/if_ether.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/notifier.h>
-+#include <linux/skbuff.h>
-+#include <net/sock.h>
-+#include <linux/rtnetlink.h>
-+#include <linux/proc_fs.h>
-+#include <linux/seq_file.h>
-+#include <linux/stat.h>
-+#include <linux/if_bridge.h>
-+#include <net/dst.h>
-+#include <net/pkt_sched.h>
-+#include <net/checksum.h>
-+#include <linux/highmem.h>
-+#include <linux/init.h>
-+#include <linux/kmod.h>
-+#include <linux/module.h>
-+#include <linux/kallsyms.h>
-+#include <linux/netpoll.h>
-+#include <linux/rcupdate.h>
-+#include <linux/delay.h>
-+#include <linux/wireless.h>
-+#include <net/iw_handler.h>
-+#include <asm/current.h>
-+#include <linux/audit.h>
-+#include <linux/dmaengine.h>
-+#include <linux/err.h>
-+#include <linux/ctype.h>
-+
-+/*
-+ *	The list of packet types we will receive (as opposed to discard)
-+ *	and the routines to invoke.
-+ *
-+ *	Why 16. Because with 16 the only overlap we get on a hash of the
-+ *	low nibble of the protocol value is RARP/SNAP/X.25.
-+ *
-+ *      NOTE:  That is no longer true with the addition of VLAN tags.  Not
-+ *             sure which should go first, but I bet it won't make much
-+ *             difference if we are running VLANs.  The good news is that
-+ *             this protocol won't be in the list unless compiled in, so
-+ *             the average user (w/out VLANs) will not be adversely affected.
-+ *             --BLG
-+ *
-+ *		0800	IP
-+ *		8100    802.1Q VLAN
-+ *		0001	802.3
-+ *		0002	AX.25
-+ *		0004	802.2
-+ *		8035	RARP
-+ *		0005	SNAP
-+ *		0805	X.25
-+ *		0806	ARP
-+ *		8137	IPX
-+ *		0009	Localtalk
-+ *		86DD	IPv6
-+ */
-+
-+static DEFINE_SPINLOCK(ptype_lock);
-+static struct list_head ptype_base[16];	/* 16 way hashed list */
-+static struct list_head ptype_all;		/* Taps */
-+
-+#ifdef CONFIG_NET_DMA
-+static struct dma_client *net_dma_client;
-+static unsigned int net_dma_count;
-+static spinlock_t net_dma_event_lock;
-+#endif
-+
-+/*
-+ * The @dev_base list is protected by @dev_base_lock and the rtnl
-+ * semaphore.
-+ *
-+ * Pure readers hold dev_base_lock for reading.
-+ *
-+ * Writers must hold the rtnl semaphore while they loop through the
-+ * dev_base list, and hold dev_base_lock for writing when they do the
-+ * actual updates.  This allows pure readers to access the list even
-+ * while a writer is preparing to update it.
-+ *
-+ * To put it another way, dev_base_lock is held for writing only to
-+ * protect against pure readers; the rtnl semaphore provides the
-+ * protection against other writers.
-+ *
-+ * See, for example usages, register_netdevice() and
-+ * unregister_netdevice(), which must be called with the rtnl
-+ * semaphore held.
-+ */
-+struct net_device *dev_base;
-+static struct net_device **dev_tail = &dev_base;
-+DEFINE_RWLOCK(dev_base_lock);
-+
-+EXPORT_SYMBOL(dev_base);
-+EXPORT_SYMBOL(dev_base_lock);
-+
-+#define NETDEV_HASHBITS	8
-+static struct hlist_head dev_name_head[1<<NETDEV_HASHBITS];
-+static struct hlist_head dev_index_head[1<<NETDEV_HASHBITS];
-+
-+static inline struct hlist_head *dev_name_hash(const char *name)
-+{
-+	unsigned hash = full_name_hash(name, strnlen(name, IFNAMSIZ));
-+	return &dev_name_head[hash & ((1<<NETDEV_HASHBITS)-1)];
-+}
-+
-+static inline struct hlist_head *dev_index_hash(int ifindex)
-+{
-+	return &dev_index_head[ifindex & ((1<<NETDEV_HASHBITS)-1)];
-+}
-+
-+/*
-+ *	Our notifier list
-+ */
-+
-+static RAW_NOTIFIER_HEAD(netdev_chain);
-+
-+/*
-+ *	Device drivers call our routines to queue packets here. We empty the
-+ *	queue in the local softnet handler.
-+ */
-+DEFINE_PER_CPU(struct softnet_data, softnet_data) = { NULL };
-+
-+#ifdef CONFIG_SYSFS
-+extern int netdev_sysfs_init(void);
-+extern int netdev_register_sysfs(struct net_device *);
-+extern void netdev_unregister_sysfs(struct net_device *);
-+#else
-+#define netdev_sysfs_init()	 	(0)
-+#define netdev_register_sysfs(dev)	(0)
-+#define	netdev_unregister_sysfs(dev)	do { } while(0)
-+#endif
-+
-+
-+/*******************************************************************************
-+
-+		Protocol management and registration routines
-+
-+*******************************************************************************/
-+
-+/*
-+ *	For efficiency
-+ */
-+
-+static int netdev_nit;
-+
-+/*
-+ *	Add a protocol ID to the list. Now that the input handler is
-+ *	smarter we can dispense with all the messy stuff that used to be
-+ *	here.
-+ *
-+ *	BEWARE!!! Protocol handlers, mangling input packets,
-+ *	MUST BE last in hash buckets and checking protocol handlers
-+ *	MUST start from promiscuous ptype_all chain in net_bh.
-+ *	It is true now, do not change it.
-+ *	Explanation follows: if protocol handler, mangling packet, will
-+ *	be the first on list, it is not able to sense, that packet
-+ *	is cloned and should be copied-on-write, so that it will
-+ *	change it and subsequent readers will get broken packet.
-+ *							--ANK (980803)
-+ */
-+
-+/**
-+ *	dev_add_pack - add packet handler
-+ *	@pt: packet type declaration
-+ *
-+ *	Add a protocol handler to the networking stack. The passed &packet_type
-+ *	is linked into kernel lists and may not be freed until it has been
-+ *	removed from the kernel lists.
-+ *
-+ *	This call does not sleep therefore it can not
-+ *	guarantee all CPU's that are in middle of receiving packets
-+ *	will see the new packet type (until the next received packet).
-+ */
-+
-+void dev_add_pack(struct packet_type *pt)
-+{
-+	int hash;
-+
-+	spin_lock_bh(&ptype_lock);
-+	if (pt->type == htons(ETH_P_ALL)) {
-+		netdev_nit++;
-+		list_add_rcu(&pt->list, &ptype_all);
-+	} else {
-+		hash = ntohs(pt->type) & 15;
-+		list_add_rcu(&pt->list, &ptype_base[hash]);
-+	}
-+	spin_unlock_bh(&ptype_lock);
-+}
-+
-+/**
-+ *	__dev_remove_pack	 - remove packet handler
-+ *	@pt: packet type declaration
-+ *
-+ *	Remove a protocol handler that was previously added to the kernel
-+ *	protocol handlers by dev_add_pack(). The passed &packet_type is removed
-+ *	from the kernel lists and can be freed or reused once this function
-+ *	returns.
-+ *
-+ *      The packet type might still be in use by receivers
-+ *	and must not be freed until after all the CPU's have gone
-+ *	through a quiescent state.
-+ */
-+void __dev_remove_pack(struct packet_type *pt)
-+{
-+	struct list_head *head;
-+	struct packet_type *pt1;
-+
-+	spin_lock_bh(&ptype_lock);
-+
-+	if (pt->type == htons(ETH_P_ALL)) {
-+		netdev_nit--;
-+		head = &ptype_all;
-+	} else
-+		head = &ptype_base[ntohs(pt->type) & 15];
-+
-+	list_for_each_entry(pt1, head, list) {
-+		if (pt == pt1) {
-+			list_del_rcu(&pt->list);
-+			goto out;
-+		}
-+	}
-+
-+	printk(KERN_WARNING "dev_remove_pack: %p not found.\n", pt);
-+out:
-+	spin_unlock_bh(&ptype_lock);
-+}
-+/**
-+ *	dev_remove_pack	 - remove packet handler
-+ *	@pt: packet type declaration
-+ *
-+ *	Remove a protocol handler that was previously added to the kernel
-+ *	protocol handlers by dev_add_pack(). The passed &packet_type is removed
-+ *	from the kernel lists and can be freed or reused once this function
-+ *	returns.
-+ *
-+ *	This call sleeps to guarantee that no CPU is looking at the packet
-+ *	type after return.
-+ */
-+void dev_remove_pack(struct packet_type *pt)
-+{
-+	__dev_remove_pack(pt);
-+
-+	synchronize_net();
-+}
-+
-+/******************************************************************************
-+
-+		      Device Boot-time Settings Routines
-+
-+*******************************************************************************/
-+
-+/* Boot time configuration table */
-+static struct netdev_boot_setup dev_boot_setup[NETDEV_BOOT_SETUP_MAX];
-+
-+/**
-+ *	netdev_boot_setup_add	- add new setup entry
-+ *	@name: name of the device
-+ *	@map: configured settings for the device
-+ *
-+ *	Adds new setup entry to the dev_boot_setup list.  The function
-+ *	returns 0 on error and 1 on success.  This is a generic routine to
-+ *	all netdevices.
-+ */
-+static int netdev_boot_setup_add(char *name, struct ifmap *map)
-+{
-+	struct netdev_boot_setup *s;
-+	int i;
-+
-+	s = dev_boot_setup;
-+	for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
-+		if (s[i].name[0] == '\0' || s[i].name[0] == ' ') {
-+			memset(s[i].name, 0, sizeof(s[i].name));
-+			strcpy(s[i].name, name);
-+			memcpy(&s[i].map, map, sizeof(s[i].map));
-+			break;
-+		}
-+	}
-+
-+	return i >= NETDEV_BOOT_SETUP_MAX ? 0 : 1;
-+}
-+
-+/**
-+ *	netdev_boot_setup_check	- check boot time settings
-+ *	@dev: the netdevice
-+ *
-+ * 	Check boot time settings for the device.
-+ *	The found settings are set for the device to be used
-+ *	later in the device probing.
-+ *	Returns 0 if no settings found, 1 if they are.
-+ */
-+int netdev_boot_setup_check(struct net_device *dev)
-+{
-+	struct netdev_boot_setup *s = dev_boot_setup;
-+	int i;
-+
-+	for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
-+		if (s[i].name[0] != '\0' && s[i].name[0] != ' ' &&
-+		    !strncmp(dev->name, s[i].name, strlen(s[i].name))) {
-+			dev->irq 	= s[i].map.irq;
-+			dev->base_addr 	= s[i].map.base_addr;
-+			dev->mem_start 	= s[i].map.mem_start;
-+			dev->mem_end 	= s[i].map.mem_end;
-+			return 1;
-+		}
-+	}
-+	return 0;
-+}
-+
-+
-+/**
-+ *	netdev_boot_base	- get address from boot time settings
-+ *	@prefix: prefix for network device
-+ *	@unit: id for network device
-+ *
-+ * 	Check boot time settings for the base address of device.
-+ *	The found settings are set for the device to be used
-+ *	later in the device probing.
-+ *	Returns 0 if no settings found.
-+ */
-+unsigned long netdev_boot_base(const char *prefix, int unit)
-+{
-+	const struct netdev_boot_setup *s = dev_boot_setup;
-+	char name[IFNAMSIZ];
-+	int i;
-+
-+	sprintf(name, "%s%d", prefix, unit);
-+
-+	/*
-+	 * If device already registered then return base of 1
-+	 * to indicate not to probe for this interface
-+	 */
-+	if (__dev_get_by_name(name))
-+		return 1;
-+
-+	for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++)
-+		if (!strcmp(name, s[i].name))
-+			return s[i].map.base_addr;
-+	return 0;
-+}
-+
-+/*
-+ * Saves at boot time configured settings for any netdevice.
-+ */
-+int __init netdev_boot_setup(char *str)
-+{
-+	int ints[5];
-+	struct ifmap map;
-+
-+	str = get_options(str, ARRAY_SIZE(ints), ints);
-+	if (!str || !*str)
-+		return 0;
-+
-+	/* Save settings */
-+	memset(&map, 0, sizeof(map));
-+	if (ints[0] > 0)
-+		map.irq = ints[1];
-+	if (ints[0] > 1)
-+		map.base_addr = ints[2];
-+	if (ints[0] > 2)
-+		map.mem_start = ints[3];
-+	if (ints[0] > 3)
-+		map.mem_end = ints[4];
-+
-+	/* Add new entry to the list */
-+	return netdev_boot_setup_add(str, &map);
-+}
-+
-+__setup("netdev=", netdev_boot_setup);
-+
-+/*******************************************************************************
-+
-+			    Device Interface Subroutines
-+
-+*******************************************************************************/
-+
-+/**
-+ *	__dev_get_by_name	- find a device by its name
-+ *	@name: name to find
-+ *
-+ *	Find an interface by name. Must be called under RTNL semaphore
-+ *	or @dev_base_lock. If the name is found a pointer to the device
-+ *	is returned. If the name is not found then %NULL is returned. The
-+ *	reference counters are not incremented so the caller must be
-+ *	careful with locks.
-+ */
-+
-+struct net_device *__dev_get_by_name(const char *name)
-+{
-+	struct hlist_node *p;
-+
-+	hlist_for_each(p, dev_name_hash(name)) {
-+		struct net_device *dev
-+			= hlist_entry(p, struct net_device, name_hlist);
-+		if (!strncmp(dev->name, name, IFNAMSIZ))
-+			return dev;
-+	}
-+	return NULL;
-+}
-+
-+/**
-+ *	dev_get_by_name		- find a device by its name
-+ *	@name: name to find
-+ *
-+ *	Find an interface by name. This can be called from any
-+ *	context and does its own locking. The returned handle has
-+ *	the usage count incremented and the caller must use dev_put() to
-+ *	release it when it is no longer needed. %NULL is returned if no
-+ *	matching device is found.
-+ */
-+
-+struct net_device *dev_get_by_name(const char *name)
-+{
-+	struct net_device *dev;
-+
-+	read_lock(&dev_base_lock);
-+	dev = __dev_get_by_name(name);
-+	if (dev)
-+		dev_hold(dev);
-+	read_unlock(&dev_base_lock);
-+	return dev;
-+}
-+
-+/**
-+ *	__dev_get_by_index - find a device by its ifindex
-+ *	@ifindex: index of device
-+ *
-+ *	Search for an interface by index. Returns %NULL if the device
-+ *	is not found or a pointer to the device. The device has not
-+ *	had its reference counter increased so the caller must be careful
-+ *	about locking. The caller must hold either the RTNL semaphore
-+ *	or @dev_base_lock.
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/kernel-desktop-PF_RING.patch?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list