aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/arp.c
diff options
context:
space:
mode:
authorDavid Miller <davem@davemloft.net>2011-07-11 22:44:24 +0000
committerDavid S. Miller <davem@davemloft.net>2011-07-13 01:12:28 -0700
commit3769cffb1c48f64640ffab7ce3bffe867342c0f0 (patch)
tree8f6fcf2d822bf3a170a534e8540faa34fe9258ef /net/ipv4/arp.c
parentnet: Add documentation for netdev features handling (diff)
downloadlinux-dev-3769cffb1c48f64640ffab7ce3bffe867342c0f0.tar.xz
linux-dev-3769cffb1c48f64640ffab7ce3bffe867342c0f0.zip
ipv4: Inline neigh binding.
Get rid of all of the useless and costly indirection by doing the neigh hash table lookup directly inside of the neighbour binding. Rename from arp_bind_neighbour to rt_bind_neighbour. Use new helpers {__,}ipv4_neigh_lookup() In rt_bind_neighbour() get rid of useless tests which are never true in the context this function is called, namely dev is never NULL and the dst->neighbour is always NULL. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/arp.c')
-rw-r--r--net/ipv4/arp.c24
1 files changed, 0 insertions, 24 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 4412b57f6ff6..3e5545675ccf 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -517,30 +517,6 @@ EXPORT_SYMBOL(arp_find);
/* END OF OBSOLETE FUNCTIONS */
-int arp_bind_neighbour(struct dst_entry *dst)
-{
- struct net_device *dev = dst->dev;
- struct neighbour *n = dst->neighbour;
-
- if (dev == NULL)
- return -EINVAL;
- if (n == NULL) {
- __be32 nexthop = ((struct rtable *)dst)->rt_gateway;
- if (dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))
- nexthop = 0;
- n = __neigh_lookup_errno(
-#if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE)
- dev->type == ARPHRD_ATM ?
- clip_tbl_hook :
-#endif
- &arp_tbl, &nexthop, dev);
- if (IS_ERR(n))
- return PTR_ERR(n);
- dst->neighbour = n;
- }
- return 0;
-}
-
/*
* Check if we can use proxy ARP for this path
*/