summaryrefslogtreecommitdiffstats
path: root/net/ipv4/arp.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-07-26 13:14:38 +0200
committerDavid S. Miller <davem@davemloft.net>2012-07-27 00:50:39 +0200
commitc6cffba4ffa26a8ffacd0bb9f3144e34f20da7de (patch)
treeb67532a74343d42bcf8784b8e32d7cf6d69313db /net/ipv4/arp.c
parentpch_gbe: vlan skb len fix (diff)
downloadlinux-c6cffba4ffa26a8ffacd0bb9f3144e34f20da7de.tar.xz
linux-c6cffba4ffa26a8ffacd0bb9f3144e34f20da7de.zip
ipv4: Fix input route performance regression.
With the routing cache removal we lost the "noref" code paths on input, and this can kill some routing workloads. Reinstate the noref path when we hit a cached route in the FIB nexthops. With help from Eric Dumazet. Reported-by: Alexander Duyck <alexander.duyck@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/arp.c')
-rw-r--r--net/ipv4/arp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index a0124eb7dbea..77e87aff419a 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -827,7 +827,7 @@ static int arp_process(struct sk_buff *skb)
}
if (arp->ar_op == htons(ARPOP_REQUEST) &&
- ip_route_input(skb, tip, sip, 0, dev) == 0) {
+ ip_route_input_noref(skb, tip, sip, 0, dev) == 0) {
rt = skb_rtable(skb);
addr_type = rt->rt_type;