From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Date: Mon, 19 Apr 2010 11:55:35 +0800 > On Mon, Apr 19, 2010 at 10:58:22AM +0800, Shan Wei wrote: >> >> According to RFC2460, PMTU is set to the IPv6 Minimum Link >> MTU (1280) and a fragment header should always be included >> after a node receiving Too Big message reporting PMTU is >> less than the IPv6 Minimum Link MTU. >> >> After receiving a ICMPv6 Too Big message reporting PMTU is >> less than the IPv6 Minimum Link MTU, sctp *can't* send any >> data/control chunk that total length including IPv6 head >> and IPv6 extend head is less than IPV6_MIN_MTU(1280 bytes). >> >> The failure occured in p6_fragment(), about reason >> see following(take SHUTDOWN chunk for example): >> sctp_packet_transmit (SHUTDOWN chunk, len=16 byte) >> |------sctp_v6_xmit (local_df=0) >> |------ip6_xmit >> |------ip6_output (dst_allfrag is ture) >> |------ip6_fragment >> >> In ip6_fragment(), for local_df=0, drops the the packet >> and returns EMSGSIZE. >> >> The patch fixes it with adding check length of skb->len. >> In this case, Ipv6 not to fragment upper protocol data, >> just only add a fragment header before it. >> >> Signed-off-by: Shan Wei <shanwei@xxxxxxxxxxxxxx> > > The patch looks good to me. > > If we wanted to optimise the allfrags case it may be better > to reserve the space beforehand and generate the fragment header > at the same time as we're doing the IPv6 header. > > But it can't be all that important as it's been broken for so > many years. Right, I've applied Shan's patch, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html