From ed59dc1adac1a14abfabce7a2cfc131b6f71a8fb Mon Sep 17 00:00:00 2001 From: likewise Date: Sun, 28 Nov 2004 18:00:20 +0000 Subject: [PATCH] Prevented a race condition between a new ARP request and the ARP timer. Timeouts stay the same (halved the ARP timer, doubled the counts), but ETHARP_MAX_PENDING should be at least 2 to prevent it from reaching 0 right away, giving too little time for any ARP responses to be noted. --- src/include/netif/etharp.h | 3 ++- src/netif/etharp.c | 15 +++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/include/netif/etharp.h b/src/include/netif/etharp.h index 5750c63f..08437afe 100644 --- a/src/include/netif/etharp.h +++ b/src/include/netif/etharp.h @@ -107,7 +107,8 @@ PACK_STRUCT_END # include "arch/epstruct.h" #endif -#define ARP_TMR_INTERVAL 10000 +/** 5 seconds period */ +#define ARP_TMR_INTERVAL 5000 #define ETHTYPE_ARP 0x0806 #define ETHTYPE_IP 0x0800 diff --git a/src/netif/etharp.c b/src/netif/etharp.c index d44ef53d..632afe72 100644 --- a/src/netif/etharp.c +++ b/src/netif/etharp.c @@ -55,10 +55,17 @@ # include "lwip/dhcp.h" #endif -/** the time an ARP entry stays valid after its last update, (120 * 10) seconds = 20 minutes. */ -#define ARP_MAXAGE 120 -/** the time an ARP entry stays pending after first request, (1 * 10) seconds = 10 seconds. */ -#define ARP_MAXPENDING 1 +/** the time an ARP entry stays valid after its last update, + * (240 * 5) seconds = 20 minutes. + */ +#define ARP_MAXAGE 240 +/** the time an ARP entry stays pending after first request, + * (2 * 5) seconds = 10 seconds. + * + * @internal Keep this number at least 2, otherwise it might + * run out instantly if the timeout occurs directly after a request. + */ +#define ARP_MAXPENDING 2 #define HWTYPE_ETHERNET 1