diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 8bf312bdea13c50f48291df5481affb6cfc10f4a..ec0e36893b013fa3c044fc04e9ba71839b5d3c01 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -697,12 +697,6 @@ void arp_send(int type, int ptype, u32 dest_ip,
 	arp_xmit(skb);
 }
 
-static void parp_redo(struct sk_buff *skb)
-{
-	nf_reset(skb);
-	arp_rcv(skb, skb->dev, NULL, skb->dev);
-}
-
 /*
  *	Process an arp request.
  */
@@ -922,6 +916,11 @@ static int arp_process(struct sk_buff *skb)
 	return 0;
 }
 
+static void parp_redo(struct sk_buff *skb)
+{
+	arp_process(skb);
+}
+
 
 /*
  *	Receive an arp request from the device layer.