diff options
author | Jim Paris <jim@jtan.com> | 2008-01-31 19:36:25 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-31 22:28:21 -0500 |
commit | 23717795bee15470b96f9b7aa5ecf4efe14c8e32 (patch) | |
tree | 5c9f3d3fc0ef0cddd1af52737128185d90dda9ba | |
parent | fa4d3c6210380c55cf7f295d28fd981fbcbb828c (diff) |
[IPV6]: Update MSS even if MTU is unchanged.
This is needed because in ndisc.c, we have:
static void ndisc_router_discovery(struct sk_buff *skb)
{
// ...
if (ndopts.nd_opts_mtu) {
// ...
if (rt)
rt->u.dst.metrics[RTAX_MTU-1] = mtu;
rt6_mtu_change(skb->dev, mtu);
// ...
}
Since the mtu is set directly here, rt6_mtu_change_route thinks that
it is unchanged, and so it fails to update the MSS accordingly. This
patch lets rt6_mtu_change_route still update MSS if old_mtu == new_mtu.
Signed-off-by: Jim Paris <jim@jtan.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ipv6/route.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index bf6b6652ab79..513f72e3db0d 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -1909,7 +1909,7 @@ static int rt6_mtu_change_route(struct rt6_info *rt, void *p_arg) | |||
1909 | */ | 1909 | */ |
1910 | if (rt->rt6i_dev == arg->dev && | 1910 | if (rt->rt6i_dev == arg->dev && |
1911 | !dst_metric_locked(&rt->u.dst, RTAX_MTU) && | 1911 | !dst_metric_locked(&rt->u.dst, RTAX_MTU) && |
1912 | (dst_mtu(&rt->u.dst) > arg->mtu || | 1912 | (dst_mtu(&rt->u.dst) >= arg->mtu || |
1913 | (dst_mtu(&rt->u.dst) < arg->mtu && | 1913 | (dst_mtu(&rt->u.dst) < arg->mtu && |
1914 | dst_mtu(&rt->u.dst) == idev->cnf.mtu6))) { | 1914 | dst_mtu(&rt->u.dst) == idev->cnf.mtu6))) { |
1915 | rt->u.dst.metrics[RTAX_MTU-1] = arg->mtu; | 1915 | rt->u.dst.metrics[RTAX_MTU-1] = arg->mtu; |