--- linux-3.2.7/net/ipv4/route.c.orig 2012-02-28 17:26:00.214386221 +0100 +++ linux-3.2.7/net/ipv4/route.c 2012-02-28 17:25:27.826225630 +0100 @@ -1926,7 +1926,7 @@ const struct rtable *rt = (const struct rtable *) dst; unsigned int mtu = dst_metric_raw(dst, RTAX_MTU); - if (mtu && rt_is_output_route(rt)) + if (mtu && rt_is_output_route(rt) && mtu == dst->dev->mtu) return mtu; mtu = dst->dev->mtu; @@ -1940,6 +1940,8 @@ if (mtu > IP_MAX_MTU) mtu = IP_MAX_MTU; + dst_metric_set(dst, RTAX_MTU, mtu); + return mtu; }