diff --git a/src/include/ipxe/dhcp.h b/src/include/ipxe/dhcp.h index bcfb85cc..595f0c19 100644 --- a/src/include/ipxe/dhcp.h +++ b/src/include/ipxe/dhcp.h @@ -639,10 +639,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 7a4f40a7..849e2ad1 100644 --- a/src/net/udp/dhcp.c +++ b/src/net/udp/dhcp.c @@ -171,8 +171,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; @@ -272,9 +272,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 ); } @@ -447,7 +446,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, }; /** @@ -584,7 +584,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, }; /** @@ -685,7 +686,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, }; /** @@ -832,7 +834,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, }; /****************************************************************************