1/*
2 * Copyright (c) 1998-2008 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License").  You may not use this file except in compliance with the
9 * License.  Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22/*
23 * IOEthernetStats.h - Ethernet MIB statistics definitions.
24 *
25 * HISTORY
26 */
27
28#ifndef _IOETHERNETSTATS_H
29#define _IOETHERNETSTATS_H
30
31/*! @header IOEthernetStats.h
32    @discussion Ethernet statistics. */
33
34//---------------------------------------------------------------------------
35// Ethernet-like statistics group.
36
37/*! @typedef IODot3StatsEntry
38    @discussion Ethernet MIB statistics structure.
39    @field alignmentErrors            dot3StatsAlignmentErrors.
40    @field fcsErrors                  dot3StatsFCSErrors.
41    @field singleCollisionFrames      dot3StatsSingleCollisionFrames.
42    @field multipleCollisionFrames    dot3StatsMultipleCollisionFrames.
43    @field sqeTestErrors              dot3StatsSQETestErrors.
44    @field deferredTransmissions      dot3StatsDeferredTransmissions.
45    @field lateCollisions             dot3StatsLateCollisions.
46    @field excessiveCollisions        dot3StatsExcessiveCollisions.
47    @field internalMacTransmitErrors  dot3StatsInternalMacTransmitErrors.
48    @field carrierSenseErrors         dot3StatsCarrierSenseErrors.
49    @field frameTooLongs              dot3StatsFrameTooLongs.
50    @field internalMacReceiveErrors   dot3StatsInternalMacReceiveErrors.
51    @field etherChipSet               dot3StatsEtherChipSet.
52    @field missedFrames               dot3StatsMissedFrames (not in RFC1650).
53    */
54
55typedef struct {
56    UInt32 alignmentErrors;
57    UInt32 fcsErrors;
58    UInt32 singleCollisionFrames;
59    UInt32 multipleCollisionFrames;
60    UInt32 sqeTestErrors;
61    UInt32 deferredTransmissions;
62    UInt32 lateCollisions;
63    UInt32 excessiveCollisions;
64    UInt32 internalMacTransmitErrors;
65    UInt32 carrierSenseErrors;
66    UInt32 frameTooLongs;
67    UInt32 internalMacReceiveErrors;
68    UInt32 etherChipSet;
69    UInt32 missedFrames;
70} IODot3StatsEntry;
71
72//---------------------------------------------------------------------------
73// Ethernet-like collision statistics group (optional).
74
75/*! @typedef IODot3CollEntry
76    @discussion Collision statistics structure.
77    @field collFrequencies            dot3StatsCollFrequencies. */
78
79typedef struct {
80    UInt32 collFrequencies[16];
81} IODot3CollEntry;
82
83//---------------------------------------------------------------------------
84// Receiver extra statistics group (not defined by RFC 1650).
85
86/*! @typedef IODot3RxExtraEntry
87    @discussion Extra receiver statistics not defined by RFC1650.
88    @field overruns            receiver overruns.
89    @field watchdogTimeouts    watchdog timer expirations.
90    @field frameTooShorts      runt frames.
91    @field collisionErrors     frames damages by late collision.
92    @field phyErrors           PHY receive errors.
93    @field timeouts            receiver timeouts.
94    @field interrupts          receiver interrupts.
95    @field resets              receiver resets.
96    @field resourceErrors      receiver resource shortages.
97    */
98
99typedef struct {
100    UInt32 overruns;
101    UInt32 watchdogTimeouts;
102    UInt32 frameTooShorts;
103    UInt32 collisionErrors;
104    UInt32 phyErrors;
105    UInt32 timeouts;
106    UInt32 interrupts;
107    UInt32 resets;
108    UInt32 resourceErrors;
109    UInt32 reserved[4];
110} IODot3RxExtraEntry;
111
112//---------------------------------------------------------------------------
113// Transmitter extra statistics group (not defined by RFC 1650).
114
115/*! @typedef IODot3TxExtraEntry
116    @discussion Extra transmitter statistics not defined by RFC1650.
117    @field underruns           transmit underruns.
118    @field jabbers             jabber events.
119    @field phyErrors           PHY transmit errors.
120    @field timeouts            transmitter timeouts.
121    @field interrupts          transmitter interrupts.
122    @field resets              transmitter resets.
123    @field resourceErrors      transmitter resource shortages.
124    */
125
126typedef struct {
127    UInt32 underruns;
128    UInt32 jabbers;
129    UInt32 phyErrors;
130    UInt32 timeouts;
131    UInt32 interrupts;
132    UInt32 resets;
133    UInt32 resourceErrors;
134    UInt32 reserved[4];
135} IODot3TxExtraEntry;
136
137//---------------------------------------------------------------------------
138// Aggregate Ethernet statistics.
139
140/*! @typedef IOEthernetStats
141    @discussion Aggregate Ethernet statistics structure.
142    @field dot3StatsEntry      IODot3StatsEntry statistics group.
143    @field dot3CollEntry       IODot3CollEntry statistics group.
144    @field dot3RxExtraEntry    IODot3RxExtraEntry statistics group.
145    @field dot3TxExtraEntry    IODot3TxExtraEntry statistics group.
146    */
147
148typedef struct {
149    IODot3StatsEntry    dot3StatsEntry;
150    IODot3CollEntry     dot3CollEntry;
151    IODot3RxExtraEntry  dot3RxExtraEntry;
152    IODot3TxExtraEntry  dot3TxExtraEntry;
153} IOEthernetStats;
154
155/*! @defined kIOEthernetStatsKey
156    @discussion Defines the name of an IONetworkData that contains
157    an IOEthernetStats. */
158
159#define kIOEthernetStatsKey             "IOEthernetStatsKey"
160
161#endif /* !_IOETHERNETSTATS_H */
162