summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/gpxe/retry.h1
-rw-r--r--src/net/retry.c12
-rw-r--r--src/net/tcp.c2
-rw-r--r--src/net/udp/dhcp.c2
-rw-r--r--src/net/udp/tftp.c2
5 files changed, 16 insertions, 3 deletions
diff --git a/src/include/gpxe/retry.h b/src/include/gpxe/retry.h
index e0c0248b1..e71e7b3bb 100644
--- a/src/include/gpxe/retry.h
+++ b/src/include/gpxe/retry.h
@@ -35,6 +35,7 @@ struct retry_timer {
};
extern void start_timer ( struct retry_timer *timer );
+extern void start_timer_nodelay ( struct retry_timer *timer );
extern void stop_timer ( struct retry_timer *timer );
/**
diff --git a/src/net/retry.c b/src/net/retry.c
index 6734968f5..0f711e6d1 100644
--- a/src/net/retry.c
+++ b/src/net/retry.c
@@ -74,6 +74,18 @@ void start_timer ( struct retry_timer *timer ) {
}
/**
+ * Start timer with no delay
+ *
+ * @v timer Retry timer
+ *
+ * This starts the timer running with a zero timeout value.
+ */
+void start_timer_nodelay ( struct retry_timer *timer ) {
+ start_timer ( timer );
+ timer->timeout = 0;
+}
+
+/**
* Stop timer
*
* @v timer Retry timer
diff --git a/src/net/tcp.c b/src/net/tcp.c
index 01daf75ab..28cf95fb3 100644
--- a/src/net/tcp.c
+++ b/src/net/tcp.c
@@ -232,7 +232,7 @@ static int tcp_open ( struct xfer_interface *xfer, struct sockaddr *peer,
goto err;
/* Start timer to initiate SYN */
- start_timer ( &tcp->timer );
+ start_timer_nodelay ( &tcp->timer );
/* Attach parent interface, transfer reference to connection
* list and return
diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c
index ed4556329..86695f12b 100644
--- a/src/net/udp/dhcp.c
+++ b/src/net/udp/dhcp.c
@@ -912,7 +912,7 @@ int start_dhcp ( struct job_interface *job, struct net_device *netdev,
goto err;
/* Start timer to initiate initial DHCPREQUEST */
- start_timer ( &dhcp->timer );
+ start_timer_nodelay ( &dhcp->timer );
/* Attach parent interface, mortalise self, and return */
job_plug_plug ( &dhcp->job, job );
diff --git a/src/net/udp/tftp.c b/src/net/udp/tftp.c
index ea4d1df30..7f1c4ce64 100644
--- a/src/net/udp/tftp.c
+++ b/src/net/udp/tftp.c
@@ -657,7 +657,7 @@ int tftp_open ( struct xfer_interface *xfer, struct uri *uri ) {
goto err;
/* Start timer to initiate RRQ */
- start_timer ( &tftp->timer );
+ start_timer_nodelay ( &tftp->timer );
/* Attach to parent interface, mortalise self, and return */
xfer_plug_plug ( &tftp->xfer, xfer );