On Sun, Jul 31, 2005 at 09:46:53PM -0700, David S. Miller wrote:
> 
> I've tried to avoid doing that, but I may need to capitulate for now.
> My concern was that the divide that thing does has non-trivial cost.

You're right, this could be expensive.
 
> Wait... that's not true, multiple SKBs can have it set already
> if we tso_fragment() or tcp_fragment() and then the tcp_transmit_skb()
> fails (clone allocation failure, for example).

Agreed.

> Another idea is to make tcp_init_tso_segs() reset the values if
> the MSS doesn't match up.  This should work and points out another

That's a much better idea!
 
> Anyways, the following compile-tested-only patch shows my idea.
> What do you think about this Herbert?

The patch looks good.  However, I spotted something that might be
broken due to an earlier change.

> @@ -569,7 +567,7 @@ int tcp_trim_head(struct sock *sk, struc
>        * factor and mss.
>        */
>       if (tcp_skb_pcount(skb) > 1)
> -             tcp_set_skb_tso_segs(sk, skb);
> +             tcp_set_skb_tso_segs(sk, skb, tcp_current_mss(sk, 1));

We've got to be careful here because this is a packet that's already
been transmitted and the caller (tcp_tso_acked) wasn't designed to
handle a decrease in MSS.

Actually it seems that most of the code in tcp_tso_acked will work
with a negative packets_acked.  The only questionable bit is the
change made to fackets_out.

Thanks,
-- 
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

Reply via email to