^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /* Copyright (c) 2018, Intel Corporation. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #ifndef _FAILOVER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define _FAILOVER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/netdevice.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) struct failover_ops {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) int (*slave_pre_register)(struct net_device *slave_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) struct net_device *failover_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) int (*slave_register)(struct net_device *slave_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) struct net_device *failover_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) int (*slave_pre_unregister)(struct net_device *slave_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct net_device *failover_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) int (*slave_unregister)(struct net_device *slave_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) struct net_device *failover_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) int (*slave_link_change)(struct net_device *slave_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) struct net_device *failover_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) int (*slave_name_change)(struct net_device *slave_dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct net_device *failover_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) rx_handler_result_t (*slave_handle_frame)(struct sk_buff **pskb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) struct failover {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) struct list_head list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) struct net_device __rcu *failover_dev;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) struct failover_ops __rcu *ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) struct failover *failover_register(struct net_device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct failover_ops *ops);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) void failover_unregister(struct failover *failover);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) int failover_slave_unregister(struct net_device *slave_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #endif /* _FAILOVER_H */