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