lwip:optimization dhcp coarse timer

This commit is contained in:
xueyunfei 2023-02-09 11:58:33 +08:00
parent dc4c9c087f
commit b5e8c68b59
3 changed files with 37 additions and 1 deletions

View File

@ -247,6 +247,14 @@ menu "LWIP"
server. Last valid DHCP configuration is stored in nvs and restored after reset/power-up. If IP is still
available, there is no need for sending discovery message to DHCP server and save some time.
config LWIP_DHCP_COARSE_TIMER_SECS
int "DHCP coarse timer interval(s)"
default 1
range 1 10
help
Set DHCP coarse interval in seconds.
A higher value will be less precise but cost less power consumption.
menu "DHCP server"
config LWIP_DHCPS

@ -1 +1 @@
Subproject commit 6fa02bd30daa656f896c7a36248253fb3b97660d
Subproject commit a7abf28e02282b32479f4bbaf2d90f09d2a60f4c

View File

@ -44,6 +44,11 @@
#include "netif/dhcp_state.h"
#include "sntp/sntp_get_set_time.h"
#ifdef __cplusplus
extern "C"
{
#endif
/* Enable all Espressif-only options */
/*
@ -262,6 +267,25 @@
(uint16_t)(1 * 1000) : \
(uint16_t)(((tries) < 6 ? 1 << (tries) : 60) * 250))
#define DHCP_COARSE_TIMER_SECS CONFIG_LWIP_DHCP_COARSE_TIMER_SECS
static inline uint32_t timeout_from_offered(uint32_t lease, uint32_t min)
{
uint32_t timeout = lease;
if (timeout == 0) {
timeout = min;
}
timeout = (timeout + DHCP_COARSE_TIMER_SECS - 1) / DHCP_COARSE_TIMER_SECS;
return timeout;
}
#define DHCP_CALC_TIMEOUT_FROM_OFFERED_T0_LEASE(dhcp) \
timeout_from_offered((dhcp)->offered_t0_lease, 120)
#define DHCP_CALC_TIMEOUT_FROM_OFFERED_T1_RENEW(dhcp) \
timeout_from_offered((dhcp)->offered_t1_renew, (dhcp)->t0_timeout >> 1 /* 50% */)
#define DHCP_CALC_TIMEOUT_FROM_OFFERED_T2_REBIND(dhcp) \
timeout_from_offered((dhcp)->offered_t2_rebind, ((dhcp)->t0_timeout / 8) * 7 /* 87.5% */)
/**
* CONFIG_LWIP_DHCP_RESTORE_LAST_IP==1: Last valid IP address obtained from DHCP server
* is restored after reset/power-up.
@ -1074,4 +1098,8 @@
#define SOC_SEND_LOG //printf
#ifdef __cplusplus
}
#endif
#endif /* __LWIPOPTS_H__ */