xref: /illumos-gate/usr/src/man/man9e/mri_stat.9e (revision 496cffd827ea5c0cfa90411f7cd92c6a6f6bb8fc)
12c0ebdeeSRobert Mustacchi.\"
22c0ebdeeSRobert Mustacchi.\" This file and its contents are supplied under the terms of the
32c0ebdeeSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
42c0ebdeeSRobert Mustacchi.\" You may only use this file in accordance with the terms of version
52c0ebdeeSRobert Mustacchi.\" 1.0 of the CDDL.
62c0ebdeeSRobert Mustacchi.\"
72c0ebdeeSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
82c0ebdeeSRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
92c0ebdeeSRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
102c0ebdeeSRobert Mustacchi.\"
112c0ebdeeSRobert Mustacchi.\"
122c0ebdeeSRobert Mustacchi.\" Copyright (c) 2017, Joyent, Inc.
132c0ebdeeSRobert Mustacchi.\" Copyright 2022 Oxide Computer Company
14*496cffd8SPeter Tribble.\" Copyright 2023 Peter Tribble
152c0ebdeeSRobert Mustacchi.\"
16*496cffd8SPeter Tribble.Dd July 17, 2023
172c0ebdeeSRobert Mustacchi.Dt MRI_STAT 9E
182c0ebdeeSRobert Mustacchi.Os
192c0ebdeeSRobert Mustacchi.Sh NAME
202c0ebdeeSRobert Mustacchi.Nm mri_stat
21*496cffd8SPeter Tribble.Nd statistics collection entry point for rings
222c0ebdeeSRobert Mustacchi.Sh SYNOPSIS
232c0ebdeeSRobert Mustacchi.In sys/mac_provider.h
242c0ebdeeSRobert Mustacchi.Ft int
252c0ebdeeSRobert Mustacchi.Fo prefix_ring_stat
262c0ebdeeSRobert Mustacchi.Fa "mac_ring_driver_t rh"
272c0ebdeeSRobert Mustacchi.Fa "uint_t stat"
282c0ebdeeSRobert Mustacchi.Fa "uint64_t *val"
292c0ebdeeSRobert Mustacchi.Fc
302c0ebdeeSRobert Mustacchi.Sh INTERFACE LEVEL
312c0ebdeeSRobert Mustacchi.Sy Uncommitted -
322c0ebdeeSRobert MustacchiThis interface is still evolving.
332c0ebdeeSRobert MustacchiAPI and ABI stability is not guaranteed.
342c0ebdeeSRobert Mustacchi.Sh PARAMETERS
352c0ebdeeSRobert Mustacchi.Bl -tag -width Fa
362c0ebdeeSRobert Mustacchi.It Fa rh
372c0ebdeeSRobert MustacchiA pointer to the ring's private data that was passed in via the
382c0ebdeeSRobert Mustacchi.Vt mri_driver
392c0ebdeeSRobert Mustacchimember of the
402c0ebdeeSRobert Mustacchi.Xr mac_ring_info 9S
412c0ebdeeSRobert Mustacchistructure as part of the
422c0ebdeeSRobert Mustacchi.Xr mr_rget 9E
432c0ebdeeSRobert Mustacchientry point.
442c0ebdeeSRobert Mustacchi.It Fa stat
452c0ebdeeSRobert MustacchiThe numeric identifier of a statistic.
462c0ebdeeSRobert Mustacchi.It Fa val
472c0ebdeeSRobert MustacchiA pointer to a 64-bit unsigned value into which the device driver should
482c0ebdeeSRobert Mustacchiplace statistic.
492c0ebdeeSRobert Mustacchi.El
502c0ebdeeSRobert Mustacchi.Sh DESCRIPTION
512c0ebdeeSRobert MustacchiThe
522c0ebdeeSRobert Mustacchi.Fn mri_stat
532c0ebdeeSRobert Mustacchientry point is called by the MAC framework to get statistics that have
542c0ebdeeSRobert Mustacchibeen scoped to the ring, indicated by
552c0ebdeeSRobert Mustacchi.Fa rh .
562c0ebdeeSRobert Mustacchi.Pp
572c0ebdeeSRobert MustacchiThe set of statistics that the driver should check depends on the kind
582c0ebdeeSRobert Mustacchiof ring that is in use.
592c0ebdeeSRobert MustacchiIf the driver encounters an unknown statistic it should return
602c0ebdeeSRobert Mustacchi.Er ENOTSUP .
612c0ebdeeSRobert MustacchiAll the statistics should be values that are scoped to the ring itself.
622c0ebdeeSRobert MustacchiThis is in contrast to the normal
632c0ebdeeSRobert Mustacchi.Xr mc_getstat 9E
642c0ebdeeSRobert Mustacchientry point, which has statistics for the entire device.
652c0ebdeeSRobert MustacchiOther than the scoping, the statistics listed below have the same
662c0ebdeeSRobert Mustacchimeaning as they do in the
672c0ebdeeSRobert Mustacchi.Sx STATISTICS
682c0ebdeeSRobert Mustacchisection of
692c0ebdeeSRobert Mustacchi.Xr mac 9E .
702c0ebdeeSRobert MustacchiSee
712c0ebdeeSRobert Mustacchi.Xr mac 9E
722c0ebdeeSRobert Mustacchifor more details of those statistics.
732c0ebdeeSRobert Mustacchi.Pp
742c0ebdeeSRobert MustacchiReceive rings should support the following statistics:
752c0ebdeeSRobert Mustacchi.Bl -bullet
762c0ebdeeSRobert Mustacchi.It
772c0ebdeeSRobert Mustacchi.Dv MAC_STAT_IPACKETS
782c0ebdeeSRobert Mustacchi.It
792c0ebdeeSRobert Mustacchi.Dv MAC_STAT_RBYTES
802c0ebdeeSRobert Mustacchi.El
812c0ebdeeSRobert Mustacchi.Pp
82*496cffd8SPeter TribbleTransmit rings should support the following statistics:
832c0ebdeeSRobert Mustacchi.Bl -bullet
842c0ebdeeSRobert Mustacchi.It
852c0ebdeeSRobert Mustacchi.Dv MAC_STAT_OBYTES
862c0ebdeeSRobert Mustacchi.It
872c0ebdeeSRobert Mustacchi.Dv MAC_STAT_OPACKETS
882c0ebdeeSRobert Mustacchi.El
892c0ebdeeSRobert Mustacchi.Sh EXAMPLES
902c0ebdeeSRobert MustacchiThe following example shows how a driver might structure its
912c0ebdeeSRobert Mustacchi.Fn mri_stat
922c0ebdeeSRobert Mustacchientry point.
932c0ebdeeSRobert Mustacchi.Bd -literal
942c0ebdeeSRobert Mustacchi#include <sys/mac_provider.h>
952c0ebdeeSRobert Mustacchi
962c0ebdeeSRobert Mustacchi/*
972c0ebdeeSRobert Mustacchi * Note, this example merely shows the structure of the function. For
982c0ebdeeSRobert Mustacchi * the purpose of this example, we assume that we have a per-ring
992c0ebdeeSRobert Mustacchi * structure which has members that indicate its stats and that it has a
1002c0ebdeeSRobert Mustacchi * lock which is used to serialize access to this data.
1012c0ebdeeSRobert Mustacchi */
1022c0ebdeeSRobert Mustacchi
1032c0ebdeeSRobert Mustacchistatic int
1042c0ebdeeSRobert Mustacchiexample_tx_ring_stat(mac_ring_driver_t rh, uint_t stat, uint64_t *val)
1052c0ebdeeSRobert Mustacchi{
1062c0ebdeeSRobert Mustacchi	example_tx_ring_t *etrp = arg;
1072c0ebdeeSRobert Mustacchi
1082c0ebdeeSRobert Mustacchi	mutex_enter(&etrp->etrp_lock);
1092c0ebdeeSRobert Mustacchi	switch (stat) {
1102c0ebdeeSRobert Mustacchi	case MAC_STAT_OBYTES:
1112c0ebdeeSRobert Mustacchi		*val = etrp->etrp_stats.eps_obytes;
1122c0ebdeeSRobert Mustacchi		break;
1132c0ebdeeSRobert Mustacchi	case MAC_STAT_OPACKETS:
1142c0ebdeeSRobert Mustacchi		*val = etrp->etrp_stats.eps_opackets;
1152c0ebdeeSRobert Mustacchi		break;
1162c0ebdeeSRobert Mustacchi	default:
1172c0ebdeeSRobert Mustacchi		mutex_exit(&etrp->etrp_lock);
1182c0ebdeeSRobert Mustacchi		return (ENOTSUP);
1192c0ebdeeSRobert Mustacchi	}
1202c0ebdeeSRobert Mustacchi	mutex_exit(&etrp->etrp_lock);
1212c0ebdeeSRobert Mustacchi
1222c0ebdeeSRobert Mustacchi	return (0);
1232c0ebdeeSRobert Mustacchi}
1242c0ebdeeSRobert Mustacchi
1252c0ebdeeSRobert Mustacchistatic int
1262c0ebdeeSRobert Mustacchiexample_rx_ring_stat(mac_ring_driver_t rh, uint_t stat, uint64_t *val)
1272c0ebdeeSRobert Mustacchi{
1282c0ebdeeSRobert Mustacchi	example_rx_ring_t *errp = arg;
1292c0ebdeeSRobert Mustacchi
1302c0ebdeeSRobert Mustacchi	mutex_enter(&errp->errp_lock);
1312c0ebdeeSRobert Mustacchi	switch (stat) {
1322c0ebdeeSRobert Mustacchi	case MAC_STAT_RBYTES:
1332c0ebdeeSRobert Mustacchi		*val = errp->errp_stats.eps_ibytes;
1342c0ebdeeSRobert Mustacchi		break;
1352c0ebdeeSRobert Mustacchi	case MAC_STAT_IPACKETS:
1362c0ebdeeSRobert Mustacchi		*val = errp->errp_stats.eps_ipackets;
1372c0ebdeeSRobert Mustacchi		break;
1382c0ebdeeSRobert Mustacchi	default:
1392c0ebdeeSRobert Mustacchi		mutex_exit(&errp->errp_lock);
1402c0ebdeeSRobert Mustacchi		return (ENOTSUP);
1412c0ebdeeSRobert Mustacchi	}
1422c0ebdeeSRobert Mustacchi	mutex_exit(&errp->errp_lock);
1432c0ebdeeSRobert Mustacchi
1442c0ebdeeSRobert Mustacchi	return (0);
1452c0ebdeeSRobert Mustacchi}
1462c0ebdeeSRobert Mustacchi.Ed
1472c0ebdeeSRobert Mustacchi.Sh ERRORS
1482c0ebdeeSRobert MustacchiThe device driver may return one of the following errors.
149*496cffd8SPeter TribbleWhile this list is not intended to be exhaustive, it is recommended to use
1502c0ebdeeSRobert Mustacchione of these if possible.
1512c0ebdeeSRobert Mustacchi.Bl -tag -width Er
1522c0ebdeeSRobert Mustacchi.It Er ENOTSUP
1532c0ebdeeSRobert MustacchiThe specified statistic is unknown, unsupported, or unimplemented.
1542c0ebdeeSRobert Mustacchi.It Er EIO
1552c0ebdeeSRobert MustacchiA transport or DMA FM related error occurred while trying to sync data
1562c0ebdeeSRobert Mustacchifrom the device.
1572c0ebdeeSRobert Mustacchi.It Er ECANCELLED
1582c0ebdeeSRobert MustacchiThe device is not currently in a state where it can currently service
1592c0ebdeeSRobert Mustacchithe request.
1602c0ebdeeSRobert Mustacchi.El
1612c0ebdeeSRobert Mustacchi.Sh SEE ALSO
1622c0ebdeeSRobert Mustacchi.Xr mac 9E ,
1632c0ebdeeSRobert Mustacchi.Xr mac_capab_rings 9E ,
1642c0ebdeeSRobert Mustacchi.Xr mc_getstat 9E ,
1652c0ebdeeSRobert Mustacchi.Xr mr_rget 9E ,
1662c0ebdeeSRobert Mustacchi.Xr mac_ring_info 9S
167