@@ -3062,7 +3062,6 @@ struct sk_buff *tcp_make_synack(const struct sock *sk, struct dst_entry *dst,
30623062 struct sk_buff * skb ;
30633063 int tcp_header_size ;
30643064 struct tcphdr * th ;
3065- u16 user_mss ;
30663065 int mss ;
30673066
30683067 skb = alloc_skb (MAX_TCP_HEADER , GFP_ATOMIC );
@@ -3092,10 +3091,7 @@ struct sk_buff *tcp_make_synack(const struct sock *sk, struct dst_entry *dst,
30923091 }
30933092 skb_dst_set (skb , dst );
30943093
3095- mss = dst_metric_advmss (dst );
3096- user_mss = READ_ONCE (tp -> rx_opt .user_mss );
3097- if (user_mss && user_mss < mss )
3098- mss = user_mss ;
3094+ mss = tcp_mss_clamp (tp , dst_metric_advmss (dst ));
30993095
31003096 memset (& opts , 0 , sizeof (opts ));
31013097#ifdef CONFIG_SYN_COOKIES
@@ -3201,9 +3197,7 @@ static void tcp_connect_init(struct sock *sk)
32013197
32023198 if (!tp -> window_clamp )
32033199 tp -> window_clamp = dst_metric (dst , RTAX_WINDOW );
3204- tp -> advmss = dst_metric_advmss (dst );
3205- if (tp -> rx_opt .user_mss && tp -> rx_opt .user_mss < tp -> advmss )
3206- tp -> advmss = tp -> rx_opt .user_mss ;
3200+ tp -> advmss = tcp_mss_clamp (tp , dst_metric_advmss (dst ));
32073201
32083202 tcp_initialize_rcv_mss (sk );
32093203
@@ -3280,8 +3274,8 @@ static int tcp_send_syn_data(struct sock *sk, struct sk_buff *syn)
32803274 * user-MSS. Reserve maximum option space for middleboxes that add
32813275 * private TCP options. The cost is reduced data space in SYN :(
32823276 */
3283- if ( tp -> rx_opt .user_mss && tp -> rx_opt . user_mss < tp -> rx_opt .mss_clamp )
3284- tp -> rx_opt . mss_clamp = tp -> rx_opt . user_mss ;
3277+ tp -> rx_opt .mss_clamp = tcp_mss_clamp ( tp , tp -> rx_opt .mss_clamp );
3278+
32853279 space = __tcp_mtu_to_mss (sk , inet_csk (sk )-> icsk_pmtu_cookie ) -
32863280 MAX_TCP_OPTION_SPACE ;
32873281
0 commit comments