b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri/*
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * CDDL HEADER START
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri *
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * The contents of this file are subject to the terms of the
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * Common Development and Distribution License (the "License").
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * You may not use this file except in compliance with the License.
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri *
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * or http://www.opensolaris.org/os/licensing.
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * See the License for the specific language governing permissions
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * and limitations under the License.
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri *
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * When distributing Covered Code, include this CDDL HEADER in each
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * If applicable, add the following below this CDDL HEADER, with the
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * fields enclosed by brackets "[]" replaced with your own identifying
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * information: Portions Copyright [yyyy] [name of copyright owner]
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri *
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * CDDL HEADER END
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri */
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri/*
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri * Use is subject to license terms.
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri */
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#ifndef _RDS_KSTAT_H
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define _RDS_KSTAT_H
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#pragma ident "%Z%%M% %I% %E% SMI"
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#ifdef __cplusplus
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiriextern "C" {
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#endif
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#include <sys/types.h>
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#include <sys/kstat.h>
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiristruct rds_kstat_s {
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_nports;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_nsessions;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_tx_bytes;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_tx_pkts;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_tx_errors;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_rx_bytes;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_rx_pkts;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_rx_pkts_pending;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_rx_errors;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_tx_acks;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_post_recv_buf_called;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_stalls_triggered;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_stalls_sent;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_unstalls_triggered;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_unstalls_sent;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_stalls_recvd;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_unstalls_recvd;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_stalls_ignored;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_enobufs;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_ewouldblocks;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_failovers;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_port_quota;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri kstat_named_t rds_port_quota_adjusted;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri};
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiriextern void rds_increment_kstat(kstat_named_t *, boolean_t, uint_t);
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiriextern void rds_decrement_kstat(kstat_named_t *, boolean_t, uint_t);
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiriextern void rds_set_kstat(kstat_named_t *, boolean_t, ulong_t);
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiriextern ulong_t rds_get_kstat(kstat_named_t *, boolean_t);
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiriextern struct rds_kstat_s rds_kstat;
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_SET_NPORT(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_set_kstat(&rds_kstat.rds_nports, B_TRUE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_NPORT() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_nports, B_TRUE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_DECR_NPORT() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_decrement_kstat(&rds_kstat.rds_nports, B_TRUE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_GET_NPORT() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_get_kstat(&rds_kstat.rds_nports, B_TRUE)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_SESS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_nsessions, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_DECR_SESS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_decrement_kstat(&rds_kstat.rds_nsessions, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_TXBYTES(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_tx_bytes, B_FALSE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_TXPKTS(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_tx_pkts, B_FALSE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_TXERRS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_tx_errors, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_RXBYTES(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_rx_bytes, B_FALSE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_RXPKTS(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_rx_pkts, B_FALSE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_RXPKTS_PEND(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_rx_pkts_pending, B_TRUE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_DECR_RXPKTS_PEND(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_decrement_kstat(&rds_kstat.rds_rx_pkts_pending, B_TRUE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_GET_RXPKTS_PEND() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_get_kstat(&rds_kstat.rds_rx_pkts_pending, B_TRUE)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_RXERRS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_rx_errors, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_TXACKS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_tx_acks, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_POST_RCV_BUF_CALLS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_post_recv_buf_called, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_STALLS_TRIGGERED() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_stalls_triggered, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_STALLS_SENT() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_stalls_sent, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_UNSTALLS_TRIGGERED() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_unstalls_triggered, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_UNSTALLS_SENT() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_unstalls_sent, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_STALLS_RCVD() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_stalls_recvd, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_UNSTALLS_RCVD() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_unstalls_recvd, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_STALLS_IGNORED() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_stalls_ignored, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_ENOBUFS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_enobufs, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_EWOULDBLOCK() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_ewouldblocks, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_FAILOVERS() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_failovers, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_SET_PORT_QUOTA(num) \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_set_kstat(&rds_kstat.rds_port_quota, B_TRUE, num)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_GET_PORT_QUOTA() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_get_kstat(&rds_kstat.rds_port_quota, B_TRUE)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#define RDS_INCR_PORT_QUOTA_ADJUSTED() \
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri rds_increment_kstat(&rds_kstat.rds_port_quota_adjusted, B_FALSE, 1)
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#ifdef __cplusplus
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri}
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#endif
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri
b86efd96f8acd85ddaa930a2f0c1d664237e4aafagiri#endif /* _RDS_KSTAT_H */