net: Abstract default ADVMSS behind an accessor.
[cascardo/linux.git] / net / ipv4 / tcp_output.c
index 97041f2..2d39066 100644 (file)
@@ -119,9 +119,13 @@ static __u16 tcp_advertise_mss(struct sock *sk)
        struct dst_entry *dst = __sk_dst_get(sk);
        int mss = tp->advmss;
 
-       if (dst && dst_metric(dst, RTAX_ADVMSS) < mss) {
-               mss = dst_metric(dst, RTAX_ADVMSS);
-               tp->advmss = mss;
+       if (dst) {
+               unsigned int metric = dst_metric_advmss(dst);
+
+               if (metric < mss) {
+                       mss = metric;
+                       tp->advmss = mss;
+               }
        }
 
        return (__u16)mss;
@@ -2422,7 +2426,7 @@ struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
 
        skb_dst_set(skb, dst_clone(dst));
 
-       mss = dst_metric(dst, RTAX_ADVMSS);
+       mss = dst_metric_advmss(dst);
        if (tp->rx_opt.user_mss && tp->rx_opt.user_mss < mss)
                mss = tp->rx_opt.user_mss;
 
@@ -2556,7 +2560,7 @@ static void tcp_connect_init(struct sock *sk)
 
        if (!tp->window_clamp)
                tp->window_clamp = dst_metric(dst, RTAX_WINDOW);
-       tp->advmss = dst_metric(dst, RTAX_ADVMSS);
+       tp->advmss = dst_metric_advmss(dst);
        if (tp->rx_opt.user_mss && tp->rx_opt.user_mss < tp->advmss)
                tp->advmss = tp->rx_opt.user_mss;