diff --git a/components/lwip/Kconfig b/components/lwip/Kconfig index 646e3c0d2e..f4fe8634f1 100644 --- a/components/lwip/Kconfig +++ b/components/lwip/Kconfig @@ -275,6 +275,14 @@ menu "LWIP" help Number of clients that may store data in client_data member array of struct netif. + 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 diff --git a/components/lwip/port/esp32/include/lwipopts.h b/components/lwip/port/esp32/include/lwipopts.h index a189a092a4..3d39e38015 100644 --- a/components/lwip/port/esp32/include/lwipopts.h +++ b/components/lwip/port/esp32/include/lwipopts.h @@ -339,7 +339,7 @@ extern "C" { #define ESP_DHCP_DISABLE_VENDOR_CLASS_IDENTIFIER CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID #define DHCP_DEFINE_CUSTOM_TIMEOUTS 1 -#define DHCP_COARSE_TIMER_SECS (1) +#define DHCP_COARSE_TIMER_SECS CONFIG_LWIP_DHCP_COARSE_TIMER_SECS #define DHCP_NEXT_TIMEOUT_THRESHOLD (3) /* Since for embedded devices it's not that hard to miss a discover packet, so lower * the discover retry backoff time from (2,4,8,16,32,60,60)s to (500m,1,2,4,8,15,15)s. @@ -354,6 +354,7 @@ static inline uint32_t timeout_from_offered(uint32_t lease, uint32_t min) if (timeout == 0) { timeout = min; } + timeout = (timeout + DHCP_COARSE_TIMER_SECS - 1) / DHCP_COARSE_TIMER_SECS; return timeout; }