From: Jiri Pirko <j...@mellanox.com> This is going to be used for deferred operations.
Signed-off-by: Jiri Pirko <j...@mellanox.com> --- include/net/switchdev.h | 5 +++++ net/switchdev/switchdev.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/net/switchdev.h b/include/net/switchdev.h index 1ce7083..d2879f2 100644 --- a/include/net/switchdev.h +++ b/include/net/switchdev.h @@ -205,6 +205,7 @@ int switchdev_port_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb, void switchdev_port_fwd_mark_set(struct net_device *dev, struct net_device *group_dev, bool joining); +void switchdev_flush_deferred(void); #else @@ -326,6 +327,10 @@ static inline void switchdev_port_fwd_mark_set(struct net_device *dev, { } +static inline void switchdev_flush_deferred(void) +{ +} + #endif #endif /* _LINUX_SWITCHDEV_H_ */ diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c index 7a9ab90..d119e9c 100644 --- a/net/switchdev/switchdev.c +++ b/net/switchdev/switchdev.c @@ -17,9 +17,12 @@ #include <linux/netdevice.h> #include <linux/if_bridge.h> #include <linux/list.h> +#include <linux/workqueue.h> #include <net/ip_fib.h> #include <net/switchdev.h> +static struct workqueue_struct *switchdev_wq; + /** * switchdev_trans_item_enqueue - Enqueue data item to transaction queue * @@ -1217,3 +1220,19 @@ void switchdev_port_fwd_mark_set(struct net_device *dev, dev->offload_fwd_mark = mark; } EXPORT_SYMBOL_GPL(switchdev_port_fwd_mark_set); + +void switchdev_flush_deferred(void) +{ + flush_workqueue(switchdev_wq); +} +EXPORT_SYMBOL_GPL(switchdev_flush_deferred); + +static int __init switchdev_init(void) +{ + switchdev_wq = create_workqueue("switchdev"); + if (!switchdev_wq) + return -ENOMEM; + return 0; +} + +subsys_initcall(switchdev_init); -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html