blob: 0be5194c825282b5f8f5f9e59a28a13527fea136 [file] [log] [blame]
/*
******************************************************************************
* Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* ****************************************************************************
*/
#ifndef __NSS_VXLANMGR_TUN_STATS_H
#define __NSS_VXLANMGR_TUN_STATS_H
/*
* VxLAN statistic counters
*/
enum nss_vxlanmgr_tun_stats_type {
NSS_VXLANMGR_TUN_STATS_TYPE_RX_PKTS,
NSS_VXLANMGR_TUN_STATS_TYPE_RX_BYTES,
NSS_VXLANMGR_TUN_STATS_TYPE_TX_PKTS,
NSS_VXLANMGR_TUN_STATS_TYPE_TX_BYTES,
NSS_VXLANMGR_TUN_STATS_TYPE_RX_QUEUE_0_DROPPED,
NSS_VXLANMGR_TUN_STATS_TYPE_RX_QUEUE_1_DROPPED,
NSS_VXLANMGR_TUN_STATS_TYPE_RX_QUEUE_2_DROPPED,
NSS_VXLANMGR_TUN_STATS_TYPE_RX_QUEUE_3_DROPPED,
NSS_VXLANMGR_TUN_STATS_TYPE_MAC_DB_LOOKUP_FAILED,
NSS_VXLANMGR_TUN_STATS_TYPE_EXCEPT_HEADROOM_INSUFFICIENT,
NSS_VXLANMGR_TUN_STATS_TYPE_EXCEPT_MAC_MOVE,
NSS_VXLANMGR_TUN_STATS_TYPE_EXCEPT_NO_POLICY_ID,
NSS_VXLANMGR_TUN_STATS_TYPE_EXCEPT_EXTRA_FLAGS,
NSS_VXLANMGR_TUN_STATS_TYPE_EXCEPT_VNI_LOOKUP_FAILED,
NSS_VXLANMGR_TUN_STATS_TYPE_DROP_MALFORMED,
NSS_VXLANMGR_TUN_STATS_TYPE_DROP_NEXT_NODE_QUEUE_FULL,
NSS_VXLANMGR_TUN_STATS_TYPE_EXCEPT_INNER_HASH,
NSS_VXLANMGR_TUN_STATS_TYPE_MAX,
};
/*
* VxLAN tunnel statistics
*/
struct nss_vxlanmgr_tun_stats {
uint64_t inner_stats[NSS_VXLANMGR_TUN_STATS_TYPE_MAX];
uint64_t outer_stats[NSS_VXLANMGR_TUN_STATS_TYPE_MAX];
uint64_t host_packet_drop;
uint64_t mac_stats[NSS_VXLAN_MACDB_ENTRIES_MAX][2];
};
/*
* VxLAN statistics APIs
*/
extern void nss_vxlanmgr_tun_macdb_stats_sync(struct nss_vxlanmgr_tun_ctx *tun_ctx, struct nss_vxlan_msg *nvm);
extern void nss_vxlanmgr_tun_stats_sync(struct nss_vxlanmgr_tun_ctx *tun_ctx, struct nss_vxlan_msg *nvm);
extern void nss_vxlanmgr_tun_stats_deinit(struct nss_vxlanmgr_tun_ctx *tun_ctx);
extern bool nss_vxlanmgr_tun_stats_init(struct nss_vxlanmgr_tun_ctx *tun_ctx);
extern void nss_vxlanmgr_tun_stats_dentry_deinit(void);
extern bool nss_vxlanmgr_tun_stats_dentry_init(void);
extern void nss_vxlanmgr_tun_stats_dentry_remove(struct nss_vxlanmgr_tun_ctx *tun_ctx);
extern bool nss_vxlanmgr_tun_stats_dentry_create(struct nss_vxlanmgr_tun_ctx *tun_ctx);
#endif /* __NSS_VXLANMGR_TUN_STATS_H */