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