1*3302Sagiri /* 2*3302Sagiri * CDDL HEADER START 3*3302Sagiri * 4*3302Sagiri * The contents of this file are subject to the terms of the 5*3302Sagiri * Common Development and Distribution License (the "License"). 6*3302Sagiri * You may not use this file except in compliance with the License. 7*3302Sagiri * 8*3302Sagiri * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*3302Sagiri * or http://www.opensolaris.org/os/licensing. 10*3302Sagiri * See the License for the specific language governing permissions 11*3302Sagiri * and limitations under the License. 12*3302Sagiri * 13*3302Sagiri * When distributing Covered Code, include this CDDL HEADER in each 14*3302Sagiri * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*3302Sagiri * If applicable, add the following below this CDDL HEADER, with the 16*3302Sagiri * fields enclosed by brackets "[]" replaced with your own identifying 17*3302Sagiri * information: Portions Copyright [yyyy] [name of copyright owner] 18*3302Sagiri * 19*3302Sagiri * CDDL HEADER END 20*3302Sagiri */ 21*3302Sagiri /* 22*3302Sagiri * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 23*3302Sagiri * Use is subject to license terms. 24*3302Sagiri */ 25*3302Sagiri 26*3302Sagiri #ifndef _RDS_KSTAT_H 27*3302Sagiri #define _RDS_KSTAT_H 28*3302Sagiri 29*3302Sagiri #pragma ident "%Z%%M% %I% %E% SMI" 30*3302Sagiri 31*3302Sagiri #ifdef __cplusplus 32*3302Sagiri extern "C" { 33*3302Sagiri #endif 34*3302Sagiri 35*3302Sagiri #include <sys/types.h> 36*3302Sagiri #include <sys/kstat.h> 37*3302Sagiri 38*3302Sagiri struct rds_kstat_s { 39*3302Sagiri kstat_named_t rds_nports; 40*3302Sagiri kstat_named_t rds_nsessions; 41*3302Sagiri kstat_named_t rds_tx_bytes; 42*3302Sagiri kstat_named_t rds_tx_pkts; 43*3302Sagiri kstat_named_t rds_tx_errors; 44*3302Sagiri kstat_named_t rds_rx_bytes; 45*3302Sagiri kstat_named_t rds_rx_pkts; 46*3302Sagiri kstat_named_t rds_rx_pkts_pending; 47*3302Sagiri kstat_named_t rds_rx_errors; 48*3302Sagiri kstat_named_t rds_tx_acks; 49*3302Sagiri kstat_named_t rds_post_recv_buf_called; 50*3302Sagiri kstat_named_t rds_stalls_triggered; 51*3302Sagiri kstat_named_t rds_stalls_sent; 52*3302Sagiri kstat_named_t rds_unstalls_triggered; 53*3302Sagiri kstat_named_t rds_unstalls_sent; 54*3302Sagiri kstat_named_t rds_stalls_recvd; 55*3302Sagiri kstat_named_t rds_unstalls_recvd; 56*3302Sagiri kstat_named_t rds_stalls_ignored; 57*3302Sagiri kstat_named_t rds_enobufs; 58*3302Sagiri kstat_named_t rds_ewouldblocks; 59*3302Sagiri kstat_named_t rds_failovers; 60*3302Sagiri kstat_named_t rds_port_quota; 61*3302Sagiri kstat_named_t rds_port_quota_adjusted; 62*3302Sagiri }; 63*3302Sagiri 64*3302Sagiri extern void rds_increment_kstat(kstat_named_t *, boolean_t, uint_t); 65*3302Sagiri extern void rds_decrement_kstat(kstat_named_t *, boolean_t, uint_t); 66*3302Sagiri extern void rds_set_kstat(kstat_named_t *, boolean_t, ulong_t); 67*3302Sagiri extern ulong_t rds_get_kstat(kstat_named_t *, boolean_t); 68*3302Sagiri 69*3302Sagiri extern struct rds_kstat_s rds_kstat; 70*3302Sagiri 71*3302Sagiri #define RDS_SET_NPORT(num) \ 72*3302Sagiri rds_set_kstat(&rds_kstat.rds_nports, B_TRUE, num) 73*3302Sagiri #define RDS_INCR_NPORT() \ 74*3302Sagiri rds_increment_kstat(&rds_kstat.rds_nports, B_TRUE, 1) 75*3302Sagiri #define RDS_DECR_NPORT() \ 76*3302Sagiri rds_decrement_kstat(&rds_kstat.rds_nports, B_TRUE, 1) 77*3302Sagiri #define RDS_GET_NPORT() \ 78*3302Sagiri rds_get_kstat(&rds_kstat.rds_nports, B_TRUE) 79*3302Sagiri 80*3302Sagiri #define RDS_INCR_SESS() \ 81*3302Sagiri rds_increment_kstat(&rds_kstat.rds_nsessions, B_FALSE, 1) 82*3302Sagiri #define RDS_DECR_SESS() \ 83*3302Sagiri rds_decrement_kstat(&rds_kstat.rds_nsessions, B_FALSE, 1) 84*3302Sagiri 85*3302Sagiri #define RDS_INCR_TXBYTES(num) \ 86*3302Sagiri rds_increment_kstat(&rds_kstat.rds_tx_bytes, B_FALSE, num) 87*3302Sagiri 88*3302Sagiri #define RDS_INCR_TXPKTS(num) \ 89*3302Sagiri rds_increment_kstat(&rds_kstat.rds_tx_pkts, B_FALSE, num) 90*3302Sagiri 91*3302Sagiri #define RDS_INCR_TXERRS() \ 92*3302Sagiri rds_increment_kstat(&rds_kstat.rds_tx_errors, B_FALSE, 1) 93*3302Sagiri 94*3302Sagiri #define RDS_INCR_RXBYTES(num) \ 95*3302Sagiri rds_increment_kstat(&rds_kstat.rds_rx_bytes, B_FALSE, num) 96*3302Sagiri 97*3302Sagiri #define RDS_INCR_RXPKTS(num) \ 98*3302Sagiri rds_increment_kstat(&rds_kstat.rds_rx_pkts, B_FALSE, num) 99*3302Sagiri 100*3302Sagiri #define RDS_INCR_RXPKTS_PEND(num) \ 101*3302Sagiri rds_increment_kstat(&rds_kstat.rds_rx_pkts_pending, B_TRUE, num) 102*3302Sagiri #define RDS_DECR_RXPKTS_PEND(num) \ 103*3302Sagiri rds_decrement_kstat(&rds_kstat.rds_rx_pkts_pending, B_TRUE, num) 104*3302Sagiri #define RDS_GET_RXPKTS_PEND() \ 105*3302Sagiri rds_get_kstat(&rds_kstat.rds_rx_pkts_pending, B_TRUE) 106*3302Sagiri 107*3302Sagiri #define RDS_INCR_RXERRS() \ 108*3302Sagiri rds_increment_kstat(&rds_kstat.rds_rx_errors, B_FALSE, 1) 109*3302Sagiri 110*3302Sagiri #define RDS_INCR_TXACKS() \ 111*3302Sagiri rds_increment_kstat(&rds_kstat.rds_tx_acks, B_FALSE, 1) 112*3302Sagiri 113*3302Sagiri #define RDS_INCR_POST_RCV_BUF_CALLS() \ 114*3302Sagiri rds_increment_kstat(&rds_kstat.rds_post_recv_buf_called, B_FALSE, 1) 115*3302Sagiri 116*3302Sagiri #define RDS_INCR_STALLS_TRIGGERED() \ 117*3302Sagiri rds_increment_kstat(&rds_kstat.rds_stalls_triggered, B_FALSE, 1) 118*3302Sagiri 119*3302Sagiri #define RDS_INCR_STALLS_SENT() \ 120*3302Sagiri rds_increment_kstat(&rds_kstat.rds_stalls_sent, B_FALSE, 1) 121*3302Sagiri 122*3302Sagiri #define RDS_INCR_UNSTALLS_TRIGGERED() \ 123*3302Sagiri rds_increment_kstat(&rds_kstat.rds_unstalls_triggered, B_FALSE, 1) 124*3302Sagiri 125*3302Sagiri #define RDS_INCR_UNSTALLS_SENT() \ 126*3302Sagiri rds_increment_kstat(&rds_kstat.rds_unstalls_sent, B_FALSE, 1) 127*3302Sagiri 128*3302Sagiri #define RDS_INCR_STALLS_RCVD() \ 129*3302Sagiri rds_increment_kstat(&rds_kstat.rds_stalls_recvd, B_FALSE, 1) 130*3302Sagiri 131*3302Sagiri #define RDS_INCR_UNSTALLS_RCVD() \ 132*3302Sagiri rds_increment_kstat(&rds_kstat.rds_unstalls_recvd, B_FALSE, 1) 133*3302Sagiri 134*3302Sagiri #define RDS_INCR_STALLS_IGNORED() \ 135*3302Sagiri rds_increment_kstat(&rds_kstat.rds_stalls_ignored, B_FALSE, 1) 136*3302Sagiri 137*3302Sagiri #define RDS_INCR_ENOBUFS() \ 138*3302Sagiri rds_increment_kstat(&rds_kstat.rds_enobufs, B_FALSE, 1) 139*3302Sagiri 140*3302Sagiri #define RDS_INCR_EWOULDBLOCK() \ 141*3302Sagiri rds_increment_kstat(&rds_kstat.rds_ewouldblocks, B_FALSE, 1) 142*3302Sagiri 143*3302Sagiri #define RDS_INCR_FAILOVERS() \ 144*3302Sagiri rds_increment_kstat(&rds_kstat.rds_failovers, B_FALSE, 1) 145*3302Sagiri 146*3302Sagiri #define RDS_SET_PORT_QUOTA(num) \ 147*3302Sagiri rds_set_kstat(&rds_kstat.rds_port_quota, B_TRUE, num) 148*3302Sagiri #define RDS_GET_PORT_QUOTA() \ 149*3302Sagiri rds_get_kstat(&rds_kstat.rds_port_quota, B_TRUE) 150*3302Sagiri 151*3302Sagiri #define RDS_INCR_PORT_QUOTA_ADJUSTED() \ 152*3302Sagiri rds_increment_kstat(&rds_kstat.rds_port_quota_adjusted, B_FALSE, 1) 153*3302Sagiri 154*3302Sagiri 155*3302Sagiri #ifdef __cplusplus 156*3302Sagiri } 157*3302Sagiri #endif 158*3302Sagiri 159*3302Sagiri #endif /* _RDS_KSTAT_H */ 160