tcp: allow custom mss on connects 14/24914/3
authorFlorin Coras <fcoras@cisco.com>
Mon, 10 Feb 2020 17:44:13 +0000 (17:44 +0000)
committerJohn Lo <loj@cisco.com>
Tue, 18 Feb 2020 16:56:33 +0000 (16:56 +0000)
Type: feature

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ie4bd68a387f706b3e6868bece2ec4c8c1d92a9c3

src/vnet/session/transport_types.h
src/vnet/tcp/tcp.c

index 214a638..459fb0c 100644 (file)
@@ -184,6 +184,7 @@ typedef struct transport_endpoint_
 #define foreach_transport_endpoint_cfg_fields                          \
   foreach_transport_endpoint_fields                                    \
   _(transport_endpoint_t, peer)                                                \
+  _(u16, mss)                                                          \
 
 typedef struct transport_endpoint_pair_
 {
index f24ddb3..2823176 100644 (file)
@@ -599,6 +599,10 @@ tcp_init_rcv_mss (tcp_connection_t * tc)
 {
   u8 ip_hdr_len;
 
+  /* Already provided at connection init time */
+  if (tc->mss)
+    return;
+
   ip_hdr_len = tc->c_is_ip4 ? sizeof (ip4_header_t) : sizeof (ip6_header_t);
   tc->mss = tcp_cfg.default_mtu - sizeof (tcp_header_t) - ip_hdr_len;
 }
@@ -763,6 +767,7 @@ tcp_session_open (transport_endpoint_cfg_t * rmt)
   tc->cc_algo = tcp_cc_algo_get (tcp_cfg.cc_algo);
   /* The other connection vars will be initialized after SYN ACK */
   tcp_connection_timers_init (tc);
+  tc->mss = rmt->mss;
 
   TCP_EVT (TCP_EVT_OPEN, tc);
   tc->state = TCP_STATE_SYN_SENT;