netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [4/6]: Add nodev neigh lookup for decnet
@ 2004-09-24  5:50 David S. Miller
  0 siblings, 0 replies; only message in thread
From: David S. Miller @ 2004-09-24  5:50 UTC (permalink / raw)
  To: laforge; +Cc: netdev


It was the one and only tbl->hash() call site outside
of net/core/neighbour.c

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/09/23 16:52:29-07:00 davem@nuts.davemloft.net 
#   [NET]: Create neigh_lookup_nodev for decnet.
#   
#   Signed-off-by: David S. Miller <davem@davemloft.net>
# 
# net/decnet/dn_route.c
#   2004/09/23 16:51:55-07:00 davem@nuts.davemloft.net +1 -1
#   [NET]: Create neigh_lookup_nodev for decnet.
# 
# net/decnet/dn_neigh.c
#   2004/09/23 16:51:55-07:00 davem@nuts.davemloft.net +0 -21
#   [NET]: Create neigh_lookup_nodev for decnet.
# 
# net/core/neighbour.c
#   2004/09/23 16:51:55-07:00 davem@nuts.davemloft.net +18 -0
#   [NET]: Create neigh_lookup_nodev for decnet.
# 
# include/net/neighbour.h
#   2004/09/23 16:51:55-07:00 davem@nuts.davemloft.net +2 -0
#   [NET]: Create neigh_lookup_nodev for decnet.
# 
# include/net/dn_neigh.h
#   2004/09/23 16:51:55-07:00 davem@nuts.davemloft.net +0 -1
#   [NET]: Create neigh_lookup_nodev for decnet.
# 
diff -Nru a/include/net/dn_neigh.h b/include/net/dn_neigh.h
--- a/include/net/dn_neigh.h	2004-09-23 22:26:40 -07:00
+++ b/include/net/dn_neigh.h	2004-09-23 22:26:40 -07:00
@@ -18,7 +18,6 @@
 
 extern void dn_neigh_init(void);
 extern void dn_neigh_cleanup(void);
-extern struct neighbour *dn_neigh_lookup(struct neigh_table *tbl, const void *ptr);
 extern int dn_neigh_router_hello(struct sk_buff *skb);
 extern int dn_neigh_endnode_hello(struct sk_buff *skb);
 extern void dn_neigh_pointopoint_hello(struct sk_buff *skb);
diff -Nru a/include/net/neighbour.h b/include/net/neighbour.h
--- a/include/net/neighbour.h	2004-09-23 22:26:40 -07:00
+++ b/include/net/neighbour.h	2004-09-23 22:26:40 -07:00
@@ -189,6 +189,8 @@
 extern struct neighbour *	neigh_lookup(struct neigh_table *tbl,
 					     const void *pkey,
 					     struct net_device *dev);
+extern struct neighbour *	neigh_lookup_nodev(struct neigh_table *tbl,
+						   const void *pkey);
 extern struct neighbour *	neigh_create(struct neigh_table *tbl,
 					     const void *pkey,
 					     struct net_device *dev);
diff -Nru a/net/core/neighbour.c b/net/core/neighbour.c
--- a/net/core/neighbour.c	2004-09-23 22:26:40 -07:00
+++ b/net/core/neighbour.c	2004-09-23 22:26:40 -07:00
@@ -307,6 +307,23 @@
 	return n;
 }
 
+struct neighbour *neigh_lookup_nodev(struct neigh_table *tbl, const void *pkey)
+{
+	struct neighbour *n;
+	int key_len = tbl->key_len;
+	u32 hash_val = tbl->hash(pkey, NULL) & NEIGH_HASHMASK;
+
+	read_lock_bh(&tbl->lock);
+	for (n = tbl->hash_buckets[hash_val]; n; n = n->next) {
+		if (!memcmp(n->primary_key, pkey, key_len)) {
+			neigh_hold(n);
+			break;
+		}
+	}
+	read_unlock_bh(&tbl->lock);
+	return n;
+}
+
 struct neighbour *neigh_create(struct neigh_table *tbl, const void *pkey,
 			       struct net_device *dev)
 {
@@ -2068,6 +2085,7 @@
 EXPORT_SYMBOL(neigh_event_ns);
 EXPORT_SYMBOL(neigh_ifdown);
 EXPORT_SYMBOL(neigh_lookup);
+EXPORT_SYMBOL(neigh_lookup_nodev);
 EXPORT_SYMBOL(neigh_parms_alloc);
 EXPORT_SYMBOL(neigh_parms_release);
 EXPORT_SYMBOL(neigh_rand_reach_time);
diff -Nru a/net/decnet/dn_neigh.c b/net/decnet/dn_neigh.c
--- a/net/decnet/dn_neigh.c	2004-09-23 22:26:40 -07:00
+++ b/net/decnet/dn_neigh.c	2004-09-23 22:26:40 -07:00
@@ -359,27 +359,6 @@
  * basically does a neigh_lookup(), but without comparing the device
  * field. This is required for the On-Ethernet cache
  */
-struct neighbour *dn_neigh_lookup(struct neigh_table *tbl, const void *ptr)
-{
-	struct neighbour *neigh;
-	u32 hash_val;
-
-	hash_val = tbl->hash(ptr, NULL);
-
-	read_lock_bh(&tbl->lock);
-	for(neigh = tbl->hash_buckets[hash_val]; neigh != NULL; neigh = neigh->next) {
-		if (memcmp(neigh->primary_key, ptr, tbl->key_len) == 0) {
-			atomic_inc(&neigh->refcnt);
-			read_unlock_bh(&tbl->lock);
-			return neigh;
-		}
-	}
-	read_unlock_bh(&tbl->lock);
-
-	return NULL;
-}
-
-
 /*
  * Any traffic on a pointopoint link causes the timer to be reset
  * for the entry in the neighbour table.
diff -Nru a/net/decnet/dn_route.c b/net/decnet/dn_route.c
--- a/net/decnet/dn_route.c	2004-09-23 22:26:40 -07:00
+++ b/net/decnet/dn_route.c	2004-09-23 22:26:40 -07:00
@@ -996,7 +996,7 @@
 		 * here
 		 */
 		if (!try_hard) {
-			neigh = dn_neigh_lookup(&dn_neigh_table, &fl.fld_dst);
+			neigh = neigh_lookup_nodev(&dn_neigh_table, &fl.fld_dst);
 			if (neigh) {
 				if ((oldflp->oif && 
 				    (neigh->dev->ifindex != oldflp->oif)) ||

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-09-24  5:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-24  5:50 [4/6]: Add nodev neigh lookup for decnet David S. Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).