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 */ 54f0ca1d9aSsb155480 uint32_t tx_qfull; /* pkts dropped due to qfull in vsw */ 55f0ca1d9aSsb155480 uint32_t tx_pri_fail; /* # tx priority packet failures */ 56f0ca1d9aSsb155480 uint64_t tx_pri_packets; /* # priority packets transmitted */ 57f0ca1d9aSsb155480 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 */ 63f0ca1d9aSsb155480 uint32_t rx_pri_fail; /* # rx priority packet failures */ 64f0ca1d9aSsb155480 uint64_t rx_pri_packets; /* # priority packets received */ 65f0ca1d9aSsb155480 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 */ 106f0ca1d9aSsb155480 kstat_named_t tx_qfull; /* pkts dropped due to qfull in vsw */ 107f0ca1d9aSsb155480 kstat_named_t tx_pri_fail; /* # tx priority packet failures */ 108f0ca1d9aSsb155480 kstat_named_t tx_pri_packets; /* # priority packets transmitted */ 109f0ca1d9aSsb155480 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 */ 115f0ca1d9aSsb155480 kstat_named_t rx_pri_fail; /* # rx priority packet failures */ 116f0ca1d9aSsb155480 kstat_named_t rx_pri_packets; /* # priority packets received */ 117f0ca1d9aSsb155480 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