
On Mon, Apr 29, 2024 at 11:33:57AM -0700, Sean Edmond wrote:
This patch introduces 3 improvements to align with RFC 951:
- retransmission backoff interval maximum is configurable
- initial retranmission backoff interval is configurable
- transaction ID is kept the same for each BOOTP/DHCPv4 request
In applications where thousands of nodes are serviced by a single DHCP server, maximizing the retransmission backoff interval at 2 seconds (the current u-boot default) exerts high pressure on the DHCP server and network layer.
RFC 951 “7.2. Client Retransmission Strategy” states that the retransmission backoff interval should be limited to 60 seconds. This patch allows the interval to be configurable using the environment variable "bootpretransmitperiodmax"
The initial retranmission backoff period defaults to 250ms, which is also too small for these scenarios with many clients. This patch makes the initial retransmission interval to be configurable using the environment variable "bootpretransmitperiodinit".
Also, on a retransmission it is not expected for the transaction ID to change (only the 'secs' field should be updated). Let's save the transaction ID and use the same transaction ID for each BOOTP/DHCPv4 exchange.
Signed-off-by: Sean Edmond seanedmond@microsoft.com
On numerous platforms we now get: +(imx8qm_dmsse20a1) WARNING 'mx8qm-ahab-container.img' not found, resulting binary is not-functional +(imx8qm_dmsse20a1) net/bootp.c: In function 'bootp_reset': +(imx8qm_dmsse20a1) net/bootp.c:741:15: error: unused variable 'ep' [-Werror=unused-variable] +(imx8qm_dmsse20a1) 741 | char *ep; /* Environment pointer */ +(imx8qm_dmsse20a1) | ^~ +(imx8qm_dmsse20a1) cc1: all warnings being treated as errors +(imx8qm_dmsse20a1) make[2]: *** [scripts/Makefile.build:257: net/bootp.o] Error 1 +(imx8qm_dmsse20a1) make[1]: *** [Makefile:1892: net] Error 2 +(imx8qm_dmsse20a1) make: *** [Makefile:177: sub-make] Error 2