• E
    net: avoid synchronize_rcu() in dev_deactivate_many · 3137663d
    Eric Dumazet 提交于
    dev_deactivate_many() issues one synchronize_rcu() call after qdiscs set
    to noop_qdisc.
    
    This call is here to make sure they are no outstanding qdisc-less
    dev_queue_xmit calls before returning to caller.
    
    But in dismantle phase, we dont have to wait, because we wont activate
    again the device, and we are going to wait one rcu grace period later in
    rollback_registered_many().
    
    After this patch, device dismantle uses one synchronize_net() and one
    rcu_barrier() call only, so we have a ~30% speedup and a smaller RTNL
    latency.
    Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
    CC: Patrick McHardy <kaber@trash.net>,
    CC: Ben Greear <greearb@candelatech.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    3137663d
sch_generic.c 21.7 KB