Blame SOURCES/0005-Use-spec-compliant-timeouts.patch

29ec69
From c3c4dcf208faeb694df7474743dd785f159d30f6 Mon Sep 17 00:00:00 2001
29ec69
From: Alex Williamson <alex.williamson@redhat.com>
29ec69
Date: Wed, 21 Oct 2015 11:18:40 +0200
29ec69
Subject: Use spec compliant timeouts
29ec69
29ec69
Message-id: <20150428212403.31299.29391.stgit@gimli.home>
29ec69
Patchwork-id: 64951
29ec69
O-Subject: [RHEL7.2 ipxe PATCH 2/2] [dhcp][RHEL-only] Use spec compliant timeouts
29ec69
Bugzilla: 1196352
29ec69
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
29ec69
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
29ec69
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
29ec69
29ec69
Use local config to override iPXE's abbreviated DHCP timeouts using
29ec69
the recommended values for spec compliance.  This matches the state
29ec69
of RHEL6 gPXE DHCP timeouts after bz968474 + bz1206042
29ec69
29ec69
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
29ec69
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
29ec69
(cherry picked from commit 7038f41c0131d263de5165b416500009acdbf550)
29ec69
---
29ec69
 src/config/local/.gitignore |  1 -
29ec69
 src/config/local/dhcp.h     | 62 +++++++++++++++++++++++++++++++++++++++++++++
29ec69
 2 files changed, 62 insertions(+), 1 deletion(-)
29ec69
 delete mode 100644 src/config/local/.gitignore
29ec69
 create mode 100644 src/config/local/dhcp.h
29ec69
29ec69
diff --git a/src/config/local/dhcp.h b/src/config/local/dhcp.h
29ec69
new file mode 100644
29ec69
index 0000000..83df5b8
29ec69
--- /dev/null
29ec69
+++ b/src/config/local/dhcp.h
29ec69
@@ -0,0 +1,62 @@
29ec69
+/*
29ec69
+ * Downstream localization
29ec69
+ *
29ec69
+ * For RHEL, use spec compliant DHCP timeouts (bz1196352)
29ec69
+ */
29ec69
+
29ec69
+/*
29ec69
+ * PXE spec defines timeouts of 4, 8, 16, 32 seconds
29ec69
+ */
29ec69
+#undef DHCP_DISC_START_TIMEOUT_SEC
29ec69
+#define DHCP_DISC_START_TIMEOUT_SEC 4
29ec69
+#undef DHCP_DISC_END_TIMEOUT_SEC
29ec69
+#define DHCP_DISC_END_TIMEOUT_SEC   32
29ec69
+
29ec69
+/*
29ec69
+ * Elapsed time used for early break waiting for ProxyDHCP, this therefore
29ec69
+ * needs to be less than the cumulative time for the first 2 timeouts.
29ec69
+ */
29ec69
+#undef DHCP_DISC_PROXY_TIMEOUT_SEC
29ec69
+#define DHCP_DISC_PROXY_TIMEOUT_SEC 11
29ec69
+
29ec69
+/*
29ec69
+ * Approximate PXE spec requirement using minimum timeout (0.25s) for
29ec69
+ * timeouts of 0.25, 0.5, 1, 2, 4
29ec69
+ */
29ec69
+#undef DHCP_REQ_START_TIMEOUT_SEC
29ec69
+#define DHCP_REQ_START_TIMEOUT_SEC  0
29ec69
+#undef DHCP_REQ_END_TIMEOUT_SEC
29ec69
+#define DHCP_REQ_END_TIMEOUT_SEC    4
29ec69
+
29ec69
+/*
29ec69
+ * Same as normal request phase, except non-fatal, so we extend the timer
29ec69
+ * to 8 and set the early timeout to an elapsed time value that causes a
29ec69
+ * break after the 4 second timeout.  At least that's what we'd like to do,
29ec69
+ * but our timer operates at 18Hz and has a minimum resolution of 7 cycles.
29ec69
+ * Therefore the above quarter-second starting timeout looks more like
29ec69
+ * 0.39s, 0.78s, 1.56s, 3.11s, 6.22s.  If we had an ideal timer, we could
29ec69
+ * set the timeout to 7s (0.25 + 0.5 + 1 + 2 + 4 = 7.75s) and exit without
29ec69
+ * failure when the timer rolls over to 8s.  With our timer, we get 0.39 +
29ec69
+ * 0.78 + 1.56 + 3.11 = 5.84s.  The next timeout would take us to 12.06s
29ec69
+ * (+6.22).  That seems like a long time to wait for an optional reply, so
29ec69
+ * we reduce the early timeout to 5s to exit before the timer exceeds the
29ec69
+ * max and causes a failure.  This still adds one extra cycle vs the
29ec69
+ * upstream defaults.
29ec69
+ */
29ec69
+#undef DHCP_PROXY_START_TIMEOUT_SEC
29ec69
+#define DHCP_PROXY_START_TIMEOUT_SEC        0
29ec69
+#undef DHCP_PROXY_END_TIMEOUT_SEC
29ec69
+#define DHCP_PROXY_END_TIMEOUT_SEC  8
29ec69
+#undef DHCP_REQ_PROXY_TIMEOUT_SEC
29ec69
+#define DHCP_REQ_PROXY_TIMEOUT_SEC  5
29ec69
+
29ec69
+/*
29ec69
+ * Same as above, retry each server using our approximation of standard
29ec69
+ * timeouts and exit before timer induced failure.
29ec69
+ */
29ec69
+#undef PXEBS_START_TIMEOUT_SEC
29ec69
+#define PXEBS_START_TIMEOUT_SEC             0
29ec69
+#undef PXEBS_END_TIMEOUT_SEC
29ec69
+#define PXEBS_END_TIMEOUT_SEC               8
29ec69
+#undef PXEBS_MAX_TIMEOUT_SEC
29ec69
+#define PXEBS_MAX_TIMEOUT_SEC               5
29ec69
-- 
29ec69
1.8.3.1
29ec69