4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _SYS_MAC_ETHER_H
27 #define _SYS_MAC_ETHER_H
39 #define MAC_PLUGIN_IDENT_ETHER "mac_ether"
42 * Do not reorder, and add only to the end of this list.
46 ETHER_STAT_ALIGN_ERRORS
= MACTYPE_STAT_MIN
,
47 ETHER_STAT_FCS_ERRORS
,
48 ETHER_STAT_FIRST_COLLISIONS
,
49 ETHER_STAT_MULTI_COLLISIONS
,
50 ETHER_STAT_SQE_ERRORS
,
51 ETHER_STAT_DEFER_XMTS
,
52 ETHER_STAT_TX_LATE_COLLISIONS
,
53 ETHER_STAT_EX_COLLISIONS
,
54 ETHER_STAT_MACXMT_ERRORS
,
55 ETHER_STAT_CARRIER_ERRORS
,
56 ETHER_STAT_TOOLONG_ERRORS
,
57 ETHER_STAT_MACRCV_ERRORS
,
62 ETHER_STAT_XCVR_INUSE
,
63 ETHER_STAT_CAP_1000FDX
,
64 ETHER_STAT_CAP_1000HDX
,
65 ETHER_STAT_CAP_100FDX
,
66 ETHER_STAT_CAP_100HDX
,
69 ETHER_STAT_CAP_ASMPAUSE
,
71 ETHER_STAT_CAP_AUTONEG
,
72 ETHER_STAT_ADV_CAP_1000FDX
,
73 ETHER_STAT_ADV_CAP_1000HDX
,
74 ETHER_STAT_ADV_CAP_100FDX
,
75 ETHER_STAT_ADV_CAP_100HDX
,
76 ETHER_STAT_ADV_CAP_10FDX
,
77 ETHER_STAT_ADV_CAP_10HDX
,
78 ETHER_STAT_ADV_CAP_ASMPAUSE
,
79 ETHER_STAT_ADV_CAP_PAUSE
,
80 ETHER_STAT_ADV_CAP_AUTONEG
,
81 ETHER_STAT_LP_CAP_1000FDX
,
82 ETHER_STAT_LP_CAP_1000HDX
,
83 ETHER_STAT_LP_CAP_100FDX
,
84 ETHER_STAT_LP_CAP_100HDX
,
85 ETHER_STAT_LP_CAP_10FDX
,
86 ETHER_STAT_LP_CAP_10HDX
,
87 ETHER_STAT_LP_CAP_ASMPAUSE
,
88 ETHER_STAT_LP_CAP_PAUSE
,
89 ETHER_STAT_LP_CAP_AUTONEG
,
90 ETHER_STAT_LINK_ASMPAUSE
,
91 ETHER_STAT_LINK_PAUSE
,
92 ETHER_STAT_LINK_AUTONEG
,
93 ETHER_STAT_LINK_DUPLEX
,
95 ETHER_STAT_TOOSHORT_ERRORS
,
96 ETHER_STAT_CAP_REMFAULT
,
97 ETHER_STAT_ADV_REMFAULT
,
98 ETHER_STAT_LP_REMFAULT
,
100 ETHER_STAT_JABBER_ERRORS
,
101 ETHER_STAT_CAP_100T4
,
102 ETHER_STAT_ADV_CAP_100T4
,
103 ETHER_STAT_LP_CAP_100T4
,
105 ETHER_STAT_CAP_10GFDX
,
106 ETHER_STAT_ADV_CAP_10GFDX
,
107 ETHER_STAT_LP_CAP_10GFDX
,
110 #define ETHER_NSTAT (ETHER_STAT_LP_CAP_10GFDX - ETHER_STAT_ALIGN_ERRORS + 1)
112 #define ETHER_STAT_ISACOUNTER(_ether_stat) \
113 ((_ether_stat) == ETHER_STAT_ALIGN_ERRORS || \
114 (_ether_stat) == ETHER_STAT_FCS_ERRORS || \
115 (_ether_stat) == ETHER_STAT_FIRST_COLLISIONS || \
116 (_ether_stat) == ETHER_STAT_MULTI_COLLISIONS || \
117 (_ether_stat) == ETHER_STAT_SQE_ERRORS || \
118 (_ether_stat) == ETHER_STAT_DEFER_XMTS || \
119 (_ether_stat) == ETHER_STAT_TX_LATE_COLLISIONS || \
120 (_ether_stat) == ETHER_STAT_EX_COLLISIONS || \
121 (_ether_stat) == ETHER_STAT_MACXMT_ERRORS || \
122 (_ether_stat) == ETHER_STAT_CARRIER_ERRORS || \
123 (_ether_stat) == ETHER_STAT_TOOLONG_ERRORS || \
124 (_ether_stat) == ETHER_STAT_TOOSHORT_ERRORS || \
125 (_ether_stat) == ETHER_STAT_JABBER_ERRORS || \
126 (_ether_stat) == ETHER_STAT_MACRCV_ERRORS)
129 * Some drivers have a need to determine if a particular stat is a MII/GMII
130 * physical layer 802.3 stat.
132 #define ETHER_STAT_ISMII(_ether_stat) \
133 ((_ether_stat) == ETHER_STAT_XCVR_ADDR || \
134 (_ether_stat) == ETHER_STAT_XCVR_ID || \
135 (_ether_stat) == ETHER_STAT_XCVR_INUSE || \
136 (_ether_stat) == ETHER_STAT_CAP_1000FDX || \
137 (_ether_stat) == ETHER_STAT_CAP_1000HDX || \
138 (_ether_stat) == ETHER_STAT_CAP_100FDX || \
139 (_ether_stat) == ETHER_STAT_CAP_100HDX || \
140 (_ether_stat) == ETHER_STAT_CAP_10FDX || \
141 (_ether_stat) == ETHER_STAT_CAP_10HDX || \
142 (_ether_stat) == ETHER_STAT_CAP_ASMPAUSE || \
143 (_ether_stat) == ETHER_STAT_CAP_PAUSE || \
144 (_ether_stat) == ETHER_STAT_CAP_AUTONEG || \
145 (_ether_stat) == ETHER_STAT_CAP_REMFAULT || \
146 (_ether_stat) == ETHER_STAT_CAP_100T4 || \
147 (_ether_stat) == ETHER_STAT_ADV_CAP_1000FDX || \
148 (_ether_stat) == ETHER_STAT_ADV_CAP_1000HDX || \
149 (_ether_stat) == ETHER_STAT_ADV_CAP_100FDX || \
150 (_ether_stat) == ETHER_STAT_ADV_CAP_100HDX || \
151 (_ether_stat) == ETHER_STAT_ADV_CAP_10FDX || \
152 (_ether_stat) == ETHER_STAT_ADV_CAP_10HDX || \
153 (_ether_stat) == ETHER_STAT_ADV_CAP_ASMPAUSE || \
154 (_ether_stat) == ETHER_STAT_ADV_CAP_PAUSE || \
155 (_ether_stat) == ETHER_STAT_ADV_CAP_AUTONEG || \
156 (_ether_stat) == ETHER_STAT_ADV_REMFAULT || \
157 (_ether_stat) == ETHER_STAT_ADV_CAP_100T4 || \
158 (_ether_stat) == ETHER_STAT_LP_CAP_1000FDX || \
159 (_ether_stat) == ETHER_STAT_LP_CAP_1000HDX || \
160 (_ether_stat) == ETHER_STAT_LP_CAP_100FDX || \
161 (_ether_stat) == ETHER_STAT_LP_CAP_100HDX || \
162 (_ether_stat) == ETHER_STAT_LP_CAP_10FDX || \
163 (_ether_stat) == ETHER_STAT_LP_CAP_10HDX || \
164 (_ether_stat) == ETHER_STAT_LP_CAP_ASMPAUSE || \
165 (_ether_stat) == ETHER_STAT_LP_CAP_PAUSE || \
166 (_ether_stat) == ETHER_STAT_LP_CAP_AUTONEG || \
167 (_ether_stat) == ETHER_STAT_LP_REMFAULT || \
168 (_ether_stat) == ETHER_STAT_LP_CAP_100T4 || \
169 (_ether_stat) == ETHER_STAT_LINK_ASMPAUSE || \
170 (_ether_stat) == ETHER_STAT_LINK_PAUSE || \
171 (_ether_stat) == ETHER_STAT_LINK_AUTONEG || \
172 (_ether_stat) == ETHER_STAT_LINK_DUPLEX)
180 #endif /* _SYS_MAC_ETHER_H */