Skip to content
  • Jesus Sanchez-Palencia's avatar
    etf: Drop all expired packets · 37342bda
    Jesus Sanchez-Palencia authored
    
    
    Currently on dequeue() ETF only drops the first expired packet, which
    causes a problem if the next packet is already expired. When this
    happens, the watchdog will be configured with a time in the past, fire
    straight way and the packet will finally be dropped once the dequeue()
    function of the qdisc is called again.
    
    We can save quite a few cycles and improve the overall behavior of the
    qdisc if we drop all expired packets if the next packet is expired.
    This should allow ETF to recover faster from bad situations. But
    packet drops are still a very serious warning that the requirements
    imposed on the system aren't reasonable.
    
    This was inspired by how the implementation of hrtimers use the
    rb_tree inside the kernel.
    
    Signed-off-by: default avatarJesus Sanchez-Palencia <jesus.s.palencia@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    37342bda