0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer/*
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * CDDL HEADER START
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer *
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * The contents of this file are subject to the terms of the
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * Common Development and Distribution License (the "License").
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * You may not use this file except in compliance with the License.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer *
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * or http://www.opensolaris.org/os/licensing.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * See the License for the specific language governing permissions
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * and limitations under the License.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer *
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * When distributing Covered Code, include this CDDL HEADER in each
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * If applicable, add the following below this CDDL HEADER, with the
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * fields enclosed by brackets "[]" replaced with your own identifying
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * information: Portions Copyright [yyyy] [name of copyright owner]
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer *
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * CDDL HEADER END
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer/*
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * Use is subject to license terms.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#ifndef _MAC_STAT_H
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#define _MAC_STAT_H
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#include <sys/mac_flow_impl.h>
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#ifdef __cplusplus
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern "C" {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#endif
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#ifdef __cplusplus
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer}
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#endif
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerstruct mac_soft_ring_set_s;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerstruct mac_soft_ring_s;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyertypedef struct mac_rx_stats_s {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_lclbytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_lclcnt;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_pollcnt;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_pollbytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_intrcnt;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_intrbytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_sdrops;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_chaincntundr10;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_chaincnt10to50;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_chaincntover50;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mrs_ierrors;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer} mac_rx_stats_t;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyertypedef struct mac_tx_stats_s {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mts_obytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mts_opackets;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mts_oerrors;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer /*
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * Number of times the srs gets blocked due to lack of Tx
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * desc is noted down. Corresponding wakeup from driver
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * to unblock is also noted down. They should match in a
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * correctly working setup. If there is less unblocks
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * than blocks, then Tx side waits forever for a wakeup
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * from below. The following protected by srs_lock.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mts_blockcnt; /* times blocked for Tx descs */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mts_unblockcnt; /* unblock calls from driver */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mts_sdrops;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer} mac_tx_stats_t;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyertypedef struct mac_misc_stats_s {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_multircv;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_brdcstrcv;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_multixmt;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_brdcstxmt;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_multircvbytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_brdcstrcvbytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_multixmtbytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_brdcstxmtbytes;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_txerrors; /* vid_check, tag needed errors */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer /*
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * When a ring is taken away from a mac client, before destroying
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * corresponding SRS (for rx ring) or soft ring (for tx ring), add stats
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * recorded by that SRS or soft ring to defunct lane stats.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer mac_rx_stats_t mms_defunctrxlanestats;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer mac_tx_stats_t mms_defuncttxlanestats;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer /* link protection stats */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_macspoofed;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_ipspoofed;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_dhcpspoofed;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_restricted;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer uint64_t mms_dhcpdropped;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer} mac_misc_stats_t;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_misc_stat_create(flow_entry_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_misc_stat_delete(flow_entry_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_ring_stat_create(mac_ring_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_ring_stat_delete(mac_ring_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_srs_stat_create(struct mac_soft_ring_set_s *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_srs_stat_delete(struct mac_soft_ring_set_s *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_tx_srs_stat_recreate(struct mac_soft_ring_set_s *,
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer boolean_t);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_soft_ring_stat_create(struct mac_soft_ring_s *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_soft_ring_stat_delete(struct mac_soft_ring_s *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_stat_rename(mac_client_impl_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_pseudo_ring_stat_rename(mac_impl_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_driver_stat_create(mac_impl_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern void mac_driver_stat_delete(mac_impl_t *);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern uint64_t mac_driver_stat_default(mac_impl_t *, uint_t);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern uint64_t mac_rx_ring_stat_get(void *, uint_t);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyerextern uint64_t mac_tx_ring_stat_get(void *, uint_t);
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#endif /* _MAC_STAT_H */