bridge: Export multicast enabled state
During enslavement to a bridge, after the CHANGEUPPER is sent, the multicast enabled state of the bridge isn't propagated down to the offloading driver unless it's changed. This patch allows such drivers to query the multicast enabled state from the bridge, so that they'll be able to correctly configure their flood tables during port enslavement. In case multicast is disabled, unregistered multicast packets can be treated as broadcast and be flooded through all the bridge ports. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1f51445af3
commit
9341b988e6
|
@ -62,6 +62,7 @@ int br_multicast_list_adjacent(struct net_device *dev,
|
||||||
struct list_head *br_ip_list);
|
struct list_head *br_ip_list);
|
||||||
bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
|
bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
|
||||||
bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
|
bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
|
||||||
|
bool br_multicast_enabled(const struct net_device *dev);
|
||||||
#else
|
#else
|
||||||
static inline int br_multicast_list_adjacent(struct net_device *dev,
|
static inline int br_multicast_list_adjacent(struct net_device *dev,
|
||||||
struct list_head *br_ip_list)
|
struct list_head *br_ip_list)
|
||||||
|
@ -78,6 +79,10 @@ static inline bool br_multicast_has_querier_adjacent(struct net_device *dev,
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
static inline bool br_multicast_enabled(const struct net_device *dev)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_VLAN_FILTERING)
|
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_VLAN_FILTERING)
|
||||||
|
|
|
@ -2176,6 +2176,14 @@ int br_multicast_toggle(struct net_bridge *br, unsigned long val)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool br_multicast_enabled(const struct net_device *dev)
|
||||||
|
{
|
||||||
|
struct net_bridge *br = netdev_priv(dev);
|
||||||
|
|
||||||
|
return !br->multicast_disabled;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(br_multicast_enabled);
|
||||||
|
|
||||||
int br_multicast_set_querier(struct net_bridge *br, unsigned long val)
|
int br_multicast_set_querier(struct net_bridge *br, unsigned long val)
|
||||||
{
|
{
|
||||||
unsigned long max_delay;
|
unsigned long max_delay;
|
||||||
|
|
Loading…
Reference in New Issue