xref: /illumos-gate/usr/src/uts/sun4v/sys/vgen_stats.h (revision 7bd3a2e2)
106db247cSraghuram /*
206db247cSraghuram  * CDDL HEADER START
306db247cSraghuram  *
406db247cSraghuram  * The contents of this file are subject to the terms of the
506db247cSraghuram  * Common Development and Distribution License (the "License").
606db247cSraghuram  * You may not use this file except in compliance with the License.
706db247cSraghuram  *
806db247cSraghuram  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
906db247cSraghuram  * or http://www.opensolaris.org/os/licensing.
1006db247cSraghuram  * See the License for the specific language governing permissions
1106db247cSraghuram  * and limitations under the License.
1206db247cSraghuram  *
1306db247cSraghuram  * When distributing Covered Code, include this CDDL HEADER in each
1406db247cSraghuram  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1506db247cSraghuram  * If applicable, add the following below this CDDL HEADER, with the
1606db247cSraghuram  * fields enclosed by brackets "[]" replaced with your own identifying
1706db247cSraghuram  * information: Portions Copyright [yyyy] [name of copyright owner]
1806db247cSraghuram  *
1906db247cSraghuram  * CDDL HEADER END
2006db247cSraghuram  */
2106db247cSraghuram 
2206db247cSraghuram /*
23*7bd3a2e2SSriharsha Basavapatna  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
2406db247cSraghuram  * Use is subject to license terms.
2506db247cSraghuram  */
2606db247cSraghuram 
2706db247cSraghuram #ifndef _VGEN_STATS_H
2806db247cSraghuram #define	_VGEN_STATS_H
2906db247cSraghuram 
3006db247cSraghuram #ifdef __cplusplus
3106db247cSraghuram extern "C" {
3206db247cSraghuram #endif
3306db247cSraghuram 
3406db247cSraghuram typedef struct vgen_stats {
3506db247cSraghuram 
3606db247cSraghuram 	/* Link Input/Output stats */
3706db247cSraghuram 	uint64_t	ipackets;	/* # rx packets */
3806db247cSraghuram 	uint64_t	ierrors;	/* # rx error */
3906db247cSraghuram 	uint64_t	opackets;	/* # tx packets */
4006db247cSraghuram 	uint64_t	oerrors;	/* # tx error */
4106db247cSraghuram 
4206db247cSraghuram 	/* MIB II variables */
4306db247cSraghuram 	uint64_t	rbytes;		/* # bytes received */
4406db247cSraghuram 	uint64_t	obytes;		/* # bytes transmitted */
4506db247cSraghuram 	uint32_t	multircv;	/* # multicast packets received */
4606db247cSraghuram 	uint32_t	multixmt;	/* # multicast packets for xmit */
4706db247cSraghuram 	uint32_t	brdcstrcv;	/* # broadcast packets received */
4806db247cSraghuram 	uint32_t	brdcstxmt;	/* # broadcast packets for xmit */
4906db247cSraghuram 	uint32_t	norcvbuf;	/* # rcv packets discarded */
5006db247cSraghuram 	uint32_t	noxmtbuf;	/* # xmit packets discarded */
5106db247cSraghuram 
5206db247cSraghuram 	/* Tx Statistics */
5306db247cSraghuram 	uint32_t	tx_no_desc;	/* # out of transmit descriptors */
54f0ca1d9aSsb 	uint32_t	tx_qfull;	/* pkts dropped due to qfull in vsw */
55f0ca1d9aSsb 	uint32_t	tx_pri_fail;	/* # tx priority packet failures */
56f0ca1d9aSsb 	uint64_t	tx_pri_packets;	/* # priority packets transmitted */
57f0ca1d9aSsb 	uint64_t	tx_pri_bytes;	/* # priority bytes transmitted */
5806db247cSraghuram 
5906db247cSraghuram 	/* Rx Statistics */
6006db247cSraghuram 	uint32_t	rx_allocb_fail;	/* # rx buf allocb() failures */
6106db247cSraghuram 	uint32_t	rx_vio_allocb_fail; /* # vio_allocb() failures */
6206db247cSraghuram 	uint32_t	rx_lost_pkts;	/* # rx lost packets */
63f0ca1d9aSsb 	uint32_t	rx_pri_fail;	/* # rx priority packet failures */
64f0ca1d9aSsb 	uint64_t	rx_pri_packets;	/* # priority packets received */
65f0ca1d9aSsb 	uint64_t	rx_pri_bytes;	/* # priority bytes received */
6606db247cSraghuram 
6706db247cSraghuram 	/* Callback statistics */
6806db247cSraghuram 	uint32_t	callbacks;		/* # callbacks */
69*7bd3a2e2SSriharsha Basavapatna 	uint32_t	dring_data_msgs_sent;	/* # dring data msgs sent */
70*7bd3a2e2SSriharsha Basavapatna 	uint32_t	dring_data_acks_rcvd;	/* # dring data acks recvd  */
71*7bd3a2e2SSriharsha Basavapatna 	uint32_t	dring_stopped_acks_rcvd; /* # dring stopped acks rcvd */
72*7bd3a2e2SSriharsha Basavapatna 	uint32_t	dring_data_msgs_rcvd;	/* # dring data msgs rcvd */
73*7bd3a2e2SSriharsha Basavapatna 	uint32_t	dring_data_acks_sent;	/* # dring data acks sent  */
74*7bd3a2e2SSriharsha Basavapatna 	uint32_t	dring_stopped_acks_sent; /* # dring stopped acks sent */
75*7bd3a2e2SSriharsha Basavapatna 	uint32_t	dring_mode;		/* dring mode */
7606db247cSraghuram 
7706db247cSraghuram } vgen_stats_t;
7806db247cSraghuram 
7906db247cSraghuram typedef struct vgen_kstats {
8006db247cSraghuram 	/*
8106db247cSraghuram 	 * Link Input/Output stats
8206db247cSraghuram 	 */
8306db247cSraghuram 	kstat_named_t	ipackets;
8406db247cSraghuram 	kstat_named_t	ipackets64;
8506db247cSraghuram 	kstat_named_t	ierrors;
8606db247cSraghuram 	kstat_named_t	opackets;
8706db247cSraghuram 	kstat_named_t	opackets64;
8806db247cSraghuram 	kstat_named_t	oerrors;
8906db247cSraghuram 
9006db247cSraghuram 	/*
9106db247cSraghuram 	 * required by kstat for MIB II objects(RFC 1213)
9206db247cSraghuram 	 */
9306db247cSraghuram 	kstat_named_t	rbytes; 	/* MIB - ifInOctets */
9406db247cSraghuram 	kstat_named_t	rbytes64;
9506db247cSraghuram 	kstat_named_t	obytes; 	/* MIB - ifOutOctets */
9606db247cSraghuram 	kstat_named_t	obytes64;
9706db247cSraghuram 	kstat_named_t	multircv; 	/* MIB - ifInNUcastPkts */
9806db247cSraghuram 	kstat_named_t	multixmt; 	/* MIB - ifOutNUcastPkts */
9906db247cSraghuram 	kstat_named_t	brdcstrcv;	/* MIB - ifInNUcastPkts */
10006db247cSraghuram 	kstat_named_t	brdcstxmt;	/* MIB - ifOutNUcastPkts */
10106db247cSraghuram 	kstat_named_t	norcvbuf; 	/* MIB - ifInDiscards */
10206db247cSraghuram 	kstat_named_t	noxmtbuf; 	/* MIB - ifOutDiscards */
10306db247cSraghuram 
10406db247cSraghuram 	/* Tx Statistics */
10506db247cSraghuram 	kstat_named_t	tx_no_desc;	/* # out of transmit descriptors */
106f0ca1d9aSsb 	kstat_named_t	tx_qfull;	/* pkts dropped due to qfull in vsw */
107f0ca1d9aSsb 	kstat_named_t	tx_pri_fail;	/* # tx priority packet failures */
108f0ca1d9aSsb 	kstat_named_t	tx_pri_packets;	/* # priority packets transmitted */
109f0ca1d9aSsb 	kstat_named_t	tx_pri_bytes;	/* # priority bytes transmitted */
11006db247cSraghuram 
11106db247cSraghuram 	/* Rx Statistics */
11206db247cSraghuram 	kstat_named_t	rx_allocb_fail;	/* # rx buf allocb failures */
11306db247cSraghuram 	kstat_named_t	rx_vio_allocb_fail; /* # vio_allocb() failures */
11406db247cSraghuram 	kstat_named_t	rx_lost_pkts;	/* # rx lost packets */
115f0ca1d9aSsb 	kstat_named_t	rx_pri_fail;	/* # rx priority packet failures */
116f0ca1d9aSsb 	kstat_named_t	rx_pri_packets;	/* # priority packets received */
117f0ca1d9aSsb 	kstat_named_t	rx_pri_bytes;	/* # priority bytes received */
11806db247cSraghuram 
11906db247cSraghuram 	/* Callback statistics */
12006db247cSraghuram 	kstat_named_t	callbacks;		/* # callbacks */
121*7bd3a2e2SSriharsha Basavapatna 	kstat_named_t	dring_data_msgs_sent;	/* # dring data msgs sent */
122*7bd3a2e2SSriharsha Basavapatna 	kstat_named_t	dring_data_acks_rcvd;	/* # dring data acks recvd  */
123*7bd3a2e2SSriharsha Basavapatna 	kstat_named_t	dring_stopped_acks_rcvd; /* # dring stopped acks rcvd */
124*7bd3a2e2SSriharsha Basavapatna 	kstat_named_t	dring_data_msgs_rcvd;	/* # dring data msgs rcvd */
125*7bd3a2e2SSriharsha Basavapatna 	kstat_named_t	dring_data_acks_sent;	/* # dring data acks sent  */
126*7bd3a2e2SSriharsha Basavapatna 	kstat_named_t	dring_stopped_acks_sent; /* # dring stopped acks sent */
127*7bd3a2e2SSriharsha Basavapatna 	kstat_named_t	dring_mode;		/* dring mode */
12806db247cSraghuram 
12906db247cSraghuram } vgen_kstats_t;
13006db247cSraghuram 
13106db247cSraghuram kstat_t *vgen_setup_kstats(char *ks_mod, int instance,
13206db247cSraghuram     char *ks_name, vgen_stats_t *statsp);
13306db247cSraghuram void vgen_destroy_kstats(kstat_t *ksp);
13406db247cSraghuram int vgen_kstat_update(kstat_t *ksp, int rw);
13506db247cSraghuram 
13606db247cSraghuram #ifdef __cplusplus
13706db247cSraghuram }
13806db247cSraghuram #endif
13906db247cSraghuram 
14006db247cSraghuram #endif	/* _VGEN_STATS_H */
141