net: replace br_fdb_external_learn_* calls with switchdev notifier events

This patch benefits from newly introduced switchdev notifier and uses it
to propagate fdb learn events from rocker driver to bridge. That avoids
direct function calls and possible use by other listeners (ovs).

Suggested-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Jiri Pirko
2015-01-15 23:49:37 +01:00
committed by David S. Miller
parent 03bf0c2812
commit 3aeb66176f
6 changed files with 78 additions and 55 deletions

View File

@@ -50,24 +50,6 @@ extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __use
typedef int br_should_route_hook_t(struct sk_buff *skb);
extern br_should_route_hook_t __rcu *br_should_route_hook;
#if IS_ENABLED(CONFIG_BRIDGE)
int br_fdb_external_learn_add(struct net_device *dev,
const unsigned char *addr, u16 vid);
int br_fdb_external_learn_del(struct net_device *dev,
const unsigned char *addr, u16 vid);
#else
static inline int br_fdb_external_learn_add(struct net_device *dev,
const unsigned char *addr, u16 vid)
{
return 0;
}
static inline int br_fdb_external_learn_del(struct net_device *dev,
const unsigned char *addr, u16 vid)
{
return 0;
}
#endif
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
int br_multicast_list_adjacent(struct net_device *dev,
struct list_head *br_ip_list);