8699 Want NIC transceiver visibility
[unleashed.git] / usr / src / lib / libsff / common / sff.h
blobd3b64e7fba6ab8de5c4d1f9c29ecb58ce361ea40
1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
13 * Copyright (c) 2017, Joyent, Inc.
16 #ifndef _SFF_H
17 #define _SFF_H
20 * Definitions internal to libsfp for various SFF versions. This generally
21 * contains offsets for each byte and its purpose. The meaning of the values are
22 * not generally found in this header.
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
30 * This table is derived from SFF 8024 Section 4.1, Table 4-1.
32 typedef enum sff_8024_id {
33 SFF_8024_ID_UNKNOWN = 0x00,
34 SFF_8024_ID_GBIC = 0x01,
35 SFF_8024_ID_SOLDERED = 0x02,
36 SFF_8024_ID_SFP = 0x03, /* SFP, SFP+, SFP28 */
37 SFF_8024_ID_XBI = 0x04,
38 SFF_8024_ID_XENPAK = 0x05,
39 SFF_8024_ID_XFP = 0x06,
40 SFF_8024_ID_XFF = 0x07,
41 SFF_8024_ID_XFP_E = 0x08,
42 SFF_8024_ID_XPAK = 0x09,
43 SFF_8024_ID_X2 = 0x0A,
44 SFF_8024_ID_DWDM_SFP = 0x0B,
45 SFF_8024_ID_QSFP = 0x0C,
46 SFF_8024_ID_QSFP_PLUS = 0x0D,
47 SFF_8024_ID_CXP = 0x0E,
48 SFF_8024_ID_SMMHD4X = 0x0F,
49 SFF_8024_ID_SMMHD8X = 0x10,
50 SFF_8024_ID_QSFP28 = 0x11,
51 SFF_8024_ID_CXP2 = 0x12,
52 SFF_8024_ID_CDFP = 0x13,
53 SFF_8024_ID_SMMHD4XF = 0x14,
54 SFF_8024_ID_SMMHD8XF = 0x15,
55 SFF_8024_ID_CDFP3 = 0x16,
56 SFF_8024_ID_MICROQSFP = 0x17,
57 SFF_8024_NIDS = 0x18,
58 SFF_8024_VENDOR = 0x80
59 } sff_8024_id_t;
63 * Byte offsets for SFF-8472. Note that most of this applies to INF-8074.
64 * Generally speaking, SFF-8472 is a backwards compatible evolution of INF-8074.
66 #define SFF_8472_IDENTIFIER 0
67 #define SFF_8472_EXT_IDENTIFER 1
68 #define SFF_8472_CONNECTOR 2
71 * Note that several constants overlap here as the offset is used for multiple
72 * purposes.
74 #define SFF_8472_COMPLIANCE_10GE 3
75 #define SFF_8472_COMPLIANCE_IB 3
76 #define SFF_8472_COMPLIANCE_ESCON 4
77 #define SFF_8472_COMPLIANCE_SONET_LOW 4
78 #define SFF_8472_COMPLIANCE_SONET_HIGH 5
79 #define SFF_8472_COMPLIANCE_ETHERNET 6
80 #define SFF_8472_COMPLIANCE_FCLEN 7
81 #define SFF_8472_COMPLIANCE_FC_LOW 7
82 #define SFF_8472_COMPLIANCE_FC_HIGH 8
83 #define SFF_8472_COMPLIANCE_SFP 8
84 #define SFF_8472_COMPLIANCE_FC_MEDIA 9
85 #define SFF_8472_COMPLIANCE_FC_SPEED 10
87 #define SFF_8472_ENCODING 11
88 #define SFF_8472_BR_NOMINAL 12
89 #define SFF_8472_RATE_IDENTIFIER 13
90 #define SFF_8472_LENGTH_SMF_KM 14
91 #define SFF_8472_LENGTH_SMF 15
92 #define SFF_8472_LENGTH_50UM 16
93 #define SFF_8472_LENGTH_62UM 17
94 #define SFF_8472_LENGTH_COPPER 18
95 #define SFF_8472_LENGTH_OM3 19
97 #define SFF_8472_VENDOR 20
98 #define SFF_8472_VENDOR_LEN 16
99 #define SFF_8472_TRANSCEIVER 36
100 #define SFF_8472_OUI 37
101 #define SFF_8472_OUI_LEN 3
102 #define SFF_8472_VENDOR_PN 40
103 #define SFF_8472_VENDOR_PN_LEN 16
104 #define SFF_8472_VENDOR_REV 56
105 #define SFF_8472_VENDOR_REV_LEN 4
107 #define SFF_8472_PASSIVE_SPEC 60
108 #define SFF_8472_ACTIVE_SPEC 60
109 #define SFF_8472_WAVELENGTH_HI 60
110 #define SFF_8472_WAVELENGTH_LOW 61
112 #define SFF_8472_CC_BASE 63
114 #define SFF_8472_OPTIONS_HI 64
115 #define SFF_8472_OPTIONS_LOW 65
116 #define SFF_8472_BR_MAX 66
117 #define SFF_8472_BR_MIN 67
118 #define SFF_8472_VENDOR_SN 68
119 #define SFF_8472_VENDOR_SN_LEN 16
120 #define SFF_8472_DATE_CODE 84
121 #define SFF_8472_DATE_CODE_LEN 8
122 #define SFF_8472_DIAG_MONITORING 92
123 #define SFF_8472_ENHANCED_OPTIONS 93
124 #define SFF_8472_SFF_8472_COMPLIANCE 94
126 #define SFF_8472_CC_EXT 95
127 #define SFF_8472_VENDOR_SPECIFIC 96
128 #define SFF_8472_RESERVED 128
131 * These values are factors by which we should multiple or divide various units.
133 #define SFF_8472_BR_NOMINAL_FACTOR 100
134 #define SFF_8472_BR_MAX_FACTOR 250
135 #define SFF_8472_BR_MIN_FACTOR 250
136 #define SFF_8472_LENGTH_SMF_KM_FACTOR 1
137 #define SFF_8472_LENGTH_SMF_FACTOR 100
138 #define SFF_8472_LENGTH_50UM_FACTOR 10
139 #define SFF_8472_LENGTH_62UM_FACTOR 10
140 #define SFF_8472_LENGTH_COPPER_FACTOR 1
141 #define SFF_8472_LENGTH_OM3_FACTOR 10
142 #define SFF_8472_WAVELENGTH_FACTOR 1
146 * SFF 8636 related constants
148 #define SFF_8636_IDENTIFIER 0
149 #define SFF_8636_EXT_IDENTIFIER 129
150 #define SFF_8636_CONNECTOR 130
152 #define SFF_8636_COMPLIANCE_10GBEP 131
153 #define SFF_8636_COMPLIANCE_SONET 132
154 #define SFF_8636_COMPLIANCE_SAS 133
155 #define SFF_8636_COMPLIANCE_ETHERNET 134
156 #define SFF_8636_COMPLIANCE_FCLEN 135
157 #define SFF_8636_COMPLIANCE_FC_LOW 135
158 #define SFF_8636_COMPLIANCE_FC_HIGH 136
159 #define SFF_8636_COMPLIANCE_FC_MEDIA 137
160 #define SFF_8636_COMPLIANCE_FC_SPEED 138
162 #define SFF_8636_ENCODING 139
163 #define SFF_8636_BR_NOMINAL 140
164 #define SFF_8636_BR_EXT_RATE_SELECT 141
165 #define SFF_8636_LENGTH_SMF 142
166 #define SFF_8636_LENGTH_OM3 143
167 #define SFF_8636_LENGTH_OM2 144
168 #define SFF_8636_LENGTH_OM1 145
169 #define SFF_8636_LENGTH_COPPER 146
170 #define SFF_8636_DEVICE_TECH 147
171 #define SFF_8636_VENDOR 148
172 #define SFF_8636_VENDOR_LEN 16
173 #define SFF_8636_EXTENDED_MODULE 164
174 #define SFF_8636_OUI 165
175 #define SFF_8636_OUI_LEN 3
176 #define SFF_8636_VENDOR_PN 168
177 #define SFF_8636_VENDOR_PN_LEN 16
178 #define SFF_8636_VENDOR_REV 184
179 #define SFF_8636_VENDOR_REV_LEN 2
181 #define SFF_8636_ATTENUATE_2G 186
182 #define SFF_8636_ATTENUATE_5G 187
183 #define SFF_8636_ATTENUATE_7G 188
184 #define SFF_8636_ATTENUATE_12G 189
185 #define SFF_8636_WAVELENGTH_NOMINAL_HI 186
186 #define SFF_8636_WAVELENGTH_NOMINAL_LOW 187
187 #define SFF_8636_WAVELENGTH_TOLERANCE_HI 188
188 #define SFF_8636_WAVELENGTH_TOLERANCE_LOW 189
189 #define SFF_8636_MAX_CASE_TEMP 190
190 #define SFF_8636_CC_BASE 191
192 #define SFF_8636_LINK_CODES 192
193 #define SFF_8636_OPTIONS_HI 193
194 #define SFF_8636_OPTIONS_MID 194
195 #define SFF_8636_OPTIONS_LOW 195
196 #define SFF_8636_VENDOR_SN 196
197 #define SFF_8636_VENDOR_SN_LEN 16
198 #define SFF_8636_DATE_CODE 212
199 #define SFF_8636_DATE_CODE_LEN 8
200 #define SFF_8636_DIAG_MONITORING 220
201 #define SFF_8636_ENHANCED_OPTIONS 221
202 #define SFF_8636_BR_NOMINAL_EXT 222
203 #define SFF_8636_CC_EXT 223
204 #define SFF_866_VENDOR_SPECIFIC 224
207 * SFF 8636 multiplication factors
209 #define SFF_8636_BR_NOMINAL_FACTOR 100
210 #define SFF_8636_BR_NOMINAL_EXT_FACTOR 250
211 #define SFF_8636_LENGTH_SMF_FACTOR 1
212 #define SFF_8636_LENGTH_OM3_FACTOR 2
213 #define SFF_8636_LENGTH_OM2_FACTOR 1
214 #define SFF_8636_LENGTH_OM1_FACTOR 1
215 #define SFF_8636_LENGTH_COPPER_FACTOR 1
217 #ifdef __cplusplus
219 #endif
221 #endif /* _SFF_H */