macvlan: Avoid unnecessary multicast cloning
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 1 Jun 2016 03:45:44 +0000 (11:45 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Jun 2016 00:48:46 +0000 (17:48 -0700)
commit9c127a016e66a85edaad6f9a674d0d1dce93d251
treed8f23cacc9a57251677d1c862e893e3caf6bb6ca
parent260916dfb48c374f7840f3b86e69afd3afdb6e96
macvlan: Avoid unnecessary multicast cloning

Currently we always queue a multicast packet for further processing,
even if none of the macvlan devices are subscribed to the address.

This patch optimises this by adding a global multicast filter for
a macvlan_port.

Note that this patch doesn't handle the broadcast addresses of the
individual macvlan devices correctly, if they are not all identical
to vlan->lowerdev.  However, this is already broken because there
is no mechanism in place to update the individual multicast filters
when you change the broadcast address.

If someone cares enough they should fix this by collecting all
broadcast addresses for a macvlan as we do for multicast and unicast.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macvlan.c