• S
    [PKT_SCHED] netem: use only inner qdisc -- no private skbuff queue · 0f9f32ac
    Stephen Hemminger 提交于
    Netem works better if there if packets are just queued in the inner discipline
    rather than having a separate delayed queue. Change to use the dequeue/requeue
    to peek like TBF does.
    
    By doing this potential qlen problems with the old method are avoided. The problems
    happened when the netem_run that moved packets from the inner discipline to the nested
    discipline failed (because inner queue was full). This happened in dequeue, so the
    effective qlen of the netem would be decreased (because of the drop), but there was
    no way to keep the outer qdisc (caller of netem dequeue) in sync.
    
    The problem window is still there since this patch doesn't address the issue of
    requeue failing in netem_dequeue, but that shouldn't happen since the sequence dequeue/requeue
    should always work.  Long term correct fix is to implement qdisc->peek in all the qdisc's
    to allow for this (needed by several other qdisc's as well).
    Signed-off-by: NStephen Hemminger <shemminger@osdl.org>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    0f9f32ac
sch_netem.c 13.4 KB