===== net/ipv4/ip_output.c 1.80 vs edited ===== --- 1.80/net/ipv4/ip_output.c 2005-03-19 05:43:26 +11:00 +++ edited/net/ipv4/ip_output.c 2005-03-21 21:36:51 +11:00 @@ -1152,7 +1152,8 @@ * If local_df is set too, we still allow to fragment this frame * locally. */ if (inet->pmtudisc == IP_PMTUDISC_DO || - (!skb_shinfo(skb)->frag_list && ip_dont_fragment(sk, &rt->u.dst))) + (skb->len <= dst_mtu(&rt->u.dst) && + ip_dont_fragment(sk, &rt->u.dst))) df = htons(IP_DF); if (inet->cork.flags & IPCORK_OPT)