macvlan: add multicast filter
Setting up IPv6 addresses on configurations with many macvlans is not really working, as many multicast messages are dropped. Add a multicast filter to macvlan to reduce the amount of cloned skbs and overhead. Successfully tested with 1024 macvlans on one ethernet device. Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Ben Greear <greearb@candelatech.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6d1ccff627
commit
cd431e7385
2 changed files with 29 additions and 0 deletions
|
@ -52,6 +52,9 @@ struct macvlan_pcpu_stats {
|
|||
*/
|
||||
#define MAX_MACVTAP_QUEUES (NR_CPUS < 16 ? NR_CPUS : 16)
|
||||
|
||||
#define MACVLAN_MC_FILTER_BITS 8
|
||||
#define MACVLAN_MC_FILTER_SZ (1 << MACVLAN_MC_FILTER_BITS)
|
||||
|
||||
struct macvlan_dev {
|
||||
struct net_device *dev;
|
||||
struct list_head list;
|
||||
|
@ -59,6 +62,9 @@ struct macvlan_dev {
|
|||
struct macvlan_port *port;
|
||||
struct net_device *lowerdev;
|
||||
struct macvlan_pcpu_stats __percpu *pcpu_stats;
|
||||
|
||||
DECLARE_BITMAP(mc_filter, MACVLAN_MC_FILTER_SZ);
|
||||
|
||||
enum macvlan_mode mode;
|
||||
u16 flags;
|
||||
int (*receive)(struct sk_buff *skb);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue