From: Stephen Hemminger <[EMAIL PROTECTED]>
Date: Sat, 21 Oct 2006 12:36:08 -0700

> On Fri, 20 Oct 2006 23:42:28 -0700 (PDT)
> David Miller <[EMAIL PROTECTED]> wrote:
> 
> > @@ -170,6 +170,8 @@ static int netem_enqueue(struct sk_buff 
> >             return NET_XMIT_BYPASS;
> >     }
> >  
> > +   skb_orphan(skb);
> > +
 ...
> Yeah, that's good. I run netem on an intermediate machine (bridge or router)
> when running tests to avoid this and other local feedback scenario's.

I'll put this into 2.6.19 as a fix for now, but I am so tempted
to just kill off that skb_set_owner_w() call in tcp_transmit_skb().

That call is totally pointless, even for the case where we pskb_copy()
a data SKB at the beginning of tcp_transmit_skb().  The socket is
charged for the memory, and the SKB clone itself is transient and
owned by entirely the IP{4,6} output path, queueing layer, and device.

We have discussed before how it probably makes sense for UDP, which
is in a similar situation, because otherwise a very aggressive
UDP socket can essentially flood the device without letting other
sockets to send traffic.

But here in this TCP clone situation, that doesn't apply.  The socket
has already had the data charged to it properly.

It is something to seriously consider for 2.6.20, anyways, because it
would kill off some expensive atomics and accounting in our TCP
transmit path as well.
-
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