• Herbert Xu's avatar
    macvlan: Skip broadcast queue if multicast with single receiver · d45276e7
    Herbert Xu authored
    As it stands all broadcast and multicast packets are queued and
    processed in a work queue.  This is so that we don't overwhelm
    the receive softirq path by generating thousands of packets or
    more (see commit 412ca155 "macvlan: Move broadcasts into a
    work queue").
    
    As such all multicast packets will be delayed, even if they will
    be received by a single macvlan device.  As using a workqueue
    is not free in terms of latency, we should avoid this where possible.
    
    This patch adds a new filter to determine which addresses should
    be delayed and which ones won't.  This is done using a crude
    counter of how many times an address has been added to the macvlan
    port (ha->synced).  For now if an address has been added more than
    once, then it will be considered to be broadcast.  This could be
    tuned further by making this threshold configurable.
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d45276e7
macvlan.c 47.4 KB