diff --git a/src/include/ipxe/dhcp.h b/src/include/ipxe/dhcp.h index 6c028466..badc142c 100644 --- a/src/include/ipxe/dhcp.h +++ b/src/include/ipxe/dhcp.h @@ -643,10 +643,6 @@ struct dhcphdr { */ #define DHCP_MIN_LEN 552 -/** Timeouts for sending DHCP packets */ -#define DHCP_MIN_TIMEOUT ( 1 * TICKS_PER_SEC ) -#define DHCP_MAX_TIMEOUT ( 10 * TICKS_PER_SEC ) - /** Maximum time that we will wait for ProxyDHCP responses */ #define PROXYDHCP_MAX_TIMEOUT ( 2 * TICKS_PER_SEC ) diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c index 1f4910d5..1d95f623 100644 --- a/src/net/udp/dhcp.c +++ b/src/net/udp/dhcp.c @@ -185,8 +185,8 @@ struct dhcp_session_state { void ( * expired ) ( struct dhcp_session *dhcp ); /** Transmitted message type */ uint8_t tx_msgtype; - /** Apply minimum timeout */ - uint8_t apply_min_timeout; + uint8_t min_timeout; + uint8_t max_timeout; }; static struct dhcp_session_state dhcp_state_discover; @@ -286,9 +286,8 @@ static void dhcp_set_state ( struct dhcp_session *dhcp, dhcp->state = state; dhcp->start = currticks(); stop_timer ( &dhcp->timer ); - dhcp->timer.min_timeout = - ( state->apply_min_timeout ? DHCP_MIN_TIMEOUT : 0 ); - dhcp->timer.max_timeout = DHCP_MAX_TIMEOUT; + dhcp->timer.min_timeout = state->min_timeout * TICKS_PER_SEC; + dhcp->timer.max_timeout = state->max_timeout * TICKS_PER_SEC; start_timer_nodelay ( &dhcp->timer ); } @@ -461,7 +460,8 @@ static struct dhcp_session_state dhcp_state_discover = { .rx = dhcp_discovery_rx, .expired = dhcp_discovery_expired, .tx_msgtype = DHCPDISCOVER, - .apply_min_timeout = 1, + .min_timeout = 4, + .max_timeout = 32, }; /** @@ -598,7 +598,8 @@ static struct dhcp_session_state dhcp_state_request = { .rx = dhcp_request_rx, .expired = dhcp_request_expired, .tx_msgtype = DHCPREQUEST, - .apply_min_timeout = 0, + .min_timeout = 1, + .max_timeout = 8, }; /** @@ -699,7 +700,8 @@ static struct dhcp_session_state dhcp_state_proxy = { .rx = dhcp_proxy_rx, .expired = dhcp_proxy_expired, .tx_msgtype = DHCPREQUEST, - .apply_min_timeout = 0, + .min_timeout = 1, + .max_timeout = 8, }; /** @@ -846,7 +848,8 @@ static struct dhcp_session_state dhcp_state_pxebs = { .rx = dhcp_pxebs_rx, .expired = dhcp_pxebs_expired, .tx_msgtype = DHCPREQUEST, - .apply_min_timeout = 1, + .min_timeout = 1, + .max_timeout = 8, }; /****************************************************************************