diff options
| author | Chris Zankel <[email protected]> | 2015-04-14 03:51:35 +0000 | 
|---|---|---|
| committer | Chris Zankel <[email protected]> | 2015-04-14 03:51:35 +0000 | 
| commit | 7ead5b7e4a3cf4a16579a8f164022345b93fe972 (patch) | |
| tree | 0a9b9497f53d1593c9e2ac197b2e686ea74a9975 /include/net/switchdev.h | |
| parent | 834a316eeebcb75316c0a7d9088fa638c52dc584 (diff) | |
| parent | 39a8804455fb23f09157341d3ba7db6d7ae6ee76 (diff) | |
Merge tag 'v4.0' into for_next
Linux 4.0
Diffstat (limited to 'include/net/switchdev.h')
| -rw-r--r-- | include/net/switchdev.h | 79 | 
1 files changed, 78 insertions, 1 deletions
| diff --git a/include/net/switchdev.h b/include/net/switchdev.h index 8a6d1641fd9b..cfcdac2e5d25 100644 --- a/include/net/switchdev.h +++ b/include/net/switchdev.h @@ -11,13 +11,46 @@  #define _LINUX_SWITCHDEV_H_  #include <linux/netdevice.h> +#include <linux/notifier.h> + +enum netdev_switch_notifier_type { +	NETDEV_SWITCH_FDB_ADD = 1, +	NETDEV_SWITCH_FDB_DEL, +}; + +struct netdev_switch_notifier_info { +	struct net_device *dev; +}; + +struct netdev_switch_notifier_fdb_info { +	struct netdev_switch_notifier_info info; /* must be first */ +	const unsigned char *addr; +	u16 vid; +}; + +static inline struct net_device * +netdev_switch_notifier_info_to_dev(const struct netdev_switch_notifier_info *info) +{ +	return info->dev; +}  #ifdef CONFIG_NET_SWITCHDEV  int netdev_switch_parent_id_get(struct net_device *dev,  				struct netdev_phys_item_id *psid);  int netdev_switch_port_stp_update(struct net_device *dev, u8 state); - +int register_netdev_switch_notifier(struct notifier_block *nb); +int unregister_netdev_switch_notifier(struct notifier_block *nb); +int call_netdev_switch_notifiers(unsigned long val, struct net_device *dev, +				 struct netdev_switch_notifier_info *info); +int netdev_switch_port_bridge_setlink(struct net_device *dev, +				struct nlmsghdr *nlh, u16 flags); +int netdev_switch_port_bridge_dellink(struct net_device *dev, +				struct nlmsghdr *nlh, u16 flags); +int ndo_dflt_netdev_switch_port_bridge_dellink(struct net_device *dev, +					       struct nlmsghdr *nlh, u16 flags); +int ndo_dflt_netdev_switch_port_bridge_setlink(struct net_device *dev, +					       struct nlmsghdr *nlh, u16 flags);  #else  static inline int netdev_switch_parent_id_get(struct net_device *dev, @@ -32,6 +65,50 @@ static inline int netdev_switch_port_stp_update(struct net_device *dev,  	return -EOPNOTSUPP;  } +static inline int register_netdev_switch_notifier(struct notifier_block *nb) +{ +	return 0; +} + +static inline int unregister_netdev_switch_notifier(struct notifier_block *nb) +{ +	return 0; +} + +static inline int call_netdev_switch_notifiers(unsigned long val, struct net_device *dev, +					       struct netdev_switch_notifier_info *info) +{ +	return NOTIFY_DONE; +} + +static inline int netdev_switch_port_bridge_setlink(struct net_device *dev, +						    struct nlmsghdr *nlh, +						    u16 flags) +{ +	return -EOPNOTSUPP; +} + +static inline int netdev_switch_port_bridge_dellink(struct net_device *dev, +						    struct nlmsghdr *nlh, +						    u16 flags) +{ +	return -EOPNOTSUPP; +} + +static inline int ndo_dflt_netdev_switch_port_bridge_dellink(struct net_device *dev, +							struct nlmsghdr *nlh, +							u16 flags) +{ +	return 0; +} + +static inline int ndo_dflt_netdev_switch_port_bridge_setlink(struct net_device *dev, +							struct nlmsghdr *nlh, +							u16 flags) +{ +	return 0; +} +  #endif  #endif /* _LINUX_SWITCHDEV_H_ */ |