Zach Brown <[EMAIL PROTECTED]> wrote: > > Index: 2.6.16-mm2-bigmtu/net/ipv4/ip_output.c > =================================================================== > --- 2.6.16-mm2-bigmtu.orig/net/ipv4/ip_output.c > +++ 2.6.16-mm2-bigmtu/net/ipv4/ip_output.c > @@ -891,13 +891,26 @@ alloc_new_skb: > datalen = length + fraggap; > if (datalen > mtu - fragheaderlen) > datalen = maxfraglen - fragheaderlen; > + > + alloclen = fragheaderlen + hh_len + 15; > + > + /* avoid multi page allocs */ > + if ((rt->u.dst.dev->features&NETIF_F_SG) && > + (SKB_DATA_KMALLOC_BYTES(alloclen + datalen) > + > PAGE_SIZE)) > { > + datalen = SKB_MAX_ORDER(alloclen, 0); > + /* watch out for trailer_len */ > + if (datalen == length) > + datalen -= 2; > + } > + > fraglen = datalen + fragheaderlen; > > if ((flags & MSG_MORE) && > !(rt->u.dst.dev->features&NETIF_F_SG)) > - alloclen = mtu; > + alloclen += mtu - fragheaderlen; > else > - alloclen = datalen + fragheaderlen; > + alloclen += datalen + fragheaderlen;
For the else clause wouldn't we be counting fragheaderlen twice if the multi page if falls through above despite NETIF_F_SG being true? Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html