1. 21 Dec, 2011 37 commits
  2. 09 Dec, 2011 3 commits
    • Greg Kroah-Hartman's avatar
      Linux 3.1.5 · caf4b043
      Greg Kroah-Hartman authored
      caf4b043
    • Eric Dumazet's avatar
      sch_red: fix red_change · 50d224d4
      Eric Dumazet authored
      [ Upstream commit 1ee5fa1e ]
      
      Le mercredi 30 novembre 2011 à 14:36 -0800, Stephen Hemminger a écrit :
      
      > (Almost) nobody uses RED because they can't figure it out.
      > According to Wikipedia, VJ says that:
      >  "there are not one, but two bugs in classic RED."
      
      RED is useful for high throughput routers, I doubt many linux machines
      act as such devices.
      
      I was considering adding Adaptative RED (Sally Floyd, Ramakrishna
      Gummadi, Scott Shender), August 2001
      
      In this version, maxp is dynamic (from 1% to 50%), and user only have to
      setup min_th (target average queue size)
      (max_th and wq (burst in linux RED) are automatically setup)
      
      By the way it seems we have a small bug in red_change()
      
      if (skb_queue_empty(&sch->q))
      	red_end_of_idle_period(&q->parms);
      
      First, if queue is empty, we should call
      red_start_of_idle_period(&q->parms);
      
      Second, since we dont use anymore sch->q, but q->qdisc, the test is
      meaningless.
      
      Oh well...
      
      [PATCH] sch_red: fix red_change()
      
      Now RED is classful, we must check q->qdisc->q.qlen, and if queue is empty,
      we start an idle period, not end it.
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      50d224d4
    • Eric Dumazet's avatar
      sch_red: fix red_calc_qavg_from_idle_time · 4851c6a0
      Eric Dumazet authored
      [ Upstream commit ea6a5d3b ]
      
      Since commit a4a710c4 (pkt_sched: Change PSCHED_SHIFT from 10 to
      6) it seems RED/GRED are broken.
      
      red_calc_qavg_from_idle_time() computes a delay in us units, but this
      delay is now 16 times bigger than real delay, so the final qavg result
      smaller than expected.
      
      Use standard kernel time services since there is no need to obfuscate
      them.
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      4851c6a0