/*
 ******************************************************************************
 * 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_RMNET_RX_STATS_H
#define __NSS_RMNET_RX_STATS_H

/*
 * rmnet_rx interface statistics types.
 */
enum nss_rmnet_rx_stats_types {
	NSS_RMNET_RX_STATS_RX_PKTS,
	NSS_RMNET_RX_STATS_RX_BYTES,
	NSS_RMNET_RX_STATS_TX_PKTS,
	NSS_RMNET_RX_STATS_TX_BYTES,
	NSS_RMNET_RX_STATS_QUEUE_0_DROPPED,
	NSS_RMNET_RX_STATS_QUEUE_1_DROPPED,
	NSS_RMNET_RX_STATS_QUEUE_2_DROPPED,
	NSS_RMNET_RX_STATS_QUEUE_3_DROPPED,
	NSS_RMNET_RX_STATS_ENQUEUE_FAILED,
	NSS_RMNET_RX_STATS_NO_AVAIL_CHANNEL,
	NSS_RMNET_RX_STATS_NUM_LINEAR_PBUF,
	NSS_RMNET_RX_STATS_NO_PBUF_TO_LINEAR,
	NSS_RMNET_RX_STATS_NO_ENOUGH_ROOM,
	NSS_RMNET_RX_STATS_USING_CHANNEL0,
	NSS_RMNET_RX_STATS_USING_CHANNEL1,
	NSS_RMNET_RX_STATS_USING_CHANNEL2,
	NSS_RMNET_RX_STATS_USING_CHANNEL3,
	NSS_RMNET_RX_STATS_USING_CHANNEL4,
	NSS_RMNET_RX_STATS_USING_CHANNEL5,
	NSS_RMNET_RX_STATS_USING_CHANNEL6,
	NSS_RMNET_RX_STATS_USING_CHANNEL7,
	NSS_RMNET_RX_STATS_USING_CHANNEL8,
	NSS_RMNET_RX_STATS_USING_CHANNEL9,
	NSS_RMNET_RX_STATS_USING_CHANNEL10,
	NSS_RMNET_RX_STATS_USING_CHANNEL11,
	NSS_RMNET_RX_STATS_DMA_FAILED,
	NSS_RMNET_RX_STATS_MAX,
};

/*
 * Virtual interface statistics APIs
 */
extern void nss_rmnet_rx_stats_sync(struct nss_rmnet_rx_handle *handle, struct nss_rmnet_rx_stats *nwis, uint32_t if_num);
extern void nss_rmnet_rx_stats_dentry_create(void);

#endif /* __NSS_RMNET_RX_STATS_H */
