From: John Heffner <jheffner@xxxxxxx> Date: Fri, 20 Oct 2006 23:11:15 -0400 > I think that what's going on is that since you're using netem, tcp is > double-counting the cloned skb's sitting in the txqueue. Since pretty > much the full BDP is sitting in your txqueue, you're needing about > 2xBDP. I think this double-counting isn't strictly necessary. Can > anyone think of a good reason why this is done (skb_set_owner_w() in > tcp_transmit_skb())? It's late and my brain may not be working right.. ;) Indeed, netem should orphan the SKB as soon as it queues. Try this: diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 45939ba..ef8874b 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -170,6 +170,8 @@ static int netem_enqueue(struct sk_buff return NET_XMIT_BYPASS; } + skb_orphan(skb); + /* * If we need to duplicate packet, then re-insert at top of the * qdisc tree, since parent queuer expects that only one - To unsubscribe from this list: send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html