david/ipxe
david
/
ipxe
Archived
1
0
Fork 0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src/net
Michael Brown c57e26381c [tcp] Use a dedicated timer for the TIME_WAIT state
iPXE currently repurposes the retransmission timer to hold the TCP
connection in the TIME_WAIT state (i.e. waiting for up to 2*MSL in
case we are required to re-ACK our peer's FIN due to a lost ACK).
However, the fact that this timer is running will prevent such an ACK
from ever being sent, since the logic in tcp_xmit() assumes that a
running timer indicates that we ourselves are waiting for an ACK and
so blocks the transmission.  (We always wait for an ACK before sending
our next packet, to keep our transmit data path as simple as
possible.)

Fix by using an entirely separate timer for the TIME_WAIT state, so
that packets can still be sent.

Reported-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-07-15 19:59:34 +01:00
..
80211 [libc] Enable automated extraction of error usage reports 2010-05-31 03:11:57 +01:00
infiniband [interface] Convert all data-xfer interfaces to generic interfaces 2010-06-22 15:50:31 +01:00
tcp [http] Pass through unknown interface method calls 2010-06-22 19:33:39 +01:00
udp [interface] Convert all data-xfer interfaces to generic interfaces 2010-06-22 15:50:31 +01:00
aoe.c [retry] Add timer_init() wrapper function 2010-06-22 14:30:20 +01:00
arp.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
cachedhcp.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
dhcpopts.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
dhcppkt.c [refcnt] Add ref_init() wrapper function 2010-06-22 14:26:40 +01:00
eapol.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
eth_slow.c [lacp] Add simple LACP implementation 2010-05-10 16:34:17 +01:00
ethernet.c [lacp] Add simple LACP implementation 2010-05-10 16:34:17 +01:00
fakedhcp.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
icmp.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
icmpv6.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
infiniband.c [libc] Enable automated extraction of error usage reports 2010-05-31 03:11:57 +01:00
iobpad.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
ipv4.c [retry] Use start_timer_fixed() instead of direct timeout manipulation 2010-06-22 14:32:49 +01:00
ipv6.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
mii.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
ndp.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
netdev_settings.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
netdevice.c [refcnt] Add ref_init() wrapper function 2010-06-22 14:26:40 +01:00
nullnet.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
rarp.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
retry.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
tcp.c [tcp] Use a dedicated timer for the TIME_WAIT state 2010-07-15 19:59:34 +01:00
tcpip.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
tls.c [tls] Handle multiple handshake records 2010-06-23 01:01:32 +01:00
udp.c [interface] Convert all data-xfer interfaces to generic interfaces 2010-06-22 15:50:31 +01:00