/*
 ******************************************************************************
 * Copyright (c) 2019, 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_TSTAMP_STATS_H
#define __NSS_TSTAMP_STATS_H

#include <nss_cmn.h>

/**
 * TSTAMP node statistics
 */
enum nss_tstamp_stats_types {

	NSS_TSTAMP_STATS_BOOMERANGED = NSS_STATS_NODE_MAX,
					/**< Number of boomeranged packets. */
	NSS_TSTAMP_STATS_DROPPED_FAIL_ENQUEUE,
					/**< Number of failed enqueue drops. */
	NSS_TSTAMP_STATS_DROPPED_FAIL_ALLOC,
					/**< Number of failed allocation drops. */
	NSS_TSTAMP_STATS_DROPPED_FAIL_COPY,
					/**< Number of failed copy drops. */
	NSS_TSTAMP_STATS_DROPPED_NO_INTERFACE,
					/**< Number of failed no interface drops. */
	NSS_TSTAMP_STATS_DROPPED_NO_HEADROOM,
					/**< Number of failed no headroom drops. */
	NSS_TSTAMP_STATS_MAX,
};

/*
 * TSTAMP statistics APIs
 */
extern void nss_tstamp_stats_sync(struct nss_ctx_instance *nss_ctx, struct nss_tstamp_stats_msg *nts, uint32_t interface);
extern void nss_tstamp_stats_dentry_create(void);

#endif /* __NSS_TSTAMP_STATS_H */
