From e191298a1d62446646922b1f3d899dfb16da73ff Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 4 Mar 2014 13:14:13 +0000 Subject: [tcp] Calculate correct MSS from peer address iPXE currently advertises a fixed MSS of 1460, which is correct only for IPv4 over Ethernet. For IPv6 over Ethernet, the value should be 1440 (allowing for the larger IPv6 header). For non-Ethernet link layers, the value should reflect the MTU of the underlying network device. Use tcpip_mtu() to calculate the transport-layer MTU associated with the peer address, and calculate the MSS to allow for an optionless TCP header as per RFC 6691. As a side benefit, we can now fail a connection immediately with a meaningful error message if we have no route to the destination address. Reported-by: Anton D. Kachalov Signed-off-by: Michael Brown --- src/include/ipxe/tcp.h | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'src/include') diff --git a/src/include/ipxe/tcp.h b/src/include/ipxe/tcp.h index eb4b7b222..9baa6391c 100644 --- a/src/include/ipxe/tcp.h +++ b/src/include/ipxe/tcp.h @@ -330,16 +330,6 @@ struct tcp_options { #define TCP_PATH_MTU \ ( 1280 - 40 /* IPv6 */ - 20 /* TCP */ - 12 /* TCP timestamp */ ) -/** - * Advertised TCP MSS - * - * We currently hardcode this to a reasonable value and hope that the - * sender uses path MTU discovery. The alternative is breaking the - * abstraction layer so that we can find out the MTU from the IP layer - * (which would have to find out from the net device layer). - */ -#define TCP_MSS 1460 - /** TCP maximum segment lifetime * * Currently set to 2 minutes, as per RFC 793. -- cgit v1.2.3-55-g7522