162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (c) 2018, Intel Corporation. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _NET_FAILOVER_H 562306a36Sopenharmony_ci#define _NET_FAILOVER_H 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <net/failover.h> 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci/* failover state */ 1062306a36Sopenharmony_cistruct net_failover_info { 1162306a36Sopenharmony_ci /* primary netdev with same MAC */ 1262306a36Sopenharmony_ci struct net_device __rcu *primary_dev; 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci /* standby netdev */ 1562306a36Sopenharmony_ci struct net_device __rcu *standby_dev; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci /* primary netdev stats */ 1862306a36Sopenharmony_ci struct rtnl_link_stats64 primary_stats; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci /* standby netdev stats */ 2162306a36Sopenharmony_ci struct rtnl_link_stats64 standby_stats; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci /* aggregated stats */ 2462306a36Sopenharmony_ci struct rtnl_link_stats64 failover_stats; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci /* spinlock while updating stats */ 2762306a36Sopenharmony_ci spinlock_t stats_lock; 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistruct failover *net_failover_create(struct net_device *standby_dev); 3162306a36Sopenharmony_civoid net_failover_destroy(struct failover *failover); 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci#define FAILOVER_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \ 3462306a36Sopenharmony_ci NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ 3562306a36Sopenharmony_ci NETIF_F_HIGHDMA | NETIF_F_LRO) 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define FAILOVER_ENC_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \ 3862306a36Sopenharmony_ci NETIF_F_RXCSUM | NETIF_F_ALL_TSO) 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci#endif /* _NET_FAILOVER_H */ 41