mirror of
https://github.com/espressif/esp-lwip.git
synced 2026-08-21 17:30:04 +00:00
lwip:optimization lwip dns timer
This commit is contained in:
@@ -51,7 +51,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cp ${CONTRIB}/examples/example_app/lwipcfg.h.example ${CONTRIB}/examples/example_app/lwipcfg.h
|
cp ${CONTRIB}/examples/example_app/lwipcfg.h.example ${CONTRIB}/examples/example_app/lwipcfg.h
|
||||||
cd ${CONTRIB}/ports/unix/example_app
|
cd ${CONTRIB}/ports/unix/example_app
|
||||||
export CFLAGS="-DESP_LWIP=LWIP_NETCONN_FULLDUPLEX -DESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_IGMP_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_MLD6_TIMERS_ONDEMAND=ESP_LWIP -DESP_DNS=ESP_LWIP -DESP_LWIP_ARP=ESP_LWIP"
|
export CFLAGS="-DESP_LWIP=LWIP_NETCONN_FULLDUPLEX -DESP_LWIP_DNS_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_IGMP_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_MLD6_TIMERS_ONDEMAND=ESP_LWIP -DESP_DNS=ESP_LWIP -DESP_LWIP_ARP=ESP_LWIP"
|
||||||
export LWIPDIR=../../../../src/
|
export LWIPDIR=../../../../src/
|
||||||
make TESTFLAGS="-Wno-documentation" -j 4
|
make TESTFLAGS="-Wno-documentation" -j 4
|
||||||
chmod +x iteropts.sh && ./iteropts.sh
|
chmod +x iteropts.sh && ./iteropts.sh
|
||||||
|
|||||||
+1
-1
@@ -86,7 +86,7 @@ validate_opts:
|
|||||||
- *get_contrib
|
- *get_contrib
|
||||||
- cp ${CONTRIB}/examples/example_app/lwipcfg.h.example ${CONTRIB}/examples/example_app/lwipcfg.h
|
- cp ${CONTRIB}/examples/example_app/lwipcfg.h.example ${CONTRIB}/examples/example_app/lwipcfg.h
|
||||||
- cd ${CONTRIB}/ports/unix/example_app
|
- cd ${CONTRIB}/ports/unix/example_app
|
||||||
- export CFLAGS="-DESP_LWIP=LWIP_NETCONN_FULLDUPLEX -DESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_IGMP_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_MLD6_TIMERS_ONDEMAND=ESP_LWIP -DESP_DNS=ESP_LWIP"
|
- export CFLAGS="-DESP_LWIP=LWIP_NETCONN_FULLDUPLEX -DESP_LWIP_DNS_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_IGMP_TIMERS_ONDEMAND=ESP_LWIP -DESP_LWIP_MLD6_TIMERS_ONDEMAND=ESP_LWIP -DESP_DNS=ESP_LWIP"
|
||||||
- export LWIPDIR=../../../../src/
|
- export LWIPDIR=../../../../src/
|
||||||
- chmod +x iteropts.sh && ./iteropts.sh
|
- chmod +x iteropts.sh && ./iteropts.sh
|
||||||
|
|
||||||
|
|||||||
@@ -94,6 +94,12 @@
|
|||||||
#include "lwip/memp.h"
|
#include "lwip/memp.h"
|
||||||
#include "lwip/dns.h"
|
#include "lwip/dns.h"
|
||||||
#include "lwip/prot/dns.h"
|
#include "lwip/prot/dns.h"
|
||||||
|
#include "lwip/timeouts.h"
|
||||||
|
|
||||||
|
#if ESP_LWIP_DNS_TIMERS_ONDEMAND
|
||||||
|
#include "stdbool.h"
|
||||||
|
static bool s_is_tmr_start = false;
|
||||||
|
#endif /* ESP_LWIP_DNS_TIMERS_ONDEMAND */
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#if ESP_DNS
|
#if ESP_DNS
|
||||||
@@ -412,6 +418,17 @@ dns_getserver(u8_t numdns)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ESP_LWIP_DNS_TIMERS_ONDEMAND
|
||||||
|
/**
|
||||||
|
* Wrapper function with matching prototype which calls the actual callback
|
||||||
|
*/
|
||||||
|
static void dns_timeout_cb(void *arg)
|
||||||
|
{
|
||||||
|
LWIP_UNUSED_ARG(arg);
|
||||||
|
dns_tmr();
|
||||||
|
}
|
||||||
|
#endif /* ESP_LWIP_DNS_TIMERS_ONDEMAND */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The DNS resolver client timer - handle retries and timeouts and should
|
* The DNS resolver client timer - handle retries and timeouts and should
|
||||||
* be called every DNS_TMR_INTERVAL milliseconds (every second by default).
|
* be called every DNS_TMR_INTERVAL milliseconds (every second by default).
|
||||||
@@ -419,8 +436,26 @@ dns_getserver(u8_t numdns)
|
|||||||
void
|
void
|
||||||
dns_tmr(void)
|
dns_tmr(void)
|
||||||
{
|
{
|
||||||
|
#if ESP_LWIP_DNS_TIMERS_ONDEMAND
|
||||||
|
bool tmr_restart = false;
|
||||||
|
u8_t i = 0;
|
||||||
|
#endif /* ESP_LWIP_DNS_TIMERS_ONDEMAND */
|
||||||
LWIP_DEBUGF(DNS_DEBUG, ("dns_tmr: dns_check_entries\n"));
|
LWIP_DEBUGF(DNS_DEBUG, ("dns_tmr: dns_check_entries\n"));
|
||||||
dns_check_entries();
|
dns_check_entries();
|
||||||
|
#if ESP_LWIP_DNS_TIMERS_ONDEMAND
|
||||||
|
for (i = 0; i < DNS_TABLE_SIZE; ++i) {
|
||||||
|
if (dns_table[i].state != DNS_STATE_UNUSED) {
|
||||||
|
tmr_restart = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tmr_restart) {
|
||||||
|
sys_timeout(DNS_TMR_INTERVAL, dns_timeout_cb, NULL);
|
||||||
|
} else {
|
||||||
|
sys_untimeout(dns_timeout_cb, NULL);
|
||||||
|
s_is_tmr_start = false;
|
||||||
|
}
|
||||||
|
#endif/* ESP_LWIP_DNS_TIMERS_ONDEMAND */
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DNS_LOCAL_HOSTLIST
|
#if DNS_LOCAL_HOSTLIST
|
||||||
@@ -1532,6 +1567,12 @@ dns_enqueue(const char *name, size_t hostnamelen, dns_found_callback found,
|
|||||||
|
|
||||||
/* force to send query without waiting timer */
|
/* force to send query without waiting timer */
|
||||||
dns_check_entry(i);
|
dns_check_entry(i);
|
||||||
|
#if ESP_LWIP_DNS_TIMERS_ONDEMAND
|
||||||
|
if (!s_is_tmr_start) {
|
||||||
|
sys_timeout(DNS_TMR_INTERVAL, dns_timeout_cb, NULL);
|
||||||
|
s_is_tmr_start = true;
|
||||||
|
}
|
||||||
|
#endif /* ESP_LWIP_DNS_TIMERS_ONDEMAND */
|
||||||
|
|
||||||
/* dns query is enqueued */
|
/* dns query is enqueued */
|
||||||
return ERR_INPROGRESS;
|
return ERR_INPROGRESS;
|
||||||
|
|||||||
+1
-1
@@ -100,7 +100,7 @@ const struct lwip_cyclic_timer lwip_cyclic_timers[] = {
|
|||||||
{IGMP_TMR_INTERVAL, HANDLER(igmp_tmr)},
|
{IGMP_TMR_INTERVAL, HANDLER(igmp_tmr)},
|
||||||
#endif /* LWIP_IGMP */
|
#endif /* LWIP_IGMP */
|
||||||
#endif /* LWIP_IPV4 */
|
#endif /* LWIP_IPV4 */
|
||||||
#if LWIP_DNS
|
#if LWIP_DNS && !ESP_LWIP_DNS_TIMERS_ONDEMAND
|
||||||
{DNS_TMR_INTERVAL, HANDLER(dns_tmr)},
|
{DNS_TMR_INTERVAL, HANDLER(dns_tmr)},
|
||||||
#endif /* LWIP_DNS */
|
#endif /* LWIP_DNS */
|
||||||
#if LWIP_IPV6
|
#if LWIP_IPV6
|
||||||
|
|||||||
@@ -505,7 +505,7 @@
|
|||||||
* The number of sys timeouts used by the core stack (not apps)
|
* The number of sys timeouts used by the core stack (not apps)
|
||||||
* The default number of timeouts is calculated here for all enabled modules.
|
* The default number of timeouts is calculated here for all enabled modules.
|
||||||
*/
|
*/
|
||||||
#define LWIP_NUM_SYS_TIMEOUT_INTERNAL (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND ? LWIP_DHCP : 2*LWIP_DHCP) + LWIP_AUTOIP + (ESP_LWIP_IGMP_TIMERS_ONDEMAND ? 0 : LWIP_IGMP) + LWIP_DNS + PPP_NUM_TIMEOUTS + (LWIP_IPV6 * (1 + LWIP_IPV6_REASS + (ESP_LWIP_MLD6_TIMERS_ONDEMAND ? 0 : LWIP_IPV6_MLD))))
|
#define LWIP_NUM_SYS_TIMEOUT_INTERNAL (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND ? LWIP_DHCP : 2*LWIP_DHCP) + LWIP_AUTOIP + (ESP_LWIP_IGMP_TIMERS_ONDEMAND ? 0 : LWIP_IGMP) + (ESP_LWIP_DNS_TIMERS_ONDEMAND ? 0 : LWIP_DNS) + PPP_NUM_TIMEOUTS + (LWIP_IPV6 * (1 + LWIP_IPV6_REASS + (ESP_LWIP_MLD6_TIMERS_ONDEMAND ? 0 : LWIP_IPV6_MLD))))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MEMP_NUM_SYS_TIMEOUT: the number of simultaneously active timeouts.
|
* MEMP_NUM_SYS_TIMEOUT: the number of simultaneously active timeouts.
|
||||||
|
|||||||
@@ -295,6 +295,7 @@ void sys_thread_sem_deinit(void);
|
|||||||
|
|
||||||
#define ESP_LWIP_IGMP_TIMERS_ONDEMAND 1
|
#define ESP_LWIP_IGMP_TIMERS_ONDEMAND 1
|
||||||
#define ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND 1
|
#define ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND 1
|
||||||
|
#define ESP_LWIP_DNS_TIMERS_ONDEMAND 1
|
||||||
#define ESP_LWIP_MLD6_TIMERS_ONDEMAND 1
|
#define ESP_LWIP_MLD6_TIMERS_ONDEMAND 1
|
||||||
#define ESP_DNS 1
|
#define ESP_DNS 1
|
||||||
#define ESP_LWIP_ARP 1
|
#define ESP_LWIP_ARP 1
|
||||||
|
|||||||
@@ -161,6 +161,7 @@ u32_t esp_random(void);
|
|||||||
#define ESP_LWIP_IGMP_TIMERS_ONDEMAND 1
|
#define ESP_LWIP_IGMP_TIMERS_ONDEMAND 1
|
||||||
#define ESP_LWIP_MLD6_TIMERS_ONDEMAND 1
|
#define ESP_LWIP_MLD6_TIMERS_ONDEMAND 1
|
||||||
#define ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND 1
|
#define ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND 1
|
||||||
|
#define ESP_LWIP_DNS_TIMERS_ONDEMAND 1
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define ESP_LWIP 0
|
#define ESP_LWIP 0
|
||||||
@@ -172,6 +173,10 @@ u32_t esp_random(void);
|
|||||||
#define ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND 0
|
#define ESP_LWIP_DHCP_FINE_TIMERS_ONDEMAND 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef ESP_LWIP_DNS_TIMERS_ONDEMAND
|
||||||
|
#define ESP_LWIP_DNS_TIMERS_ONDEMAND 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* ESP_LWIP */
|
#endif /* ESP_LWIP */
|
||||||
|
|
||||||
#endif /* LWIP_HDR_LWIPOPTS_H */
|
#endif /* LWIP_HDR_LWIPOPTS_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user