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