Merge branch 'lwip/optimize_dhcpc_taken_time' into 'master'

lwip: optimize the dhcp client

1. modify the discover retry backoff time from (2,4,8,16,32,60,60)s to (500m,1,2,4,8,15,15)s.
2. add DHCP_DOES_ARP_CHECK to menuconfig for users to specify if do a ARP check on the offered address.
   If enable, one more second will be taken.

See merge request !459
This commit is contained in:
Jiang Jiang Jian 2017-01-25 21:39:17 +08:00
commit 32ad1e676d
4 changed files with 19 additions and 2 deletions

@ -1 +1 @@
Subproject commit fc92f2e5bcd34fa945445e8cad47cbf1f2a4bdb6
Subproject commit 6e50eb85a07d12ded45d8765fc82bb7ab929e441

View file

@ -82,6 +82,13 @@ config TCP_SYNMAXRTX
help
Set maximum number of retransmissions of SYN segments.
config LWIP_DHCP_DOES_ARP_CHECK
bool "Enable an ARP check on the offered address"
default 1
help
Enabling this option allows check if the offered IP address is not already
in use by another host on the network.
endmenu

View file

@ -1029,7 +1029,12 @@ dhcp_discover(struct netif *netif)
autoip_start(netif);
}
#endif /* LWIP_DHCP_AUTOIP_COOP */
msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000;
/* 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.
* Original msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000;
*/
msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 250;
dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS;
LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs));
return result;

View file

@ -206,6 +206,11 @@
#define DHCP_MAXRTX 0
/**
* DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address.
*/
#define DHCP_DOES_ARP_CHECK CONFIG_LWIP_DHCP_DOES_ARP_CHECK
/*
------------------------------------
---------- AUTOIP options ----------