From: Jim Paris Date: Fri, 1 Feb 2008 00:36:25 +0000 (-0800) Subject: [IPV6]: Update MSS even if MTU is unchanged. X-Git-Tag: v2.6.25-rc1~1089^2~27 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=23717795bee15470b96f9b7aa5ecf4efe14c8e32;p=linux-2.6-omap-h63xx.git [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 Signed-off-by: David S. Miller --- diff --git a/net/ipv6/route.c b/net/ipv6/route.c index bf6b6652ab7..513f72e3db0 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) */ if (rt->rt6i_dev == arg->dev && !dst_metric_locked(&rt->u.dst, RTAX_MTU) && - (dst_mtu(&rt->u.dst) > arg->mtu || + (dst_mtu(&rt->u.dst) >= arg->mtu || (dst_mtu(&rt->u.dst) < arg->mtu && dst_mtu(&rt->u.dst) == idev->cnf.mtu6))) { rt->u.dst.metrics[RTAX_MTU-1] = arg->mtu;