epan/dissectors/pidl/samr/samr.cnf cnf_dissect_lsa_BinaryString => lsarpc_dissect_str...
[wireshark-sm.git] / epan / dissectors / packet-opa-mad.c
blobcbf7c6048a4258dc316e3721e3b0513a14ba2a48
1 /* packet-opa-mad.c
2 * Routines for Omni-Path MAD header and payload dissection
3 * Copyright (c) 2016, Intel Corporation.
5 * Wireshark - Network traffic analyzer
6 * By Gerald Combs <gerald@wireshark.org>
7 * Copyright 1998 Gerald Combs
9 * SPDX-License-Identifier: GPL-2.0-or-later
12 #include "config.h"
14 #include <epan/packet.h>
15 #include <epan/prefs.h>
16 #include <epan/etypes.h>
17 #include <epan/expert.h>
18 #include <epan/reassemble.h>
19 #include <epan/tfs.h>
20 #include <wsutil/array.h>
22 void proto_reg_handoff_opa_mad(void);
23 void proto_register_opa_mad(void);
25 /* MAD Management Classes */
26 #define SUBN_LID_ROUTED 0x01
27 #define SUBN_DIRECTED_ROUTE 0x81
28 #define SUBNADMN 0x03
29 #define PERF 0x04
30 #define PERFADMN 0x32
32 /* Depreciated Management Classes */
33 #define BM 0x05
34 #define DEV_MGT 0x06
35 #define COM_MGT 0x07
36 #define SNMP 0x08
38 /* Default Range Strings */
39 #define OPA_MGMTCLASS_RANGE_STR "0x01,0x03-0x04,0x32,0x81"
40 #define OPA_VENDOR_RANGE_STR "0x09-0x0F"
41 #define OPA_VENDOR_RMPP_RANGE_STR "0x30-0x31,0x33-0x4F"
42 #define OPA_APPLICATION_RANGE_STR "0x10-0x2F"
43 #define OPA_RESERVED_RANGE_STR "0x00,0x02,0x50-0x80,0x82-0xFF"
45 static const value_string MAD_mgmt_names[] = {
46 { SUBN_LID_ROUTED, "Subnet Management (LID Routed)" },
47 { SUBNADMN, "Subnet Administration" },
48 { PERF, "Performance Management" },
49 { BM, "Baseboard Management" },
50 { DEV_MGT, "Device Management" },
51 { COM_MGT, "Communication Management" },
52 { SNMP, "SNMP" },
53 { 0x09, "VENDOR 0x09" },
54 { 0x0A, "VENDOR 0x0A" },
55 { 0x0B, "VENDOR 0x0B" },
56 { 0x0C, "VENDOR 0x0C" },
57 { 0x0D, "VENDOR 0x0D" },
58 { 0x0E, "VENDOR 0x0E" },
59 { 0x0F, "VENDOR 0x0F" },
60 { 0x10, "APPLICATION 0x10" },
61 { 0x11, "APPLICATION 0x11" },
62 { 0x12, "APPLICATION 0x12" },
63 { 0x13, "APPLICATION 0x13" },
64 { 0x14, "APPLICATION 0x14" },
65 { 0x15, "APPLICATION 0x15" },
66 { 0x16, "APPLICATION 0x16" },
67 { 0x17, "APPLICATION 0x17" },
68 { 0x18, "APPLICATION 0x18" },
69 { 0x19, "APPLICATION 0x19" },
70 { 0x1A, "APPLICATION 0x1A" },
71 { 0x1B, "APPLICATION 0x1B" },
72 { 0x1C, "APPLICATION 0x1C" },
73 { 0x1D, "APPLICATION 0x1D" },
74 { 0x1E, "APPLICATION 0x1E" },
75 { 0x1F, "APPLICATION 0x1F" },
76 { 0X20, "APPLICATION 0X20" },
77 { 0x21, "APPLICATION 0x21" },
78 { 0x22, "APPLICATION 0x22" },
79 { 0x23, "APPLICATION 0x23" },
80 { 0x24, "APPLICATION 0x24" },
81 { 0x25, "APPLICATION 0x25" },
82 { 0x26, "APPLICATION 0x26" },
83 { 0x27, "APPLICATION 0x27" },
84 { 0x28, "APPLICATION 0x28" },
85 { 0x29, "APPLICATION 0x29" },
86 { 0x2A, "APPLICATION 0x2A" },
87 { 0x2B, "APPLICATION 0x2B" },
88 { 0x2C, "APPLICATION 0x2C" },
89 { 0x2D, "APPLICATION 0x2D" },
90 { 0x2E, "APPLICATION 0x2E" },
91 { 0x2F, "APPLICATION 0x2F" },
92 { 0x30, "VENDOR 0x30" },
93 { 0x31, "VENDOR 0x31" },
94 { PERFADMN, "Performance Administration" },
95 { 0x33, "VENDOR 0x33" },
96 { 0x34, "VENDOR 0x34" },
97 { 0x35, "VENDOR 0x35" },
98 { 0x36, "VENDOR 0x36" },
99 { 0x37, "VENDOR 0x37" },
100 { 0x38, "VENDOR 0x38" },
101 { 0x39, "VENDOR 0x39" },
102 { 0x3A, "VENDOR 0x3A" },
103 { 0x3B, "VENDOR 0x3B" },
104 { 0x3C, "VENDOR 0x3C" },
105 { 0x3D, "VENDOR 0x3D" },
106 { 0x3E, "VENDOR 0x3E" },
107 { 0x3F, "VENDOR 0x3F" },
108 { 0x40, "VENDOR 0x40" },
109 { 0x41, "VENDOR 0x41" },
110 { 0x42, "VENDOR 0x42" },
111 { 0x43, "VENDOR 0x43" },
112 { 0x44, "VENDOR 0x44" },
113 { 0x45, "VENDOR 0x45" },
114 { 0x46, "VENDOR 0x46" },
115 { 0x47, "VENDOR 0x47" },
116 { 0x48, "VENDOR 0x48" },
117 { 0x49, "VENDOR 0x49" },
118 { 0x4A, "VENDOR 0x4A" },
119 { 0x4B, "VENDOR 0x4B" },
120 { 0x4C, "VENDOR 0x4C" },
121 { 0x4D, "VENDOR 0x4D" },
122 { 0x4E, "VENDOR 0x4E" },
123 { 0x4F, "VENDOR 0x4F" },
124 { SUBN_DIRECTED_ROUTE, "Subnet Management (Direct Routed)" },
125 { 0, NULL }
127 static value_string_ext MAD_mgmt_names_ext = VALUE_STRING_EXT_INIT(MAD_mgmt_names);
129 /* SM Attributes */
130 #define SM_ATTR_ID_CLASS_PORT_INFO 0x0001
131 #define SM_ATTR_ID_NOTICE 0x0002
132 #define SM_ATTR_ID_INFORM_INFO 0x0003
133 #define SM_ATTR_ID_NODE_DESCRIPTION 0x0010
134 #define SM_ATTR_ID_NODE_INFO 0x0011
135 #define SM_ATTR_ID_SWITCH_INFO 0x0012
136 #define SM_ATTR_ID_PORT_INFO 0x0015
137 #define SM_ATTR_ID_PART_TABLE 0x0016
138 #define SM_ATTR_ID_SL_SC_MAPPING_TABLE 0x0017
139 #define SM_ATTR_ID_VL_ARBITRATION 0x0018
140 #define SM_ATTR_ID_LINEAR_FWD_TABLE 0x0019
141 #define SM_ATTR_ID_MCAST_FWD_TABLE 0x001B
142 #define SM_ATTR_ID_SM_INFO 0x0020
143 #define SM_ATTR_ID_LED_INFO 0x0031
144 #define SM_ATTR_ID_CABLE_INFO 0x0032
145 #define SM_ATTR_ID_AGGREGATE 0x0080
146 #define SM_ATTR_ID_SC_SC_MAPPING_TABLE 0x0081
147 #define SM_ATTR_ID_SC_SL_MAPPING_TABLE 0x0082
148 #define SM_ATTR_ID_SC_VLR_MAPPING_TABLE 0x0083
149 #define SM_ATTR_ID_SC_VLT_MAPPING_TABLE 0x0084
150 #define SM_ATTR_ID_SC_VLNT_MAPPING_TABLE 0x0085
151 #define SM_ATTR_ID_PORT_STATE_INFO 0x0087
152 #define SM_ATTR_ID_PORT_GROUP_FWD_TABLE 0x0088
153 #define SM_ATTR_ID_PORT_GROUP_TABLE 0x0089
154 #define SM_ATTR_ID_BUFFER_CONTROL_TABLE 0x008A
155 #define SM_ATTR_ID_CONGESTION_INFO 0x008B
156 #define SM_ATTR_ID_SWITCH_CONGESTION_LOG 0x008C
157 #define SM_ATTR_ID_SWITCH_CONGESTION_SETTING 0x008D
158 #define SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING 0x008E
159 #define SM_ATTR_ID_HFI_CONGESTION_LOG 0x008F
160 #define SM_ATTR_ID_HFI_CONGESTION_SETTING 0x0090
161 #define SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE 0x0091
163 /* SA Attributes */
164 #define SA_ATTR_ID_CLASS_PORT_INFO 0x0001
165 #define SA_ATTR_ID_NOTICE 0x0002
166 #define SA_ATTR_ID_INFORM_INFO 0x0003
167 #define SA_ATTR_ID_NODE_RECORD 0x0011
168 #define SA_ATTR_ID_PORTINFO_RECORD 0x0012
169 #define SA_ATTR_ID_SC_MAPTBL_RECORD 0x0013
170 #define SA_ATTR_ID_SWITCHINFO_RECORD 0x0014
171 #define SA_ATTR_ID_LINEAR_FWDTBL_RECORD 0x0015
172 #define SA_ATTR_ID_MCAST_FWDTBL_RECORD 0x0017
173 #define SA_ATTR_ID_SMINFO_RECORD 0x0018
174 #define SA_ATTR_ID_LINK_SPD_WDTH_PAIRS_RECORD 0x0019
175 #define SA_ATTR_ID_LINK_RECORD 0x0020
176 #define SA_ATTR_ID_SERVICE_RECORD 0x0031
177 #define SA_ATTR_ID_P_KEY_TABLE_RECORD 0x0033
178 #define SA_ATTR_ID_PATH_RECORD 0x0035
179 #define SA_ATTR_ID_VLARBTABLE_RECORD 0x0036
180 #define SA_ATTR_ID_MCMEMBER_RECORD 0x0038
181 #define SA_ATTR_ID_TRACE_RECORD 0x0039
182 #define SA_ATTR_ID_MULTIPATH_GID_RECORD 0x003A
183 #define SA_ATTR_ID_SERVICEASSOCIATION_RECORD 0x003B
184 #define SA_ATTR_ID_SL2SC_MAPTBL_RECORD 0x0080
185 #define SA_ATTR_ID_SC2SL_MAPTBL_RECORD 0x0081
186 #define SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD 0x0082
187 #define SA_ATTR_ID_SC_VLT_MAPTBL_RECORD 0x0083
188 #define SA_ATTR_ID_SC_VLR_MAPTBL_RECORD 0x0084
189 #define SA_ATTR_ID_PGROUP_FWDTBL_RECORD 0x0085
190 #define SA_ATTR_ID_MULTIPATH_GUID_RECORD 0x0086
191 #define SA_ATTR_ID_MULTIPATH_LID_RECORD 0x0087
192 #define SA_ATTR_ID_CABLE_INFO_RECORD 0x0088
193 #define SA_ATTR_ID_VF_INFO_RECORD 0x0089
194 #define SA_ATTR_ID_PORTGROUP_TABLE_RECORD 0x008B
195 #define SA_ATTR_ID_BUFF_CTRL_TAB_RECORD 0x008C
196 #define SA_ATTR_ID_FABRICINFO_RECORD 0x008D
197 #define SA_ATTR_ID_QUARANTINED_NODE_RECORD 0x0090
198 #define SA_ATTR_ID_CONGESTION_INFO_RECORD 0x0091
199 #define SA_ATTR_ID_SWITCH_CONG_RECORD 0x0092
200 #define SA_ATTR_ID_SWITCH_PORT_CONG_RECORD 0x0093
201 #define SA_ATTR_ID_HFI_CONG_RECORD 0x0094
202 #define SA_ATTR_ID_HFI_CONG_CTRL_RECORD 0x0095
203 #define SA_ATTR_ID_INFORM_INFO_RECORD 0x00F3
205 /* Performance Management class Attributes */
206 #define PM_ATTR_ID_CLASS_PORTINFO 0x0001
207 #define PM_ATTR_ID_PORT_STATUS 0x0040
208 #define PM_ATTR_ID_CLEAR_PORT_STATUS 0x0041
209 #define PM_ATTR_ID_DATA_PORT_COUNTERS 0x0042
210 #define PM_ATTR_ID_ERROR_PORT_COUNTERS 0x0043
211 #define PM_ATTR_ID_ERROR_INFO 0x0044
212 /* Performance Administration class Attributes */
213 #define PA_ATTR_ID_CLASS_PORTINFO 0x0001
214 #define PA_ATTR_ID_GET_GRP_LIST 0x00A0
215 #define PA_ATTR_ID_GET_GRP_INFO 0x00A1
216 #define PA_ATTR_ID_GET_GRP_CFG 0x00A2
217 #define PA_ATTR_ID_GET_PORT_CTRS 0x00A3
218 #define PA_ATTR_ID_CLR_PORT_CTRS 0x00A4
219 #define PA_ATTR_ID_CLR_ALL_PORT_CTRS 0x00A5
220 #define PA_ATTR_ID_GET_PM_CFG 0x00A6
221 #define PA_ATTR_ID_FREEZE_IMAGE 0x00A7
222 #define PA_ATTR_ID_RELEASE_IMAGE 0x00A8
223 #define PA_ATTR_ID_RENEW_IMAGE 0x00A9
224 #define PA_ATTR_ID_GET_FOCUS_PORTS 0x00AA
225 #define PA_ATTR_ID_GET_IMAGE_INFO 0x00AB
226 #define PA_ATTR_ID_MOVE_FREEZE_FRAME 0x00AC
227 #define PA_ATTR_ID_GET_VF_LIST 0x00AD
228 #define PA_ATTR_ID_GET_VF_INFO 0x00AE
229 #define PA_ATTR_ID_GET_VF_CONFIG 0x00AF
230 #define PA_ATTR_ID_GET_VF_PORT_CTRS 0x00B0
231 #define PA_ATTR_ID_CLR_VF_PORT_CTRS 0x00B1
232 #define PA_ATTR_ID_GET_VF_FOCUS_PORTS 0x00B2
234 /* Attributes */
235 static const value_string SUBM_Attributes[] = {
236 { SM_ATTR_ID_CLASS_PORT_INFO, "Attribute (ClassPortInfo)" },
237 { SM_ATTR_ID_NOTICE, "Attribute (Notice)" },
238 { SM_ATTR_ID_INFORM_INFO, "Attribute (InformInfo)" },
239 { SM_ATTR_ID_NODE_DESCRIPTION, "Attribute (NodeDescription)" },
240 { SM_ATTR_ID_NODE_INFO, "Attribute (NodeInfo)" },
241 { SM_ATTR_ID_SWITCH_INFO, "Attribute (SwitchInfo)" },
242 { SM_ATTR_ID_PORT_INFO, "Attribute (PortInfo)" },
243 { SM_ATTR_ID_PART_TABLE, "Attribute (PKeyTable)" },
244 { SM_ATTR_ID_SL_SC_MAPPING_TABLE, "Attribute (SLSCMappingTable)" },
245 { SM_ATTR_ID_VL_ARBITRATION, "Attribute (VLArbitrationTable)" },
246 { SM_ATTR_ID_LINEAR_FWD_TABLE, "Attribute (LinearForwardingTable)" },
247 { SM_ATTR_ID_MCAST_FWD_TABLE, "Attribute (MulticastForwardingTable)" },
248 { SM_ATTR_ID_SM_INFO, "Attribute (SMInfo)" },
249 { SM_ATTR_ID_LED_INFO, "Attribute (LedInfo)" },
250 { SM_ATTR_ID_CABLE_INFO, "Attribute (CableInfo)" },
251 { SM_ATTR_ID_AGGREGATE, "Attribute (Aggregate)" },
252 { SM_ATTR_ID_SC_SC_MAPPING_TABLE, "Attribute (SCSCMappingTable)" },
253 { SM_ATTR_ID_SC_SL_MAPPING_TABLE, "Attribute (SCSLMappingTable)" },
254 { SM_ATTR_ID_SC_VLR_MAPPING_TABLE, "Attribute (SCVLRMappingTable)" },
255 { SM_ATTR_ID_SC_VLT_MAPPING_TABLE, "Attribute (SCVLTMappingTable)" },
256 { SM_ATTR_ID_SC_VLNT_MAPPING_TABLE, "Attribute (SCVLNTMappingTable)" },
257 { SM_ATTR_ID_PORT_STATE_INFO, "Attribute (PortStateInfo)" },
258 { SM_ATTR_ID_PORT_GROUP_FWD_TABLE, "Attribute (PortGroupForwardingTable)" },
259 { SM_ATTR_ID_PORT_GROUP_TABLE, "Attribute (PortGroupTable)" },
260 { SM_ATTR_ID_BUFFER_CONTROL_TABLE, "Attribute (BufferControlTable)" },
261 { SM_ATTR_ID_CONGESTION_INFO, "Attribute (CongestionInfo)" },
262 { SM_ATTR_ID_SWITCH_CONGESTION_LOG, "Attribute (SwitchCongestionLog)" },
263 { SM_ATTR_ID_SWITCH_CONGESTION_SETTING, "Attribute (SwitchCongestionSetting)" },
264 { SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING, "Attribute (SwitchPortCongestionSetting)" },
265 { SM_ATTR_ID_HFI_CONGESTION_LOG, "Attribute (HFICongestionLog)" },
266 { SM_ATTR_ID_HFI_CONGESTION_SETTING, "Attribute (HFICongestionSetting)" },
267 { SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE, "Attribute (HFICongestionControlTable)" },
268 { 0, NULL }
270 static const value_string SUBA_Attributes[] = {
271 { SA_ATTR_ID_CLASS_PORT_INFO, "Attribute (ClassPortInfo)" },
272 { SA_ATTR_ID_NOTICE, "Attribute (Notice)" },
273 { SA_ATTR_ID_INFORM_INFO, "Attribute (InformInfo)" },
274 { SA_ATTR_ID_NODE_RECORD, "Attribute (NodeRecord)" },
275 { SA_ATTR_ID_PORTINFO_RECORD, "Attribute (PortInfoRecord)" },
276 { SA_ATTR_ID_SC_MAPTBL_RECORD, "Attribute (SCMappingTableRecord)" },
277 { SA_ATTR_ID_SWITCHINFO_RECORD, "Attribute (SwitchInfoRecord)" },
278 { SA_ATTR_ID_LINEAR_FWDTBL_RECORD, "Attribute (LinearForwardingTableRecord)" },
279 { SA_ATTR_ID_MCAST_FWDTBL_RECORD, "Attribute (MulticastForwardingTableRecord)" },
280 { SA_ATTR_ID_SMINFO_RECORD, "Attribute (SMInfoRecord)" },
281 { SA_ATTR_ID_LINK_SPD_WDTH_PAIRS_RECORD, "Attribute (LinkSpeedWidthPairsTableRecord)" },
282 { SA_ATTR_ID_LINK_RECORD, "Attribute (LinkRecord)" },
283 { SA_ATTR_ID_SERVICE_RECORD, "Attribute (ServiceRecord)" },
284 { SA_ATTR_ID_P_KEY_TABLE_RECORD, "Attribute (P_KeyTableRecord)" },
285 { SA_ATTR_ID_PATH_RECORD, "Attribute (PathRecord)" },
286 { SA_ATTR_ID_VLARBTABLE_RECORD, "Attribute (VLArbitrationTableRecord)" },
287 { SA_ATTR_ID_MCMEMBER_RECORD, "Attribute (MulticastMemberRecord)" },
288 { SA_ATTR_ID_TRACE_RECORD, "Attribute (TraceRecord)" },
289 { SA_ATTR_ID_MULTIPATH_GID_RECORD, "Attribute (MultiPathRecord)" },
290 { SA_ATTR_ID_SERVICEASSOCIATION_RECORD, "Attribute (ServiceAssociationRecord)" },
291 { SA_ATTR_ID_SL2SC_MAPTBL_RECORD, "Attribute (SLtoSCMappingTableRecord)" },
292 { SA_ATTR_ID_SC2SL_MAPTBL_RECORD, "Attribute (SCtoSLMappingTableRecord)" },
293 { SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD, "Attribute (SCtoVLNTMappingTableRecord)" },
294 { SA_ATTR_ID_SC_VLT_MAPTBL_RECORD, "Attribute (SCtoVLTMappingTableRecord)" },
295 { SA_ATTR_ID_SC_VLR_MAPTBL_RECORD, "Attribute (SCtoVLRMappingTableRecord)" },
296 { SA_ATTR_ID_PGROUP_FWDTBL_RECORD, "Attribute (PortGroupForwardTableRecord)" },
297 { SA_ATTR_ID_MULTIPATH_GUID_RECORD, "Attribute (MultipathGUIDRecord)" },
298 { SA_ATTR_ID_MULTIPATH_LID_RECORD, "Attribute (MultipathLIDRecord)" },
299 { SA_ATTR_ID_CABLE_INFO_RECORD, "Attribute (CableInfoRecord)" },
300 { SA_ATTR_ID_VF_INFO_RECORD, "Attribute (VFInfoRecord)" },
301 { SA_ATTR_ID_PORTGROUP_TABLE_RECORD, "Attribute (PortGroupTableRecord)" },
302 { SA_ATTR_ID_BUFF_CTRL_TAB_RECORD, "Attribute (BufferControlTableRecord)" },
303 { SA_ATTR_ID_FABRICINFO_RECORD, "Attribute (FabricInfoRecord)" },
304 { SA_ATTR_ID_QUARANTINED_NODE_RECORD, "Attribute (QuarantinedNodeRecord)" },
305 { SA_ATTR_ID_CONGESTION_INFO_RECORD, "Attribute (CongestionInfoRecord)" },
306 { SA_ATTR_ID_SWITCH_CONG_RECORD, "Attribute (SwitchCongestionRecord)" },
307 { SA_ATTR_ID_SWITCH_PORT_CONG_RECORD, "Attribute (SwitchPortCongestionRecord)" },
308 { SA_ATTR_ID_HFI_CONG_RECORD, "Attribute (HFICongestionRecord)" },
309 { SA_ATTR_ID_HFI_CONG_CTRL_RECORD, "Attribute (HFICongestionControlRecord)" },
310 { SA_ATTR_ID_INFORM_INFO_RECORD, "Attribute (InformInfoRecord)" },
311 { 0, NULL }
313 static const value_string PM_Attributes[] = {
314 { PM_ATTR_ID_CLASS_PORTINFO, "Attribute (ClassPortInfo)" },
315 { PM_ATTR_ID_PORT_STATUS, "Attribute (PortStatus)" },
316 { PM_ATTR_ID_CLEAR_PORT_STATUS, "Attribute (ClearPortStatus)" },
317 { PM_ATTR_ID_DATA_PORT_COUNTERS, "Attribute (DataPortCounters)" },
318 { PM_ATTR_ID_ERROR_PORT_COUNTERS, "Attribute (ErrorPortCounters)" },
319 { PM_ATTR_ID_ERROR_INFO, "Attribute (ErrorInfo)" },
320 { 0, NULL }
322 static const value_string PA_Attributes[] = {
323 { PA_ATTR_ID_CLASS_PORTINFO, "Attribute (ClassPortInfo)" },
324 { PA_ATTR_ID_GET_GRP_LIST, "Attribute (GetGroupList)" },
325 { PA_ATTR_ID_GET_GRP_INFO, "Attribute (GetGroupInfo)" },
326 { PA_ATTR_ID_GET_GRP_CFG, "Attribute (GetGroupConfig)" },
327 { PA_ATTR_ID_GET_PORT_CTRS, "Attribute (GetPortCounters)" },
328 { PA_ATTR_ID_CLR_PORT_CTRS, "Attribute (ClearPortCounters)" },
329 { PA_ATTR_ID_CLR_ALL_PORT_CTRS, "Attribute (ClearAllPortCounters)" },
330 { PA_ATTR_ID_GET_PM_CFG, "Attribute (GetPerfMgmtConfig)" },
331 { PA_ATTR_ID_FREEZE_IMAGE, "Attribute (FreezeImage)" },
332 { PA_ATTR_ID_RELEASE_IMAGE, "Attribute (ReleaseImage)" },
333 { PA_ATTR_ID_RENEW_IMAGE, "Attribute (RenewImage)" },
334 { PA_ATTR_ID_GET_FOCUS_PORTS, "Attribute (GetFocusPorts)" },
335 { PA_ATTR_ID_GET_IMAGE_INFO, "Attribute (GetImageInfo)" },
336 { PA_ATTR_ID_MOVE_FREEZE_FRAME, "Attribute (MoveFreezeFrame)" },
337 { PA_ATTR_ID_GET_VF_LIST, "Attribute (GetVFList)" },
338 { PA_ATTR_ID_GET_VF_INFO, "Attribute (GetVFInfo)" },
339 { PA_ATTR_ID_GET_VF_CONFIG, "Attribute (GetVFConfig)" },
340 { PA_ATTR_ID_GET_VF_PORT_CTRS, "Attribute (GetVFPortCounters)" },
341 { PA_ATTR_ID_CLR_VF_PORT_CTRS, "Attribute (ClearVFPortCounters)" },
342 { PA_ATTR_ID_GET_VF_FOCUS_PORTS, "Attribute (GetVFFocusPorts)" },
343 { 0, NULL }
346 /* Methods */
347 #define METHOD_GET 0x01
348 #define METHOD_SET 0x02
349 #define METHOD_SEND 0x03
350 #define METHOD_TRAP 0x05
351 #define METHOD_REPORT 0x06
352 #define METHOD_TRAPREPRESS 0x07
353 #define METHOD_GETTABLE 0x12
354 #define METHOD_GETTRACETABLE 0x13
355 #define METHOD_GETMULTI 0x14
356 #define METHOD_DELETE 0x15
358 #define METHOD_GET_RESP 0x81
359 #define METHOD_REPORT_RESP 0x86
360 #define METHOD_GETTABLE_RESP 0x92
361 #define METHOD_GETTRACETABLE_RESP 0x93
362 #define METHOD_GETMULTI_RESP 0x94
363 #define METHOD_DELETE_RESP 0x95
364 static const value_string Methods[] = {
365 { METHOD_GET, "Get()" },
366 { METHOD_GET_RESP, "GetResp()" },
367 { METHOD_SET, "Set()" },
368 { METHOD_SEND, "Send()" },
369 { METHOD_TRAP, "Trap()" },
370 { METHOD_REPORT, "Report()" },
371 { METHOD_REPORT_RESP, "ReportResp()" },
372 { METHOD_TRAPREPRESS, "TrapRepress()" },
373 { METHOD_GETTABLE, "GetTable()" },
374 { METHOD_GETTABLE_RESP, "GetTableResp()" },
375 { METHOD_GETTRACETABLE, "GetTraceTable()" },
376 { METHOD_GETTRACETABLE_RESP, "GetTraceTableResp()" },
377 { METHOD_GETMULTI, "GetMulti()" },
378 { METHOD_GETMULTI_RESP, "GetMultiResp()" },
379 { METHOD_DELETE, "Delete()" },
380 { METHOD_DELETE_RESP, "DeleteResp()" },
381 { 0, NULL }
383 static const value_string SUBM_Methods[] = {
384 { METHOD_GET, "SubnGet(" },
385 { METHOD_SET, "SubnSet(" },
386 { METHOD_GET_RESP, "SubnGetResp(" },
387 { METHOD_TRAP, "SubnTrap(" },
388 { METHOD_TRAPREPRESS, "SubnTrapRepress(" },
389 { 0, NULL }
391 static const value_string SUBA_Methods[] = {
392 { METHOD_GET, "SubnAdmGet(" },
393 { METHOD_GET_RESP, "SubnAdmGetResp(" },
394 { METHOD_SET, "SubnAdmSet(" },
395 { METHOD_REPORT, "SubnAdmReport(" },
396 { METHOD_REPORT_RESP, "SubnAdmReportResp(" },
397 { METHOD_GETTABLE, "SubnAdmGetTable(" },
398 { METHOD_GETTABLE_RESP, "SubnAdmGetTableResp(" },
399 { METHOD_GETTRACETABLE, "SubnAdmGetTraceTable(" },
400 { METHOD_GETMULTI, "SubnAdmGetMulti(" },
401 { METHOD_GETMULTI_RESP, "SubnAdmGetMultiResp(" },
402 { METHOD_DELETE, "SubnAdmDelete(" },
403 { METHOD_DELETE_RESP, "SubnAdmDeleteResp(" },
404 { 0, NULL }
406 static const value_string PM_Methods[] = {
407 { METHOD_GET, "PerfGet(" },
408 { METHOD_SET, "PerfSet(" },
409 { METHOD_GET_RESP, "PerfGetResp(" },
410 { 0, NULL }
412 static const value_string PA_Methods[] = {
413 { METHOD_GET, "PerfAdmGet(" },
414 { METHOD_SET, "PerfAdmSet(" },
415 { METHOD_GET_RESP, "PerfAdmGetResp(" },
416 { METHOD_GETTABLE, "PerfAdmGetTable(" },
417 { METHOD_GETTABLE_RESP, "PerfAdmGetTableResp(" },
418 { 0, NULL }
421 /* RMPP Types */
422 #define RMPP_ILLEGAL 0
423 #define RMPP_DATA 1
424 #define RMPP_ACK 2
425 #define RMPP_STOP 3
426 #define RMPP_ABORT 4
427 static const value_string RMPP_Packet_Types[] = {
428 { RMPP_ILLEGAL, "Illegal RMPP Type (0)! " },
429 { RMPP_DATA, "RMPP (DATA)" },
430 { RMPP_ACK, "RMPP (ACK)" },
431 { RMPP_STOP, "RMPP (STOP)" },
432 { RMPP_ABORT, "RMPP (ABORT)" },
433 { 0, NULL }
435 static const value_string RMPP_Status[] = {
436 { 0, " (Normal)" },
437 { 1, " (Resources Exhausted)" },
438 { 118, " (Total Time Too Long)" },
439 { 119, " (Inconsistent Last and PayloadLength)" },
440 { 120, " (Inconsistent First and Segment Number)" },
441 { 121, " (Bad RMPPType)" },
442 { 122, " (NewWindowLast Too Small)" },
443 { 123, " (SegmentNumber Too Big)" },
444 { 124, " (Illegal Status)" },
445 { 125, " (Unsupported Version)" },
446 { 126, " (Too Many Retries)" },
447 { 127, " (Unspecified - Unknown Error Code on ABORT)" },
448 { 0, NULL }
451 /* MAD_t
452 * Structure to hold information from the common MAD header.
453 * This is necessary because the MAD header contains information which significantly changes the dissection algorithm. */
454 #define STL_MAX_MAD_PAYLOAD 2048
455 typedef struct _MAD {
456 uint8_t BaseVersion;
457 uint8_t MgmtClass;
458 uint8_t ClassVersion;
459 uint8_t Method;
460 uint16_t Status; /* D = bit 15 when DR */
461 uint8_t HopPointer; /* Reserved in DR MADs */
462 uint8_t HopCount; /* Reserved in DR MADs */
463 uint64_t TransactionID;
464 uint16_t AttributeID;
465 uint16_t Reserved2;
466 uint32_t AttributeModifier;
467 } MAD_t;
468 #define STL_MAX_RMPP_PAYLOAD 2036
469 #define RMPP_FLAG_LAST_MASK 0x04
470 #define RMPP_FLAG_LAST_SHIFT 2
471 #define RMPP_FLAG_FIRST_MASK 0x02
472 #define RMPP_FLAG_FIRST_SHIFT 1
473 #define RMPP_FLAG_ACTIVE_MASK 0x01
474 #define RMPP_FLAG_ACTIVE_SHIFT 0
475 typedef struct _RMPP {
476 uint8_t Version;
477 uint8_t Type;
478 uint8_t resptime_flags;
479 uint8_t Status;
480 uint32_t SegmentNumber;
481 uint32_t PayloadLength;
482 } RMPP_t;
484 #define STL_MAX_SA_PA_PAYLOAD 1992
485 typedef struct _SA_HEADER {
486 uint64_t SM_Key;
487 uint16_t AttributeOffset;
488 uint16_t Reserved;
489 uint64_t ComponentMask;
490 } SA_HEADER_t, PA_HEADER_t;
492 /* Trap Type/Descriptions for dissection */
493 static const value_string NoticeType[] = {
494 { 0, "Fatal" },
495 { 1, "Urgent" },
496 { 2, "Security" },
497 { 3, "SM" },
498 { 4, "Info" },
499 { 0, NULL }
501 static const value_string Trap_Description[] = {
502 { 64, " (Informational) <GIDADDR> is now in service" },
503 { 65, " (Informational) <GIDADDR> is out of service" },
504 { 66, " (Informational) New Multicast Group with multicast address <GIDADDR> is now created" },
505 { 67, " (Informational) Multicast Group with multicast address <GIDADDR> is now deleted" },
506 { 68, " (Informational) Paths indicated by <PATH_REC> and <COMP_MASK> are no longer valid" },
507 { 69, " (Informational) Paths indicated by <PATH_REC> and <COMP_MASK> have been recomputed" },
508 { 128, " (Urgent) Link State of at least one port of switch at <LIDADDR> has changed" },
509 { 129, " (Urgent) Local Link Integrity threshold reached at <LIDADDR><PORTNO>" },
510 { 130, " (Urgent) Excessive Buffer OVerrun threshold reached at <LIDADDR><PORTNO>" },
511 { 131, " (Urgent) Flow Control Update watchdog timer expired at <LIDADDR><PORTNO>" },
512 { 144, " (Informational) CapMask, NodeDesc, LinkWidthEnabled or LinkSpeedEnabled at <LIDADDR> has been modified" },
513 { 145, " (Informational) SystemImageGUID at <LIDADDR> has been modified. New value is <SYSTEMIMAGEGUID>" },
514 { 256, " (Security) Bad M_Key, <M_KEY> from <LIDADDR> attempted <METHOD> with <ATTRIBUTEID> and <ATTRIBUTEMODIFIER>" },
515 { 257, " (Security) Bad P_Key, <KEY> from <LIDADDR1><GIDADDR1><QP1> to <LIDADDR2><GIDADDR2><QP2> on <SL>" },
516 { 258, " (Security) Bad Q_Key, <KEY> from <LIDADDR1><GIDADDR1><QP1> to <LIDADDR2><GIDADDR2><QP2> on <SL>" },
517 { 259, " (Security) Bad P_Key, <KEY> from <LIDADDR1><GIDADDR1><QP1> to <LIDADDR2><GIDADDR2><QP2> on <SL> at switch <LIDADDR><PORTNO>" },
518 { 2048, " (Informational) LinkWidth.Active, LinkWidthDowngrade.TxActive or LinkWidthDowngrade.RxActive of at least one port of switch at <REPORTINGLID> has changed" },
519 { 0, NULL }
521 static const value_string RoutingMode[] = {
522 { 0x00, "No change" },
523 { 0x01, "Linear routing algorithm" },
524 { 0x02, "Hierarchical routing algorithm" },
525 { 0, NULL }
527 static const value_string AdaptiveRoutingAlgorithm[] = {
528 { 0x0, "Random" },
529 { 0x1, "Greedy" },
530 { 0x2, "Random Greedy" },
531 { 0, NULL }
533 static const value_string PortType[] = {
534 { 0, "Unknown" },
535 { 1, "Disconnected" },
536 { 2, "Fixed" },
537 { 3, "Variable" },
538 { 4, "QSFP" },
539 { 5, "SiPh_x16" },
540 { 6, "Reserved" },
541 { 7, "Reserved" },
542 { 8, "Reserved" },
543 { 9, "Reserved" },
544 { 10, "Reserved" },
545 { 11, "Reserved" },
546 { 12, "Reserved" },
547 { 13, "Reserved" },
548 { 14, "Reserved" },
549 { 15, "Reserved" },
550 { 0, NULL }
552 static const value_string NodeType[] = {
553 { 1, "FI" },
554 { 2, "Switch" },
555 { 0, NULL }
557 static const value_string LinkDownReason[] = {
558 { 0, "No specified reason" },
559 { 1, "Receive Error 0" },
560 { 2, "Bad packet length" },
561 { 3, "Packet too long" },
562 { 4, "Packet too short" },
563 { 5, "Bad SLID" },
564 { 6, "Bad DLID" },
565 { 7, "Bad L2" },
566 { 8, "Bad SC" },
567 { 9, "Receive Error 8" },
568 { 10, "Bad mid tail" },
569 { 11, "Receive Error 10" },
570 { 12, "Preempt error" },
571 { 13, "Preempt VL15" },
572 { 14, "Bad VL marker" },
573 { 15, "Receive Error 14" },
574 { 16, "Receive Error 15" },
575 { 17, "Bad head dist" },
576 { 18, "Bad tail dist" },
577 { 19, "Bad ctrl dist" },
578 { 20, "Bad credit ack" },
579 { 21, "Unsupported VL marker" },
580 { 22, "Bad preempt" },
581 { 23, "Bad control flit" },
582 { 24, "Exceed multicast limit" },
583 { 25, "Receive Error 24" },
584 { 26, "Receive Error 25" },
585 { 27, "Receive Error 26" },
586 { 28, "Receive Error 27" },
587 { 29, "Receive Error 28" },
588 { 30, "Receive Error 29" },
589 { 31, "Receive Error 30" },
590 { 32, "Excessive buffer overrun" },
591 { 33, "Unknown (locally initiated)" },
592 { 35, "Reboot" },
593 { 36, "Neighbor Unknown (not locally initiated)" },
594 { 39, "FM initiated bounce" },
595 { 40, "Link outside speed policy" },
596 { 41, "Link downgrade outside" },
597 { 49, "Disconnected" },
598 { 50, "Local media not installed" },
599 { 51, "Not installed" },
600 { 52, "Chassis config" },
601 { 54, "End to end not installed" },
602 { 56, "Power policy" },
603 { 57, "Linkspeed policy" },
604 { 58, "Linkwidth policy" },
605 { 60, "Switch management" },
606 { 61, "Sma disabled" },
607 { 63, "Transient" },
608 { 0, NULL }
610 static const value_string LinkInitReason[] = {
611 { 0, "No Error" },
612 { 1, "Link just came up" },
613 { 2, "FM ignoring flapping port" },
614 { 8, "FM ignoring, width or speed, outside FM configured policy" },
615 { 9, "FM ignoring, quarantined for security" },
616 { 10, "FM ignoring, link has insufficient capabilities for FM configuration" },
617 { 0, NULL },
619 static const value_string DiagCode[] = {
620 { 0x0000, "Function Ready" },
621 { 0x0001, "Performing Self Test" },
622 { 0x0002, "Initializing" },
623 { 0x0003, "Soft Error - Function has non-fatal error" },
624 { 0x0004, "Hard Error - Function has fatal error" },
625 { 0, NULL }
627 static const value_string PortFlitDistanceMode[] = {
628 { 0x0000, "No State Change" },
629 { 0x0001, "STL1 Mode" },
630 { 0x0002, "STL2 Mode" },
631 { 0, NULL }
633 static const value_string PortState[] = {
634 { 0x0000, "No State Change" },
635 { 0x0001, "Down (includes failed links)" },
636 { 0x0002, "Initialized" },
637 { 0x0003, "Armed" },
638 { 0x0004, "Active" },
639 { 0, NULL }
641 static const value_string PortPhysicalState[] = {
642 { 0x0000, "No State Change" },
643 { 0x0002, "Polling" },
644 { 0x0003, "Disabled" },
645 { 0x0004, "PortConfigurationTraining" },
646 { 0x0005, "LinkUp" },
647 { 0x0006, "LinkErrorRecovery" },
648 { 0x0009, "Offline" },
649 { 0x000B, "Test" },
650 { 0, NULL }
652 static const value_string OfflineDisabledReason[] = {
653 { 0x0000, "No reason available" },
654 { 0x0001, "Disconnected" },
655 { 0x0002, "Local Media not Installed" },
656 { 0x0003, "Not Installed" },
657 { 0x0004, "Chassis Config" },
658 { 0x0005, "Reserved" },
659 { 0x0006, "End-to-end not Installed" },
660 { 0x0007, "Reserved" },
661 { 0x0008, "Power Policy" },
662 { 0x0009, "Link Speed Policy" },
663 { 0x000A, "Link Width Policy" },
664 { 0x000B, "Reserved" },
665 { 0x000C, "Switch Mgmt" },
666 { 0x000D, "SMA Disabled" },
667 { 0x000E, "Reserved" },
668 { 0x000F, "Transient" },
669 { 0, NULL }
671 static const value_string MTU[] = {
672 { 0x0001, "256" }, /* IB_MTU_256 */
673 { 0x0002, "512" }, /* IB_MTU_512 */
674 { 0x0003, "1024" }, /* IB_MTU_1024 */
675 { 0x0004, "2048" }, /* IB_MTU_2048 */
676 { 0x0005, "4096" }, /* IB_MTU_4096 */
677 { 0x0006, "8192" }, /* STL_MTU_8192 */
678 { 0x0007, "10240" }, /* STL_MTU_10240 */
679 { 0, NULL }
681 static const value_string Rate[] = {
682 { 11, "12.5 Gbps" }, /* IB_STATIC_RATE_14G */
683 { 15, "25 Gbps" }, /* IB_STATIC_RATE_25G */
684 { 7, "37.5 Gbps" }, /* IB_STATIC_RATE_40G */
685 { 12, "50 Gbps" }, /* IB_STATIC_RATE_56G */
686 { 9, "75 Gbps" }, /* IB_STATIC_RATE_80G */
687 { 16, "100 Gbps" }, /* IB_STATIC_RATE_100G */
688 { 17, "200 Gbps" }, /* IB_STATIC_RATE_200G */
689 { 0, NULL }
691 static const true_false_string tfs_PKeyMembershipType = {
692 "Full",
693 "Limited"
695 static const value_string MADAttrModSectionVLarb[] = {
696 { 0, "Arbitration Low Weight Elements" },
697 { 1, "Arbitration High Weight Elements" },
698 { 2, "Preemption Weight Elements" },
699 { 3, "Preemption Matrix" },
700 { 0, NULL }
702 static const value_string MADAttrModSectionVLarb_short[] = {
703 { 0, "Low Weight" },
704 { 1, "High Weight" },
705 { 2, "Preemption Weight" },
706 { 3, "Preemption Matrix" },
707 { 0, NULL }
709 static const value_string SA_SC_VLx[] = {
710 { SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD, "nt" },
711 { SA_ATTR_ID_SC_VLT_MAPTBL_RECORD, "t" },
712 { SA_ATTR_ID_SC_VLR_MAPTBL_RECORD, "r" },
713 { 0, NULL }
715 static const value_string SM_SC_VLx[] = {
716 { SM_ATTR_ID_SC_VLNT_MAPPING_TABLE, "nt" },
717 { SM_ATTR_ID_SC_VLT_MAPPING_TABLE, "t" },
718 { SM_ATTR_ID_SC_VLR_MAPPING_TABLE, "r" },
719 { 0, NULL }
721 static const value_string GroupTablePosition[] = {
722 { 0, "1-64" },
723 { 1, "65-128" },
724 { 2, "129-192" },
725 { 3, "193-256" },
726 { 0, NULL },
728 static const value_string AdaptiveRoutingThreshold[] = {
729 { 0, "Default tuning" },
730 { 1, "Consumed nearly all of the buffering(or Tags) for a VL (~100%)" },
731 { 2, "90%" },
732 { 3, "80%" },
733 { 4, "70%" },
734 { 5, "65%" },
735 { 6, "60%" },
736 { 7, "55%" },
737 { 0, NULL }
739 static const value_string LinkQualityIndicator[] = {
740 { 0, "Down" },
741 { 1, "Bad" },
742 { 2, "Poor" },
743 { 3, "Good" },
744 { 4, "Very Good" },
745 { 5, "Excellent" },
746 { 6, "Reserved" },
747 { 7, "Reserved" },
748 { 0, NULL },
750 /*static const value_string LinkQualityIndicatorLong[] = {
751 { 0, "link down" },
752 { 1, "working far below acceptable link quality, recommend immediate corrective action" },
753 { 2, "working below acceptable link quality, recommend consider timely corrective action" },
754 { 3, "working on low end of acceptable link quality, recommended to consider corrective action on next maintenance window" },
755 { 4, "working slightly below preferred link quality, but no action required" },
756 { 5, "working at or above preferred link quality, no action needed" },
757 { 6, "Reserved" },
758 { 7, "Reserved" },
759 { 0, NULL },
760 };*/
761 static const true_false_string tfs_NeighborFWAuthenBypass = {
762 "Not Authenticated",
763 "Authenticated"
765 static const true_false_string tfs_SwPortCongSetting_CtrlType = {
766 "Credit Starvation",
767 "Packet Marketing"
769 static const true_false_string tfs_clear_dont_clear = {
770 "Clear",
771 "Don't Clear"
773 static const value_string MAD_Status_InvalidField[] = {
774 { 0, "No Invalid Fields" },
775 { 1, "Bad Version" },
776 { 2, "Method not supported" },
777 { 3, "The method/attribute combination is not supported" },
778 { 4, "Reserved" },
779 { 5, "Reserved" },
780 { 6, "Reserved" },
781 { 7, "One or more fields in the attribute or attribute modifier contain an invalid value" },
782 { 0, NULL }
784 static const true_false_string tfs_busy_not_busy = {
785 "Busy",
786 "Not Busy"
788 static const true_false_string tfs_redirect_no_redirect = {
789 "Redirect",
790 "No Redirect"
792 static const value_string FocusPortFlags[] = {
793 { 0, "OK" },
794 { 1, "PMA Ignore" },
795 { 2, "PMA Failure" },
796 { 3, "Topo Failure" },
797 { 0, NULL },
800 #define PM_UTIL_BUCKETS 10
801 #define PM_ERR_BUCKETS 5
803 /* Wireshark ID */
804 static int proto_opa_mad;
806 /* Variables to hold expansion values between packets */
807 static int ett_payload;
808 static int ett_sm_lid;
809 static int ett_sm_dr;
810 static int ett_sa;
811 static int ett_pm;
812 static int ett_pa;
813 static int ett_mad;
814 static int ett_mad_status;
815 static int ett_mad_attributemod;
816 static int ett_rmpp;
817 static int ett_rmpp_fragment;
818 static int ett_rmpp_fragments;
819 static int ett_rmpp_sa_record;
820 /* Common */
821 static int ett_noticestraps;
822 static int ett_datadetails;
823 static int ett_datadetails_trap259datavalid;
824 static int ett_informinfo;
825 static int ett_classportinfo;
826 static int ett_classportinfo_redirect;
827 static int ett_classportinfo_trap;
828 /* SM */
829 static int ett_nodedescription;
830 static int ett_nodeinfo;
831 static int ett_switchinfo;
832 static int ett_switchinfo_switchcapabilitymask;
833 static int ett_portinfo;
834 static int ett_portinfo_vl;
835 static int ett_portinfo_link;
836 static int ett_portinfo_portmode;
837 static int ett_portinfo_flitcontrol;
838 static int ett_portinfo_porterroraction;
839 static int ett_portinfo_neighbormtu;
840 static int ett_portinfo_xmitq;
841 static int ett_portinfo_capmask;
842 static int ett_portinfo_capmask3;
843 static int ett_portstates;
844 static int ett_pkeytable;
845 static int ett_pkeytable_block;
846 static int ett_sltoscmapping;
847 static int ett_sltoscmapping_block;
848 static int ett_sctoscmapping;
849 static int ett_sctoscmapping_block;
850 static int ett_sctoslmapping;
851 static int ett_sctoslmapping_block;
852 static int ett_sctovlxmappingtable;
853 static int ett_sctovlxmappingtable_block;
854 static int ett_vlarbitrationtable;
855 static int ett_vlarbitrationtable_port;
856 static int ett_linearforwardingtable;
857 static int ett_linearforwardingtable_block;
858 static int ett_multicastforwardingtable;
859 static int ett_multicastforwardingtable_block;
860 static int ett_portgroupforwardingtable;
861 static int ett_portgroupforwardingtable_block;
862 static int ett_portgrouptable;
863 static int ett_portgrouptable_block;
864 static int ett_sminfo;
865 static int ett_ledinfo;
866 static int ett_cableinfo;
867 static int ett_aggregate;
868 static int ett_buffercontroltable;
869 static int ett_congestioninfo;
870 static int ett_switchcongestionlog;
871 static int ett_switchcongestionlog_entry;
872 static int ett_switchcongestionsetting;
873 static int ett_switchportcongestionsetting;
874 static int ett_switchportcongestionsetting_port;
875 static int ett_hficongestionlog;
876 static int ett_hficongestionlog_entry;
877 static int ett_hficongestionsetting;
878 static int ett_hficongestioncontroltable;
879 static int ett_hficongestioncontroltable_block;
880 /* SA */
881 static int ett_portinforecord_linkdownreason;
882 static int ett_portinforecord_linkdownreason_entry;
883 static int ett_scmappingrecord;
884 static int ett_lftrecord;
885 static int ett_linkrecord;
886 static int ett_servicerecord;
887 static int ett_pathrecord;
888 static int ett_pathrecord_dgid;
889 static int ett_pathrecord_sgid;
890 static int ett_mcmemberrecord;
891 static int ett_tracerecord;
892 static int ett_multipathrecord_gid;
893 static int ett_multipathrecord_guid;
894 static int ett_multipathrecord_lid;
895 static int ett_cableinforecord;
896 static int ett_serviceassocrecord;
897 static int ett_sctoslmappingtablerecord;
898 static int ett_portgroupforwardingtablerecord;
899 static int ett_vfinforecord;
900 static int ett_quarantinednoderecord;
901 static int ett_fabricinforecord;
902 /* PM */
903 static int ett_portstatus;
904 static int ett_portstatus_vl;
905 static int ett_clearportstatus;
906 static int ett_clearportstatus_counterselectmask;
907 static int ett_dataportcounters;
908 static int ett_dataportcounters_port;
909 static int ett_dataportcounters_vl;
910 static int ett_errorportcounters;
911 static int ett_errorportcounters_port;
912 static int ett_errorportinfo;
913 static int ett_errorportinfoport;
914 static int ett_errorportinfo_portrcverrorinfo;
915 static int ett_errorportinfo_excessivebufferoverruninfo;
916 static int ett_errorportinfo_portxmitconstrainterrorinfo;
917 static int ett_errorportinfo_portrcvconstrainterrorinfo;
918 static int ett_errorportinfo_portrcvswitchrelayerrorinfo;
919 static int ett_errorportinfo_uncorrectableerrorinfo;
920 static int ett_errorportinfo_fmconfigerrorinfo;
921 /* PA */
922 static int ett_getgrouplist;
923 static int ett_getgroupinfo;
924 static int ett_getgroupinfoutilstats;
925 static int ett_getgroupinfoutilbuckets;
926 static int ett_getgroupinfoerrorsummary;
927 static int ett_getgroupinfoerrintegritybucket;
928 static int ett_getgroupinfoerrcongestionbucket;
929 static int ett_getgroupinfoerrsmacongestionbucket;
930 static int ett_getgroupinfoerrbubblebucket;
931 static int ett_getgroupinfoerrsecuritybucket;
932 static int ett_getgroupinfoerrroutingbucket;
933 static int ett_getportcounters;
934 static int ett_clearportcounters;
935 static int ett_clearportcounters_counterselectmask;
936 static int ett_clearallportcounters;
937 static int ett_clearallportcounters_counterselectmask;
938 static int ett_pmconfig;
939 static int ett_getgroupconfig;
940 static int ett_getgroupconfigport;
941 static int ett_movefreezeframeold;
942 static int ett_movefreezeframenew;
943 static int ett_getfocusports;
944 static int ett_getfocusportsport;
945 static int ett_getimageinfo;
946 static int ett_getimageinfosm;
947 static int ett_getvflist;
948 static int ett_getvfinfo;
949 static int ett_getvfinfoutilstats;
950 static int ett_getvfinfoutilbuckets;
951 static int ett_getvfinfoerrorsummary;
952 static int ett_getvfinfoerrintegritybucket;
953 static int ett_getvfinfoerrcongestionbucket;
954 static int ett_getvfinfoerrsmacongestionbucket;
955 static int ett_getvfinfoerrbubblebucket;
956 static int ett_getvfinfoerrsecuritybucket;
957 static int ett_getvfinfoerrroutingbucket;
958 static int ett_getvfconfig;
959 static int ett_getvfconfigport;
960 static int ett_getvffocusports;
961 static int ett_getvffocusportsport;
962 static int ett_getvfportcounters;
963 static int ett_clearvfportcounters;
964 static int ett_clearvfportcounters_counterselectmask;
966 /* Reserved Fields */
967 static int hf_opa_reserved8;
968 static int hf_opa_reserved16;
969 static int hf_opa_reserved24;
970 static int hf_opa_reserved32;
971 static int hf_opa_reserved64;
972 /* opa_MAD Dissector */
973 static int hf_opa_etype;
974 static int hf_opa_etype_reserved16;
975 /* SM Header - Lid Routed*/
976 static int hf_opa_sm_lid;
977 static int hf_opa_sm_m_key;
978 /* SM Header - Directed Route */
979 static int hf_opa_sm_dr;
980 static int hf_opa_sm_dr_slid;
981 static int hf_opa_sm_dr_dlid;
982 static int hf_opa_sm_dr_initial_path;
983 static int hf_opa_sm_dr_return_path;
984 static int hf_opa_sm_dr_reserved64;
985 /* SA Header */
986 static int hf_opa_sa;
987 static int hf_opa_sa_sm_key;
988 static int hf_opa_sa_attribute_offset;
989 static int hf_opa_sa_component_mask;
990 /* PM Header / PA Header */
991 static int hf_opa_pm;
992 static int hf_opa_pa;
993 static int hf_opa_pa_sm_key;
994 static int hf_opa_pa_attribute_offset;
995 static int hf_opa_pa_component_mask;
996 /* Other Vendor Header */
997 static int hf_opa_vendor;
998 static int hf_opa_application;
999 static int hf_opa_reservedmclass;
1000 static int hf_opa_unknown;
1002 /* MAD Header */
1003 static int hf_opa_mad;
1004 static int hf_opa_mad_base_version;
1005 static int hf_opa_mad_mgmt_class;
1006 static int hf_opa_mad_class_version;
1007 static int hf_opa_mad_method;
1008 static int hf_opa_mad_status;
1009 static int hf_opa_mad_status_DR_D;
1010 static int hf_opa_mad_status_DR_status;
1011 static int hf_opa_mad_status_DR_Hop_Pointer;
1012 static int hf_opa_mad_status_DR_Hop_Count;
1013 static int hf_opa_mad_status_NM_ClassSpecific;
1014 static int hf_opa_mad_status_NM_reserved1;
1015 static int hf_opa_mad_status_NM_InvalidField;
1016 static int hf_opa_mad_status_NM_RedirectRqrd;
1017 static int hf_opa_mad_status_NM_Busy;
1018 static int * const _mad_status[] = {
1019 &hf_opa_mad_status_NM_ClassSpecific,
1020 &hf_opa_mad_status_NM_reserved1,
1021 &hf_opa_mad_status_NM_InvalidField,
1022 &hf_opa_mad_status_NM_RedirectRqrd,
1023 &hf_opa_mad_status_NM_Busy,
1024 NULL
1026 static int hf_opa_mad_transaction_id;
1027 static int hf_opa_mad_attribute_id;
1028 static int hf_opa_attribute_modifier;
1029 static int hf_opa_attribute_modifier_A;
1030 static int hf_opa_attribute_modifier_A2;
1031 static int hf_opa_attribute_modifier_A3;
1032 static int hf_opa_attribute_modifier_A4;
1033 static int hf_opa_attribute_modifier_A5;
1034 static int hf_opa_attribute_modifier_A6;
1035 static int hf_opa_attribute_modifier_B;
1036 static int hf_opa_attribute_modifier_B2;
1037 static int hf_opa_attribute_modifier_B3;
1038 static int hf_opa_attribute_modifier_B4;
1039 static int hf_opa_attribute_modifier_B5;
1040 static int hf_opa_attribute_modifier_E;
1041 static int hf_opa_attribute_modifier_I;
1042 static int hf_opa_attribute_modifier_L;
1043 static int hf_opa_attribute_modifier_NP;
1044 static int hf_opa_attribute_modifier_NB;
1045 static int hf_opa_attribute_modifier_N2;
1046 static int hf_opa_attribute_modifier_P;
1047 static int hf_opa_attribute_modifier_P2;
1048 static int hf_opa_attribute_modifier_P3;
1049 static int hf_opa_attribute_modifier_S;
1050 static int hf_opa_attribute_modifier_S2;
1051 static int hf_opa_attribute_modifier_Y;
1052 static int * const _attribute_modifier_Nps2AP[] = {
1053 &hf_opa_attribute_modifier_NP,
1054 &hf_opa_attribute_modifier_S2,
1055 &hf_opa_attribute_modifier_A,
1056 &hf_opa_attribute_modifier_P,
1057 NULL
1059 static int * const _attribute_modifier_NpS2P[] = {
1060 &hf_opa_attribute_modifier_NP,
1061 &hf_opa_attribute_modifier_S2,
1062 &hf_opa_attribute_modifier_P,
1063 NULL
1065 static int * const _attribute_modifier_NpAP[] = {
1066 &hf_opa_attribute_modifier_NP,
1067 &hf_opa_attribute_modifier_A,
1068 &hf_opa_attribute_modifier_P,
1069 NULL
1071 static int * const _attribute_modifier_NbP2B[] = {
1072 &hf_opa_attribute_modifier_NB,
1073 &hf_opa_attribute_modifier_P2,
1074 &hf_opa_attribute_modifier_B,
1075 NULL
1077 static int * const _attribute_modifier_NbA2B2IE[] = {
1078 &hf_opa_attribute_modifier_NB,
1079 &hf_opa_attribute_modifier_A2,
1080 &hf_opa_attribute_modifier_B2,
1081 &hf_opa_attribute_modifier_I,
1082 &hf_opa_attribute_modifier_E,
1083 NULL
1085 static int * const _attribute_modifier_NpSAP[] = {
1086 &hf_opa_attribute_modifier_NP,
1087 &hf_opa_attribute_modifier_S,
1088 &hf_opa_attribute_modifier_A,
1089 &hf_opa_attribute_modifier_P,
1090 NULL
1092 static int * const _attribute_modifier_NbA3B3[] = {
1093 &hf_opa_attribute_modifier_NB,
1094 &hf_opa_attribute_modifier_A3,
1095 &hf_opa_attribute_modifier_B3,
1096 NULL
1098 static int * const _attribute_modifier_NbP3A4B4[] = {
1099 &hf_opa_attribute_modifier_NB,
1100 &hf_opa_attribute_modifier_P3,
1101 &hf_opa_attribute_modifier_A4,
1102 &hf_opa_attribute_modifier_B4,
1103 NULL
1105 static int * const _attribute_modifier_A5LP[] = {
1106 &hf_opa_attribute_modifier_A5,
1107 &hf_opa_attribute_modifier_L,
1108 &hf_opa_attribute_modifier_P,
1109 NULL
1111 static int * const _attribute_modifier_NbYAP[] = {
1112 &hf_opa_attribute_modifier_NB,
1113 &hf_opa_attribute_modifier_Y,
1114 &hf_opa_attribute_modifier_A,
1115 &hf_opa_attribute_modifier_P,
1116 NULL
1118 static int * const _attribute_modifier_NpP[] = {
1119 &hf_opa_attribute_modifier_NP,
1120 &hf_opa_attribute_modifier_P,
1121 NULL
1123 static int * const _attribute_modifier_NbP[] = {
1124 &hf_opa_attribute_modifier_NB,
1125 &hf_opa_attribute_modifier_P,
1126 NULL
1128 static int * const _attribute_modifier_NbP3A6B5[] = {
1129 &hf_opa_attribute_modifier_NB,
1130 &hf_opa_attribute_modifier_P3,
1131 &hf_opa_attribute_modifier_A6,
1132 &hf_opa_attribute_modifier_B5,
1133 NULL
1135 /* RMPP Header */
1136 static int hf_opa_rmpp;
1137 static int hf_opa_rmpp_version;
1138 static int hf_opa_rmpp_type;
1139 static int hf_opa_rmpp_r_resp_time;
1140 static int hf_opa_rmpp_flags_last;
1141 static int hf_opa_rmpp_flags_first;
1142 static int hf_opa_rmpp_flags_active;
1143 static int hf_opa_rmpp_status;
1144 static int hf_opa_rmpp_data1;
1145 static int hf_opa_rmpp_data2;
1146 static int hf_opa_rmpp_segment_number;
1147 static int hf_opa_rmpp_payload_length32;
1148 static int hf_opa_rmpp_new_window_last;
1149 /* SA Packets */
1150 /* SA RID */
1151 static int hf_opa_sa_Lid;
1152 static int hf_opa_sa_EndportLID;
1153 static int hf_opa_sa_PortNum;
1154 static int hf_opa_sa_InputPortNum;
1155 static int hf_opa_sa_OutputPortNum;
1156 static int hf_opa_sa_Port;
1157 static int hf_opa_sa_reserved14;
1158 static int hf_opa_sa_BlockNum_18b;
1159 static int hf_opa_sa_Position;
1160 static int hf_opa_sa_Position_16b;
1161 static int hf_opa_sa_reserved9;
1162 static int hf_opa_sa_reserved9_16b;
1163 static int hf_opa_sa_BlockNum_21b;
1164 static int hf_opa_sa_BlockNum_8b;
1165 static int hf_opa_sa_BlockNum_16b;
1166 static int hf_opa_sa_BlockNum_5b;
1167 static int hf_opa_sa_SubscriberLID;
1168 static int hf_opa_sa_Enum;
1169 static int hf_opa_sa_FromLID;
1170 static int hf_opa_sa_FromPort;
1171 static int hf_opa_sa_ServiceID;
1172 static int hf_opa_sa_ServiceLID;
1173 static int hf_opa_sa_ServiceP_Key;
1174 static int hf_opa_sa_ServiceGID;
1175 static int hf_opa_sa_MGID;
1176 static int hf_opa_sa_PortGID;
1178 /* Attribute Specific Fields */
1179 static int hf_opa_Notice;
1180 static int hf_opa_Notice_IsGeneric;
1181 static int hf_opa_Notice_Type;
1182 static int hf_opa_Notice_ProducerType;
1183 static int hf_opa_Notice_TrapNumber;
1184 static int hf_opa_Notice_VendorID;
1185 static int hf_opa_Notice_DeviceID;
1186 static int hf_opa_Notice_IssuerLID;
1187 static int hf_opa_Notice_IssuerGID;
1188 static int hf_opa_Notice_Toggle;
1189 static int hf_opa_Notice_Count;
1190 static int hf_opa_Notice_ClassDataDetails;
1191 static int hf_opa_Trap;
1192 static int hf_opa_Trap_GID;
1193 static int hf_opa_Trap_LID;
1194 static int hf_opa_Trap_PORTNO;
1195 static int hf_opa_Trap_CAPABILITYMASK;
1196 static int hf_opa_Trap_CAPABILITYMASK3;
1197 static int hf_opa_Trap_144_reserved;
1198 static int hf_opa_Trap_LinkWidthDowngradeEnabledChange;
1199 static int hf_opa_Trap_LinkSpeecEnabledChange;
1200 static int hf_opa_Trap_LinkWidthEnabledChange;
1201 static int hf_opa_Trap_NodeDescriptionChange;
1202 static int hf_opa_Trap_SystemImageGUID;
1203 static int hf_opa_Trap_DRSLID;
1204 static int hf_opa_Trap_Method;
1205 static int hf_opa_Trap_AttributeID;
1206 static int hf_opa_Trap_AttributeModifier;
1207 static int hf_opa_Trap_MKey;
1208 static int hf_opa_Trap_DRNotice;
1209 static int hf_opa_Trap_DRPathTruncated;
1210 static int hf_opa_Trap_DRHopCount;
1211 static int hf_opa_Trap_DRNoticeReturnPath;
1212 static int hf_opa_Trap_Key;
1213 static int hf_opa_Trap_SL;
1214 static int hf_opa_Trap_SL_reserved;
1215 static int hf_opa_Trap_QP;
1216 static int hf_opa_Trap_DataValid;
1217 static int hf_opa_Trap_DataValid_Lid1;
1218 static int hf_opa_Trap_DataValid_Lid2;
1219 static int hf_opa_Trap_DataValid_PKey;
1220 static int hf_opa_Trap_DataValid_SL;
1221 static int hf_opa_Trap_DataValid_QP1;
1222 static int hf_opa_Trap_DataValid_QP2;
1223 static int hf_opa_Trap_DataValid_Gid1;
1224 static int hf_opa_Trap_DataValid_Gid2;
1225 static int hf_opa_Trap_DataValid_Reserved;
1226 static int * const _Trap_DataValid[] = {
1227 &hf_opa_Trap_DataValid_Lid1,
1228 &hf_opa_Trap_DataValid_Lid2,
1229 &hf_opa_Trap_DataValid_PKey,
1230 &hf_opa_Trap_DataValid_SL,
1231 &hf_opa_Trap_DataValid_QP1,
1232 &hf_opa_Trap_DataValid_QP2,
1233 &hf_opa_Trap_DataValid_Gid1,
1234 &hf_opa_Trap_DataValid_Gid2,
1235 &hf_opa_Trap_DataValid_Reserved,
1236 NULL
1238 static int hf_opa_Trap_PKey;
1239 static int hf_opa_ClassPortInfo;
1240 static int hf_opa_ClassPortInfo_BaseVersion;
1241 static int hf_opa_ClassPortInfo_ClassVersion;
1242 static int hf_opa_ClassPortInfo_CapMask;
1243 static int hf_opa_ClassPortInfo_CapMask2;
1244 static int hf_opa_ClassPortInfo_RespTimeValue;
1245 static int hf_opa_ClassPortInfo_Redirect_GID;
1246 static int hf_opa_ClassPortInfo_Redirect_TClass;
1247 static int hf_opa_ClassPortInfo_Redirect_SL;
1248 static int hf_opa_ClassPortInfo_Redirect_reserved;
1249 static int hf_opa_ClassPortInfo_Redirect_FlowLabel;
1250 static int hf_opa_ClassPortInfo_Redirect_LID;
1251 static int hf_opa_ClassPortInfo_Redirect_reserved2;
1252 static int hf_opa_ClassPortInfo_Redirect_QP;
1253 static int hf_opa_ClassPortInfo_Redirect_Q_Key;
1254 static int hf_opa_ClassPortInfo_Trap_GID;
1255 static int hf_opa_ClassPortInfo_Trap_TClass;
1256 static int hf_opa_ClassPortInfo_Trap_reserved;
1257 static int hf_opa_ClassPortInfo_Trap_FlowLabel;
1258 static int hf_opa_ClassPortInfo_Trap_LID;
1259 static int hf_opa_ClassPortInfo_Trap_HopLimit;
1260 static int hf_opa_ClassPortInfo_Trap_QP;
1261 static int hf_opa_ClassPortInfo_Trap_Q_Key;
1262 static int hf_opa_ClassPortInfo_Trap_P_Key;
1263 static int hf_opa_ClassPortInfo_Redirect_P_Key;
1264 static int hf_opa_ClassPortInfo_Trap_SL;
1265 static int hf_opa_ClassPortInfo_Trap_reserved2;
1266 static int hf_opa_InformInfo;
1267 static int hf_opa_InformInfo_GID;
1268 static int hf_opa_InformInfo_LIDRangeBegin;
1269 static int hf_opa_InformInfo_LIDRangeEnd;
1270 static int hf_opa_InformInfo_IsGeneric;
1271 static int hf_opa_InformInfo_Subscribe;
1272 static int hf_opa_InformInfo_Type;
1273 static int hf_opa_InformInfo_TrapNumber;
1274 static int hf_opa_InformInfo_DeviceID;
1275 static int hf_opa_InformInfo_QPN;
1276 static int hf_opa_InformInfo_reserved;
1277 static int hf_opa_InformInfo_RespTimeValue;
1278 static int hf_opa_InformInfo_ProducerType;
1279 static int hf_opa_InformInfo_VendorID;
1280 /* SM */
1281 static int hf_opa_NodeDescription;
1282 static int hf_opa_NodeDescription_NodeString;
1283 static int hf_opa_NodeInfo;
1284 static int hf_opa_NodeInfo_BaseVersion;
1285 static int hf_opa_NodeInfo_ClassVersion;
1286 static int hf_opa_NodeInfo_NodeType;
1287 static int hf_opa_NodeInfo_NumPorts;
1288 static int hf_opa_NodeInfo_SystemImageGUID;
1289 static int hf_opa_NodeInfo_NodeGUID;
1290 static int hf_opa_NodeInfo_PortGUID;
1291 static int hf_opa_NodeInfo_PartitionCap;
1292 static int hf_opa_NodeInfo_DeviceID;
1293 static int hf_opa_NodeInfo_Revision;
1294 static int hf_opa_NodeInfo_LocalPortNum;
1295 static int hf_opa_NodeInfo_VendorID;
1296 static int hf_opa_SwitchInfo;
1297 static int hf_opa_SwitchInfo_LinearFDBCap;
1298 static int hf_opa_SwitchInfo_MulticastFDBCap;
1299 static int hf_opa_SwitchInfo_LinearFDBTop;
1300 static int hf_opa_SwitchInfo_MulticastFDBTop;
1301 static int hf_opa_SwitchInfo_CollectiveCap;
1302 static int hf_opa_SwitchInfo_CollectiveTop;
1303 static int hf_opa_SwitchInfo_IPAddrIPv6;
1304 static int hf_opa_SwitchInfo_IPAddrIPv4;
1305 static int hf_opa_SwitchInfo_LifeTimeValue;
1306 static int hf_opa_SwitchInfo_PortStateChange;
1307 static int hf_opa_SwitchInfo_reserved2;
1308 static int hf_opa_SwitchInfo_PartitionEnforcementCap;
1309 static int hf_opa_SwitchInfo_PortGroupCap;
1310 static int hf_opa_SwitchInfo_PortGroupTop;
1311 static int hf_opa_SwitchInfo_SupportedRoutingMode;
1312 static int hf_opa_SwitchInfo_EnabledRoutingMode;
1313 static int hf_opa_SwitchInfo_reserved3;
1314 static int hf_opa_SwitchInfo_EnhancedPortZero;
1315 static int hf_opa_SwitchInfo_reserved4;
1316 static int hf_opa_SwitchInfo_reserved5;
1317 static int hf_opa_SwitchInfo_CollectiveMask;
1318 static int hf_opa_SwitchInfo_MulticastMask;
1319 static int hf_opa_SwitchInfo_AdaptiveRoutingEnable;
1320 static int hf_opa_SwitchInfo_AdaptiveRoutingPause;
1321 static int hf_opa_SwitchInfo_AdaptiveRoutingAlgorithm;
1322 static int hf_opa_SwitchInfo_AdaptiveRoutingFrequency;
1323 static int hf_opa_SwitchInfo_AdaptiveRoutingLostRoutesOnly;
1324 static int hf_opa_SwitchInfo_AdaptiveRoutingThreshold;
1325 static int hf_opa_SwitchInfo_reserved6;
1326 static int * const _SwitchInfo_AdaptiveRouting[] = {
1327 &hf_opa_SwitchInfo_AdaptiveRoutingEnable,
1328 &hf_opa_SwitchInfo_AdaptiveRoutingPause,
1329 &hf_opa_SwitchInfo_AdaptiveRoutingAlgorithm,
1330 &hf_opa_SwitchInfo_AdaptiveRoutingFrequency,
1331 &hf_opa_SwitchInfo_AdaptiveRoutingLostRoutesOnly,
1332 &hf_opa_SwitchInfo_AdaptiveRoutingThreshold,
1333 &hf_opa_SwitchInfo_reserved6,
1334 NULL
1336 static int hf_opa_SwitchInfo_SwitchCapabilityMask;
1337 static int hf_opa_SwitchInfo_SwitchCapabilityMask_reserved;
1338 static int hf_opa_SwitchInfo_SwitchCapabilityMask_IsAddrRangeConfigSupported;
1339 static int hf_opa_SwitchInfo_SwitchCapabilityMask_reserved2;
1340 static int hf_opa_SwitchInfo_SwitchCapabilityMask_IsAdaptiveRoutingSupported;
1341 static int * const _SwitchInfo_SwitchCapabilityMask[] = {
1342 &hf_opa_SwitchInfo_SwitchCapabilityMask_reserved,
1343 &hf_opa_SwitchInfo_SwitchCapabilityMask_IsAddrRangeConfigSupported,
1344 &hf_opa_SwitchInfo_SwitchCapabilityMask_reserved2,
1345 &hf_opa_SwitchInfo_SwitchCapabilityMask_IsAdaptiveRoutingSupported,
1346 NULL
1348 static int hf_opa_SwitchInfo_CapabilityMaskCollectives;
1349 static int hf_opa_PortInfo;
1350 static int hf_opa_PortInfo_LID;
1351 static int hf_opa_PortInfo_FlowControlMask;
1352 static int hf_opa_PortInfo_VL_PreemptCap;
1353 static int hf_opa_PortInfo_VL_reserved;
1354 static int hf_opa_PortInfo_VL_Cap;
1355 static int hf_opa_PortInfo_VL_HighLimit;
1356 static int hf_opa_PortInfo_VL_PreemptingLimit;
1357 static int hf_opa_PortInfo_VL_ArbitrationHighCap;
1358 static int hf_opa_PortInfo_VL_ArbitrationLowCap;
1359 static int hf_opa_PortInfo_PortPhysConfig_reserved;
1360 static int hf_opa_PortInfo_PortPhysConfig_PortType;
1361 static int hf_opa_PortInfo_MultiCollectMask_reserved;
1362 static int hf_opa_PortInfo_MultiCollectMask_CollectiveMask;
1363 static int hf_opa_PortInfo_MultiCollectMask_MulticastMask;
1364 static int hf_opa_PortInfo_M_KeyProtectBits;
1365 static int hf_opa_PortInfo_S1_reserved;
1366 static int hf_opa_PortInfo_LMC;
1367 static int hf_opa_PortInfo_S2_reserved;
1368 static int hf_opa_PortInfo_MasterSMSL;
1369 static int hf_opa_PortInfo_LinkInitReason;
1370 static int hf_opa_PortInfo_PartitionEnforcementInbound;
1371 static int hf_opa_PortInfo_PartitionEnforcementOutbound;
1372 static int hf_opa_PortInfo_S3_reserved2;
1373 static int hf_opa_PortInfo_S4_reserved;
1374 static int hf_opa_PortInfo_OperationalVL;
1375 static int hf_opa_PortInfo_P_Keys_P_Key_8B;
1376 static int hf_opa_PortInfo_P_Keys_P_Key_10B;
1377 static int hf_opa_PortInfo_M_KeyViolations;
1378 static int hf_opa_PortInfo_P_KeyViolations;
1379 static int hf_opa_PortInfo_Q_KeyViolations;
1380 static int hf_opa_PortInfo_TrapQueuePair_reserved;
1381 static int hf_opa_PortInfo_TrapQueuePair;
1382 static int hf_opa_PortInfo_SAQueuePair_reserved;
1383 static int hf_opa_PortInfo_SAQueuePair;
1384 static int hf_opa_PortInfo_NeighborPortNum;
1385 static int hf_opa_PortInfo_LinkDownReason;
1386 static int hf_opa_PortInfo_NeighborLinkDownReason;
1387 static int hf_opa_PortInfo_ClientReregister;
1388 static int hf_opa_PortInfo_MulticastPKeyTrapSuppressEnabled;
1389 static int hf_opa_PortInfo_Timeout;
1390 static int hf_opa_PortInfo_LinkSpeedSupported;
1391 static int hf_opa_PortInfo_LinkSpeedEnabled;
1392 static int hf_opa_PortInfo_LinkSpeedActive;
1393 static int hf_opa_PortInfo_LinkWidthSupported;
1394 static int hf_opa_PortInfo_LinkWidthEnabled;
1395 static int hf_opa_PortInfo_LinkWidthActive;
1396 static int hf_opa_PortInfo_LinkWidthDowngrade_Supported;
1397 static int hf_opa_PortInfo_LinkWidthDowngrade_Enabled;
1398 static int hf_opa_PortInfo_LinkWidthDowngrade_TxActive;
1399 static int hf_opa_PortInfo_LinkWidthDowngrade_RxActive;
1400 static int hf_opa_PortInfo_PortLinkMode_reserved;
1401 static int hf_opa_PortInfo_PortLinkMode_Supported;
1402 static int hf_opa_PortInfo_PortLinkMode_Enabled;
1403 static int hf_opa_PortInfo_PortLinkMode_Active;
1404 static int hf_opa_PortInfo_PortLTPCRCMode_reserved;
1405 static int hf_opa_PortInfo_PortLTPCRCMode_Supported;
1406 static int hf_opa_PortInfo_PortLTPCRCMode_Enabled;
1407 static int hf_opa_PortInfo_PortLTPCRCMode_Active;
1408 static int hf_opa_PortInfo_PortMode;
1409 static int hf_opa_PortInfo_PortMode_reserved;
1410 static int hf_opa_PortInfo_PortMode_IsActiveOptimizeEnabled;
1411 static int hf_opa_PortInfo_PortMode_IsPassThroughEnabled;
1412 static int hf_opa_PortInfo_PortMode_IsVLMarkerEnabled;
1413 static int hf_opa_PortInfo_PortMode_reserved2;
1414 static int hf_opa_PortInfo_PortMode_Is16BTrapQueryEnabled;
1415 static int hf_opa_PortInfo_PortMode_reserved3;
1416 static int * const _PortInfo_PortMode[] = {
1417 &hf_opa_PortInfo_PortMode_reserved,
1418 &hf_opa_PortInfo_PortMode_IsActiveOptimizeEnabled,
1419 &hf_opa_PortInfo_PortMode_IsPassThroughEnabled,
1420 &hf_opa_PortInfo_PortMode_IsVLMarkerEnabled,
1421 &hf_opa_PortInfo_PortMode_reserved2,
1422 &hf_opa_PortInfo_PortMode_Is16BTrapQueryEnabled,
1423 &hf_opa_PortInfo_PortMode_reserved3,
1424 NULL
1426 static int hf_opa_PortInfo_PortPacketFormats_Supported;
1427 static int hf_opa_PortInfo_PortPacketFormats_Enabled;
1428 static int hf_opa_PortInfo_FlitControl_Interleave_reserved;
1429 static int hf_opa_PortInfo_FlitControl_Interleave_DistanceSupported;
1430 static int hf_opa_PortInfo_FlitControl_Interleave_DistanceEnabled;
1431 static int hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelTxEnabled;
1432 static int hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelRxSupported;
1433 static int hf_opa_PortInfo_FlitControl_Preemption_MinInitial;
1434 static int hf_opa_PortInfo_FlitControl_Preemption_MinTail;
1435 static int hf_opa_PortInfo_FlitControl_Preemption_LargePacketLimit;
1436 static int hf_opa_PortInfo_FlitControl_Preemption_SmallPacketLimit;
1437 static int hf_opa_PortInfo_FlitControl_Preemption_MaxSmallPacketLimit;
1438 static int hf_opa_PortInfo_FlitControl_Preemption_PreemptionLimit;
1439 static int hf_opa_PortInfo_PortErrorAction;
1440 static int hf_opa_PortInfo_PortErrorAction_ExcessiveBufferOverrun;
1441 static int hf_opa_PortInfo_PortErrorAction_reserved;
1442 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorExceedMulticastLimit;
1443 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadControlFlit;
1444 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadPreempt;
1445 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadVLMarker;
1446 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCrdtAck;
1447 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCtrlDist;
1448 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadTailDist;
1449 static int hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadHeadDist;
1450 static int hf_opa_PortInfo_PortErrorAction_reserved2;
1451 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadVLMarker;
1452 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptVL15;
1453 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptError;
1454 static int hf_opa_PortInfo_PortErrorAction_reserved3;
1455 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadMidTail;
1456 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorReserved;
1457 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSC;
1458 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadL2;
1459 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadDLID;
1460 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSLID;
1461 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooShort;
1462 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooLong;
1463 static int hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadPktLen;
1464 static int hf_opa_PortInfo_PortErrorAction_reserved4;
1465 static int * const _PortInfo_PortErrorAction[] = {
1466 &hf_opa_PortInfo_PortErrorAction_ExcessiveBufferOverrun,
1467 &hf_opa_PortInfo_PortErrorAction_reserved,
1468 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorExceedMulticastLimit,
1469 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadControlFlit,
1470 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadPreempt,
1471 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadVLMarker,
1472 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCrdtAck,
1473 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCtrlDist,
1474 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadTailDist,
1475 &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadHeadDist,
1476 &hf_opa_PortInfo_PortErrorAction_reserved2,
1477 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadVLMarker,
1478 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptVL15,
1479 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptError,
1480 &hf_opa_PortInfo_PortErrorAction_reserved3,
1481 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadMidTail,
1482 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorReserved,
1483 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSC,
1484 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadL2,
1485 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadDLID,
1486 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSLID,
1487 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooShort,
1488 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooLong,
1489 &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadPktLen,
1490 &hf_opa_PortInfo_PortErrorAction_reserved4,
1491 NULL
1493 static int hf_opa_PortInfo_PassThroughControl_EgressPort;
1494 static int hf_opa_PortInfo_PassThroughControl_reserved;
1495 static int hf_opa_PortInfo_PassThroughControl_DRControl;
1496 static int hf_opa_PortInfo_M_KeyLeasePeriod;
1497 static int hf_opa_PortInfo_BufferUnits_reserved;
1498 static int hf_opa_PortInfo_BufferUnits_VL15Init;
1499 static int hf_opa_PortInfo_BufferUnits_VL15CreditRate;
1500 static int hf_opa_PortInfo_BufferUnits_CreditAck;
1501 static int hf_opa_PortInfo_BufferUnits_BufferAlloc;
1502 static int hf_opa_PortInfo_MasterSMLID;
1503 static int hf_opa_PortInfo_M_Key;
1504 static int hf_opa_PortInfo_SubnetPrefix;
1505 static int hf_opa_PortInfo_VL1;
1506 static int hf_opa_PortInfo_VL2;
1507 static int hf_opa_PortInfo_XmitQ_VLStallCount;
1508 static int hf_opa_PortInfo_XmitQ_HOQLife;
1509 static int hf_opa_PortInfo_IPAddrIPv6;
1510 static int hf_opa_PortInfo_IPAddrIPv4;
1511 static int hf_opa_PortInfo_NeighborNodeGUID;
1512 static int hf_opa_PortInfo_CapabilityMask;
1513 static int hf_opa_PortInfo_CapabilityMask_reserved;
1514 static int hf_opa_PortInfo_CapabilityMask_IsCapabilityMaskNoticeSupported;
1515 static int hf_opa_PortInfo_CapabilityMask_reserved2;
1516 static int hf_opa_PortInfo_CapabilityMask_IsVendorClassSupported;
1517 static int hf_opa_PortInfo_CapabilityMask_IsDeviceManagementSupported;
1518 static int hf_opa_PortInfo_CapabilityMask_reserved3;
1519 static int hf_opa_PortInfo_CapabilityMask_IsConnectionManagementSupported;
1520 static int hf_opa_PortInfo_CapabilityMask_reserved4;
1521 static int hf_opa_PortInfo_CapabilityMask_IsAutomaticMigrationSupported;
1522 static int hf_opa_PortInfo_CapabilityMask_reserved5;
1523 static int hf_opa_PortInfo_CapabilityMask_IsSM;
1524 static int hf_opa_PortInfo_CapabilityMask_reserved6;
1525 static int * const _PortInfo_CapabilityMask[] = {
1526 &hf_opa_PortInfo_CapabilityMask_reserved,
1527 &hf_opa_PortInfo_CapabilityMask_IsCapabilityMaskNoticeSupported,
1528 &hf_opa_PortInfo_CapabilityMask_reserved2,
1529 &hf_opa_PortInfo_CapabilityMask_IsVendorClassSupported,
1530 &hf_opa_PortInfo_CapabilityMask_IsDeviceManagementSupported,
1531 &hf_opa_PortInfo_CapabilityMask_reserved3,
1532 &hf_opa_PortInfo_CapabilityMask_IsConnectionManagementSupported,
1533 &hf_opa_PortInfo_CapabilityMask_reserved4,
1534 &hf_opa_PortInfo_CapabilityMask_IsAutomaticMigrationSupported,
1535 &hf_opa_PortInfo_CapabilityMask_reserved5,
1536 &hf_opa_PortInfo_CapabilityMask_IsSM,
1537 &hf_opa_PortInfo_CapabilityMask_reserved6,
1538 NULL
1540 static int hf_opa_PortInfo_CapabilityMask3;
1541 static int hf_opa_PortInfo_CapabilityMask3_reserved;
1542 static int hf_opa_PortInfo_CapabilityMask3_IsSnoopSupported;
1543 static int hf_opa_PortInfo_CapabilityMask3_IsAsyncSCtoVLSupported;
1544 static int hf_opa_PortInfo_CapabilityMask3_IsAddrRangeConfigSupported;
1545 static int hf_opa_PortInfo_CapabilityMask3_IsPassThroughSupported;
1546 static int hf_opa_PortInfo_CapabilityMask3_IsSharedSpaceSupported;
1547 static int hf_opa_PortInfo_CapabilityMask3_reserved2;
1548 static int hf_opa_PortInfo_CapabilityMask3_IsVLMarkerSupported;
1549 static int hf_opa_PortInfo_CapabilityMask3_IsVLrSupported;
1550 static int * const _PortInfo_CapabilityMask3[] = {
1551 &hf_opa_PortInfo_CapabilityMask3_reserved,
1552 &hf_opa_PortInfo_CapabilityMask3_IsSnoopSupported,
1553 &hf_opa_PortInfo_CapabilityMask3_IsAsyncSCtoVLSupported,
1554 &hf_opa_PortInfo_CapabilityMask3_IsAddrRangeConfigSupported,
1555 &hf_opa_PortInfo_CapabilityMask3_IsPassThroughSupported,
1556 &hf_opa_PortInfo_CapabilityMask3_IsSharedSpaceSupported,
1557 &hf_opa_PortInfo_CapabilityMask3_reserved2,
1558 &hf_opa_PortInfo_CapabilityMask3_IsVLMarkerSupported,
1559 &hf_opa_PortInfo_CapabilityMask3_IsVLrSupported,
1560 NULL
1562 static int hf_opa_PortInfo_OverallBufferSpace;
1563 static int hf_opa_PortInfo_DiagCode;
1564 static int hf_opa_PortInfo_ReplayDepth_BufferDepth;
1565 static int hf_opa_PortInfo_ReplayDepth_WireDepth;
1566 static int hf_opa_PortInfo_PortNeighborMode_reserved;
1567 static int hf_opa_PortInfo_PortNeighborMode_MgmtAllowed;
1568 static int hf_opa_PortInfo_PortNeighborMode_NeighborFWAuthenBypass;
1569 static int hf_opa_PortInfo_PortNeighborMode_NeighborNodeType;
1570 static int hf_opa_PortInfo_MTU_reserved;
1571 static int hf_opa_PortInfo_MTU_Cap;
1572 static int hf_opa_PortInfo_Resp_reserved;
1573 static int hf_opa_PortInfo_Resp_TimeValue;
1574 static int hf_opa_PortInfo_LocalPortNum;
1575 static int hf_opa_PortStates;
1576 static int hf_opa_PortStates_reserved;
1577 static int hf_opa_PortStates_LEDEnabled;
1578 static int hf_opa_PortStates_IsSMConfigurationStarted;
1579 static int hf_opa_PortStates_NeighborNormal;
1580 static int hf_opa_PortStates_OfflineDisabledReason;
1581 static int hf_opa_PortStates_PortUnsleepState;
1582 static int hf_opa_PortStates_DownDefaultState;
1583 static int hf_opa_PortStates_PortPhysicalState;
1584 static int hf_opa_PortStates_PortState;
1585 static int * const _PortStates[] = {
1586 &hf_opa_PortStates_reserved,
1587 &hf_opa_PortStates_LEDEnabled,
1588 &hf_opa_PortStates_IsSMConfigurationStarted,
1589 &hf_opa_PortStates_NeighborNormal,
1590 &hf_opa_PortStates_OfflineDisabledReason,
1591 &hf_opa_PortStates_PortUnsleepState,
1592 &hf_opa_PortStates_DownDefaultState,
1593 &hf_opa_PortStates_PortPhysicalState,
1594 &hf_opa_PortStates_PortState,
1595 NULL
1597 static int hf_opa_PortStates_LinkWidthDowngradeTxActive;
1598 static int hf_opa_PortStates_LinkWidthDowngradeRxActive;
1599 static int hf_opa_P_KeyTable;
1600 static int hf_opa_P_KeyTable_MembershipType;
1601 static int hf_opa_P_KeyTable_P_KeyBase;
1602 static int hf_opa_SLtoSCMappingTable;
1603 static int hf_opa_SLtoSCMappingTable_SLtoSC_HighBits;
1604 static int hf_opa_SLtoSCMappingTable_SLtoSC_LowBits;
1605 static int hf_opa_SCtoSCMappingTable;
1606 static int hf_opa_SCtoSCMappingTable_SCtoSC_HighBits;
1607 static int hf_opa_SCtoSCMappingTable_SCtoSC_LowBits;
1608 static int hf_opa_SCtoSLMappingTable;
1609 static int hf_opa_SCtoSLMappingTable_SCtoSL_HighBits;
1610 static int hf_opa_SCtoSLMappingTable_SCtoSL_LowBits;
1611 static int hf_opa_SCtoVLxMappingTable;
1612 static int hf_opa_SCtoVLxMappingTable_SCtoVLx_HighBits;
1613 static int hf_opa_SCtoVLxMappingTable_SCtoVLx_LowBits;
1614 static int hf_opa_VLArbitrationTable;
1615 static int hf_opa_VLArbitrationTable_reserved;
1616 static int hf_opa_VLArbitrationTable_VL;
1617 static int hf_opa_VLArbitrationTable_Weight;
1618 static int hf_opa_VLArbitrationTable_Matrix;
1619 static int hf_opa_LinearForwardingTable;
1620 static int hf_opa_LinearForwardingTable_Port;
1621 static int hf_opa_MulticastForwardingTable;
1622 static int hf_opa_MulticastForwardingTable_PortMask;
1623 static int hf_opa_PortGroupForwardingTable;
1624 static int hf_opa_PortGroupForwardingTable_Port;
1625 static int hf_opa_PortGroupTable;
1626 static int hf_opa_PortGroupTable_PortMask;
1627 static int hf_opa_SMInfo;
1628 static int hf_opa_SMInfo_GUID;
1629 static int hf_opa_SMInfo_SM_Key;
1630 static int hf_opa_SMInfo_ActCount;
1631 static int hf_opa_SMInfo_ElapsedTime;
1632 static int hf_opa_SMInfo_Priority;
1633 static int hf_opa_SMInfo_ElevatedPriority;
1634 static int hf_opa_SMInfo_InitialPriority;
1635 static int hf_opa_SMInfo_SMState;
1636 static int hf_opa_LedInfo;
1637 static int hf_opa_LedInfo_LedMask;
1638 static int hf_opa_LedInfo_reserved;
1639 static int hf_opa_CableInfo;
1640 static int hf_opa_CableInfo_Data;
1641 static int hf_opa_CableInfo_DataStream;
1642 static int hf_opa_Aggregate;
1643 static int hf_opa_Aggregate_AttributeID;
1644 static int hf_opa_Aggregate_Error;
1645 static int hf_opa_Aggregate_RequestLength;
1646 static int hf_opa_BufferControlTable;
1647 static int hf_opa_BufferControlTable_TxOverallSharedLimit;
1648 static int hf_opa_BufferControlTable_TxDedicatedLimit;
1649 static int hf_opa_BufferControlTable_TxSharedLimit;
1650 static int hf_opa_CongestionInfo;
1651 static int hf_opa_CongestionInfo_CongestionInfo;
1652 static int hf_opa_CongestionInfo_ControlTableCap;
1653 static int hf_opa_CongestionInfo_CongestionLogLength;
1654 static int hf_opa_SwitchCongestionLog;
1655 static int hf_opa_SwitchCongestionLog_LogType;
1656 static int hf_opa_SwitchCongestionLog_CongestionFlags;
1657 static int hf_opa_SwitchCongestionLog_LogEventsCounter;
1658 static int hf_opa_SwitchCongestionLog_CurrentTimeStamp;
1659 static int hf_opa_SwitchCongestionLog_PortMap;
1660 static int hf_opa_SwitchCongestionLog_SLID;
1661 static int hf_opa_SwitchCongestionLog_DLID;
1662 static int hf_opa_SwitchCongestionLog_SC;
1663 static int hf_opa_SwitchCongestionLog_reserved;
1664 static int hf_opa_SwitchCongestionLog_TimeStamp;
1665 static int hf_opa_SwitchCongestionSetting;
1666 static int hf_opa_SwitchCongestionSetting_Control_Map;
1667 static int hf_opa_SwitchCongestionSetting_Victim_Mask;
1668 static int hf_opa_SwitchCongestionSetting_Credit_Mask;
1669 static int hf_opa_SwitchCongestionSetting_Threshold;
1670 static int hf_opa_SwitchCongestionSetting_reserved1;
1671 static int hf_opa_SwitchCongestionSetting_Packet_Size;
1672 static int hf_opa_SwitchCongestionSetting_CS_Threshold;
1673 static int hf_opa_SwitchCongestionSetting_reserved2;
1674 static int hf_opa_SwitchCongestionSetting_CS_ReturnDelay;
1675 static int hf_opa_SwitchCongestionSetting_Marking_Rate;
1676 static int hf_opa_SwitchPortCongestionSetting;
1677 static int hf_opa_SwitchPortCongestionSetting_Valid;
1678 static int hf_opa_SwitchPortCongestionSetting_Control_Type;
1679 static int hf_opa_SwitchPortCongestionSetting_reserved;
1680 static int hf_opa_SwitchPortCongestionSetting_Threshold;
1681 static int hf_opa_SwitchPortCongestionSetting_Packet_Size;
1682 static int hf_opa_SwitchPortCongestionSetting_Marking_Rate;
1683 static int hf_opa_HFICongestionLog;
1684 static int hf_opa_HFICongestionLog_LogType;
1685 static int hf_opa_HFICongestionLog_CongestionFlags;
1686 static int hf_opa_HFICongestionLog_ThresholdEventCounter;
1687 static int hf_opa_HFICongestionLog_CurrentTimeStamp;
1688 static int hf_opa_HFICongestionLog_ThresholdCongestionEventMap;
1689 static int hf_opa_HFICongestionLog_Local_QP_CN_Entry;
1690 static int hf_opa_HFICongestionLog_Remote_QP_Number_CN_Entry;
1691 static int hf_opa_HFICongestionLog_SL_CN_Entry;
1692 static int hf_opa_HFICongestionLog_Service_Type_CN_Entry;
1693 static int hf_opa_HFICongestionLog_Remote_LID_CN_Entry;
1694 static int hf_opa_HFICongestionLog_TimeStamp_CN_Entry;
1695 static int hf_opa_HFICongestionSetting;
1696 static int hf_opa_HFICongestionSetting_Control_Map;
1697 static int hf_opa_HFICongestionSetting_Port_Control;
1698 static int hf_opa_HFICongestionSetting_CCTI_Increase;
1699 static int hf_opa_HFICongestionSetting_CCTI_Timer;
1700 static int hf_opa_HFICongestionSetting_TriggerThreshold;
1701 static int hf_opa_HFICongestionSetting_CCTI_Min;
1702 static int hf_opa_HFICongestionControlTable;
1703 static int hf_opa_HFICongestionControlTable_CCTI_Limit;
1704 static int hf_opa_HFICongestionControlTable_CCT_Shift;
1705 static int hf_opa_HFICongestionControlTable_CCT_Multiplier;
1706 /* SA */
1707 static int hf_opa_PortInfoRecord_LinkDownReason_NeighborLinkDownReason;
1708 static int hf_opa_PortInfoRecord_LinkDownReason_LinkDownReason;
1709 static int hf_opa_PortInfoRecord_LinkDownReason_Timestamp;
1710 static int hf_opa_LinkRecord;
1711 static int hf_opa_LinkRecord_ToPort;
1712 static int hf_opa_LinkRecord_ToLID;
1713 static int hf_opa_ServiceRecord;
1714 static int hf_opa_ServiceRecord_ServiceLease;
1715 static int hf_opa_ServiceRecord_ServiceKey;
1716 static int hf_opa_ServiceRecord_ServiceName;
1717 static int hf_opa_ServiceRecord_ServiceData;
1718 static int hf_opa_ServiceAssociationRecord_ServiceKey;
1719 static int hf_opa_ServiceAssociationRecord_ServiceName;
1720 static int hf_opa_PathRecord;
1721 static int hf_opa_PathRecord_DGID;
1722 static int hf_opa_PathRecord_SGID;
1723 static int hf_opa_PathRecord_DLID;
1724 static int hf_opa_PathRecord_SLID;
1725 static int hf_opa_PathRecord_RawTraffic;
1726 static int hf_opa_PathRecord_reserved;
1727 static int hf_opa_PathRecord_FlowLabel;
1728 static int hf_opa_PathRecord_HopLimit;
1729 static int hf_opa_PathRecord_TClass;
1730 static int hf_opa_PathRecord_Reversible;
1731 static int hf_opa_PathRecord_NumbPath;
1732 static int hf_opa_PathRecord_P_Key;
1733 static int hf_opa_PathRecord_QosType;
1734 static int hf_opa_PathRecord_reserved2;
1735 static int hf_opa_PathRecord_QosPriority;
1736 static int hf_opa_PathRecord_SL;
1737 static int hf_opa_PathRecord_MTUSelector;
1738 static int hf_opa_PathRecord_MTU;
1739 static int hf_opa_PathRecord_RateSelector;
1740 static int hf_opa_PathRecord_Rate;
1741 static int hf_opa_PathRecord_PacketLifeTimeSelector;
1742 static int hf_opa_PathRecord_PacketLifeTime;
1743 static int hf_opa_PathRecord_Preference;
1744 static int hf_opa_MCMemberRecord;
1745 static int hf_opa_MCMemberRecord_Q_Key;
1746 static int hf_opa_MCMemberRecord_MLID;
1747 static int hf_opa_MCMemberRecord_MTUSelector;
1748 static int hf_opa_MCMemberRecord_MTU;
1749 static int hf_opa_MCMemberRecord_TClass;
1750 static int hf_opa_MCMemberRecord_P_Key;
1751 static int hf_opa_MCMemberRecord_RateSelector;
1752 static int hf_opa_MCMemberRecord_Rate;
1753 static int hf_opa_MCMemberRecord_PacketLifeTimeSelector;
1754 static int hf_opa_MCMemberRecord_PacketLifeTime;
1755 static int hf_opa_MCMemberRecord_SL;
1756 static int hf_opa_MCMemberRecord_reserved;
1757 static int hf_opa_MCMemberRecord_HopLimit;
1758 static int hf_opa_MCMemberRecord_Scope;
1759 static int hf_opa_MCMemberRecord_reserved2;
1760 static int hf_opa_MCMemberRecord_JoinSendOnlyMember;
1761 static int hf_opa_MCMemberRecord_JoinNonMember;
1762 static int hf_opa_MCMemberRecord_JoinFullMember;
1763 static int hf_opa_MCMemberRecord_ProxyJoin;
1764 static int hf_opa_MCMemberRecord_reserved3;
1765 static int hf_opa_TraceRecord;
1766 static int hf_opa_TraceRecord_IDGeneration;
1767 static int hf_opa_TraceRecord_NodeType;
1768 static int hf_opa_TraceRecord_NodeID;
1769 static int hf_opa_TraceRecord_ChassisID;
1770 static int hf_opa_TraceRecord_EntryPortID;
1771 static int hf_opa_TraceRecord_ExitPortID;
1772 static int hf_opa_TraceRecord_EntryPort;
1773 static int hf_opa_TraceRecord_ExitPort;
1774 static int hf_opa_MultiPathRecord;
1775 static int hf_opa_MultiPathRecord_reserved;
1776 static int hf_opa_MultiPathRecord_FlowLabel;
1777 static int hf_opa_MultiPathRecord_HopLimit;
1778 static int hf_opa_MultiPathRecord_TClass;
1779 static int hf_opa_MultiPathRecord_Reversible;
1780 static int hf_opa_MultiPathRecord_NumbPath;
1781 static int hf_opa_MultiPathRecord_P_Key;
1782 static int hf_opa_MultiPathRecord_QoSType;
1783 static int hf_opa_MultiPathRecord_QoSPriority;
1784 static int hf_opa_MultiPathRecord_reserved2;
1785 static int hf_opa_MultiPathRecord_SL;
1786 static int hf_opa_MultiPathRecord_MTUSelector;
1787 static int hf_opa_MultiPathRecord_MTU;
1788 static int hf_opa_MultiPathRecord_RateSelector;
1789 static int hf_opa_MultiPathRecord_Rate;
1790 static int hf_opa_MultiPathRecord_PacketLifeTimeSelector;
1791 static int hf_opa_MultiPathRecord_PacketLifeTime;
1792 static int hf_opa_MultiPathRecord_IndependenceSelector;
1793 static int hf_opa_MultiPathRecord_SGIDScope;
1794 static int hf_opa_MultiPathRecord_DGIDScope;
1795 static int hf_opa_MultiPathRecord_SGIDCount;
1796 static int hf_opa_MultiPathRecord_DGIDCount;
1797 static int hf_opa_MultiPathRecord_SGID;
1798 static int hf_opa_MultiPathRecord_DGID;
1799 static int hf_opa_MultiPathRecord_L2_8B;
1800 static int hf_opa_MultiPathRecord_L2_10B;
1801 static int hf_opa_MultiPathRecord_L2_9B;
1802 static int hf_opa_MultiPathRecord_L2_16B;
1803 static int hf_opa_MultiPathRecord_reserved3;
1804 static int hf_opa_MultiPathRecord_SGUIDScope;
1805 static int hf_opa_MultiPathRecord_DGUIDScope;
1806 static int hf_opa_MultiPathRecord_SGUIDCount;
1807 static int hf_opa_MultiPathRecord_DGUIDCount;
1808 static int hf_opa_MultiPathRecord_SGUID;
1809 static int hf_opa_MultiPathRecord_DGUID;
1810 static int hf_opa_MultiPathRecord_ServiceID;
1811 static int hf_opa_MultiPathRecord_SubnetPrefix;
1812 static int hf_opa_MultiPathRecord_SLIDCount;
1813 static int hf_opa_MultiPathRecord_DLIDCount;
1814 static int hf_opa_MultiPathRecord_SLID;
1815 static int hf_opa_MultiPathRecord_DLID;
1816 static int hf_opa_CableInfoRecord;
1817 static int hf_opa_CableInfoRecord_Lid;
1818 static int hf_opa_CableInfoRecord_Port;
1819 static int hf_opa_CableInfoRecord_Length;
1820 static int hf_opa_CableInfoRecord_reserved;
1821 static int hf_opa_CableInfoRecord_Address;
1822 static int hf_opa_CableInfoRecord_PortType;
1823 static int hf_opa_CableInfoRecord_Data;
1824 static int hf_opa_VFInfoRecord;
1825 static int hf_opa_VFInfoRecord_vfIndex;
1826 static int hf_opa_VFInfoRecord_pKey;
1827 static int hf_opa_VFInfoRecord_vfName;
1828 static int hf_opa_VFInfoRecord_MGID;
1829 static int hf_opa_VFInfoRecord_SelectFlags;
1830 static int hf_opa_VFInfoRecord_reserved;
1831 static int hf_opa_VFInfoRecord_SL;
1832 static int hf_opa_VFInfoRecord_MTUSpecified;
1833 static int hf_opa_VFInfoRecord_reserved2;
1834 static int hf_opa_VFInfoRecord_MTU;
1835 static int hf_opa_VFInfoRecord_RateSpecified;
1836 static int hf_opa_VFInfoRecord_reserved4;
1837 static int hf_opa_VFInfoRecord_Rate;
1838 static int hf_opa_VFInfoRecord_PktLifeSpecified;
1839 static int hf_opa_VFInfoRecord_reserved5;
1840 static int hf_opa_VFInfoRecord_PktLifeTimeInc;
1841 static int hf_opa_VFInfoRecord_OptionFlags;
1842 static int hf_opa_VFInfoRecord_BandwidthPercent;
1843 static int hf_opa_VFInfoRecord_reserved6;
1844 static int hf_opa_VFInfoRecord_Priority;
1845 static int hf_opa_VFInfoRecord_RoutingSLs;
1846 static int hf_opa_VFInfoRecord_reserved7;
1847 static int hf_opa_QuarantinedNodeRecord;
1848 static int hf_opa_QuarantinedNodeRecord_TrustedLid;
1849 static int hf_opa_QuarantinedNodeRecord_TrustedNodeGUID;
1850 static int hf_opa_QuarantinedNodeRecord_TrustedPortNum;
1851 static int hf_opa_QuarantinedNodeRecord_TrustedNeighborNodeGUID;
1852 static int hf_opa_QuarantinedNodeRecord_QuarantineReasons;
1853 static int hf_opa_QuarantinedNodeRecord_ExpectedNodeDesc;
1854 static int hf_opa_QuarantinedNodeRecord_ExpectedNodeGUID;
1855 static int hf_opa_QuarantinedNodeRecord_ExpectedPortGUID;
1856 static int hf_opa_FabricInfoRecord;
1857 static int hf_opa_FabricInfoRecord_NumHFIs;
1858 static int hf_opa_FabricInfoRecord_NumSwitches;
1859 static int hf_opa_FabricInfoRecord_NumInternalHFILinks;
1860 static int hf_opa_FabricInfoRecord_NumExternalHFILinks;
1861 static int hf_opa_FabricInfoRecord_NumInternalISLs;
1862 static int hf_opa_FabricInfoRecord_NumExternalISLs;
1863 static int hf_opa_FabricInfoRecord_NumDegradedHFILinks;
1864 static int hf_opa_FabricInfoRecord_NumDegradedISLs;
1865 static int hf_opa_FabricInfoRecord_NumOmittedHFILinks;
1866 static int hf_opa_FabricInfoRecord_NumOmittedISLs;
1867 static int hf_opa_FabricInfoRecord_Reserved;
1868 /* PM */
1869 static int hf_opa_PortStatus;
1870 static int hf_opa_PortStatus_PortNumber;
1871 static int hf_opa_PortStatus_VLSelectMask;
1872 static int hf_opa_PortStatus_PortXmitData;
1873 static int hf_opa_PortStatus_PortRcvData;
1874 static int hf_opa_PortStatus_PortXmitPkts;
1875 static int hf_opa_PortStatus_PortRcvPkts;
1876 static int hf_opa_PortStatus_PortMulticastXmitPkts;
1877 static int hf_opa_PortStatus_PortMulticastRcvPkts;
1878 static int hf_opa_PortStatus_PortXmitWait;
1879 static int hf_opa_PortStatus_SwPortCongestion;
1880 static int hf_opa_PortStatus_PortRcvFECN;
1881 static int hf_opa_PortStatus_PortRcvBECN;
1882 static int hf_opa_PortStatus_PortXmitTimeCong;
1883 static int hf_opa_PortStatus_PortXmitWastedBW;
1884 static int hf_opa_PortStatus_PortXmitWaitData;
1885 static int hf_opa_PortStatus_PortRcvBubble;
1886 static int hf_opa_PortStatus_PortMarkFECN;
1887 static int hf_opa_PortStatus_PortRcvConstraintErrors;
1888 static int hf_opa_PortStatus_PortRcvSwitchRelayErrors;
1889 static int hf_opa_PortStatus_PortXmitDiscards;
1890 static int hf_opa_PortStatus_PortXmitConstraintErrors;
1891 static int hf_opa_PortStatus_PortRcvRemotePhysicalErrors;
1892 static int hf_opa_PortStatus_LocalLinkIntegrityErrors;
1893 static int hf_opa_PortStatus_PortRcvErrors;
1894 static int hf_opa_PortStatus_ExcessiveBufferOverruns;
1895 static int hf_opa_PortStatus_FMConfigErrors;
1896 static int hf_opa_PortStatus_LinkErrorRecovery;
1897 static int hf_opa_PortStatus_LinkDowned;
1898 static int hf_opa_PortStatus_UncorrectableErrors;
1899 static int hf_opa_PortStatus_reserved;
1900 static int hf_opa_PortStatus_LinkQualityIndicator;
1901 static int hf_opa_PortStatus_PortVLXmitData;
1902 static int hf_opa_PortStatus_PortVLRcvData;
1903 static int hf_opa_PortStatus_PortVLXmitPkts;
1904 static int hf_opa_PortStatus_PortVLRcvPkts;
1905 static int hf_opa_PortStatus_PortVLXmitWait;
1906 static int hf_opa_PortStatus_SwPortVLCongestion;
1907 static int hf_opa_PortStatus_PortVLRcvFECN;
1908 static int hf_opa_PortStatus_PortVLRcvBECN;
1909 static int hf_opa_PortStatus_PortVLXmitTimeCong;
1910 static int hf_opa_PortStatus_PortVLXmitWastedBW;
1911 static int hf_opa_PortStatus_PortVLXmitWaitData;
1912 static int hf_opa_PortStatus_PortVLRcvBubble;
1913 static int hf_opa_PortStatus_PortVLMarkFECN;
1914 static int hf_opa_PortStatus_PortVLXmitDiscards;
1915 static int hf_opa_ClearPortStatus;
1916 static int hf_opa_ClearPortStatus_PortSelectMask;
1917 static int hf_opa_ClearPortStatus_PortXmitData;
1918 static int hf_opa_ClearPortStatus_PortRcvData;
1919 static int hf_opa_ClearPortStatus_PortXmitPkts;
1920 static int hf_opa_ClearPortStatus_PortRcvPkts;
1921 static int hf_opa_ClearPortStatus_PortMulticastXmitPkts;
1922 static int hf_opa_ClearPortStatus_PortMulticastRcvPkts;
1923 static int hf_opa_ClearPortStatus_PortXmitWait;
1924 static int hf_opa_ClearPortStatus_SwPortCongestion;
1925 static int hf_opa_ClearPortStatus_PortRcvFECN;
1926 static int hf_opa_ClearPortStatus_PortRcvBECN;
1927 static int hf_opa_ClearPortStatus_PortXmitTimeCong;
1928 static int hf_opa_ClearPortStatus_PortXmitWastedBW;
1929 static int hf_opa_ClearPortStatus_PortXmitWaitData;
1930 static int hf_opa_ClearPortStatus_PortRcvBubble;
1931 static int hf_opa_ClearPortStatus_PortMarkFECN;
1932 static int hf_opa_ClearPortStatus_PortRcvConstraintErrors;
1933 static int hf_opa_ClearPortStatus_PortRcvSwitchRelayErrors;
1934 static int hf_opa_ClearPortStatus_PortXmitDiscards;
1935 static int hf_opa_ClearPortStatus_PortXmitConstraintErrors;
1936 static int hf_opa_ClearPortStatus_PortRcvRemotePhysicalErrors;
1937 static int hf_opa_ClearPortStatus_LocalLinkIntegrityErrors;
1938 static int hf_opa_ClearPortStatus_PortRcvErrors;
1939 static int hf_opa_ClearPortStatus_ExcessiveBufferOverruns;
1940 static int hf_opa_ClearPortStatus_FMConfigErrors;
1941 static int hf_opa_ClearPortStatus_LinkErrorRecovery;
1942 static int hf_opa_ClearPortStatus_LinkDowned;
1943 static int hf_opa_ClearPortStatus_UncorrectableErrors;
1944 static int hf_opa_ClearPortStatus_reserved;
1945 static int hf_opa_ClearPortStatus_CounterSelectMask;
1946 static int * const _ClearPortStatus_CounterSelectMask[] = {
1947 &hf_opa_ClearPortStatus_PortXmitData,
1948 &hf_opa_ClearPortStatus_PortRcvData,
1949 &hf_opa_ClearPortStatus_PortXmitPkts,
1950 &hf_opa_ClearPortStatus_PortRcvPkts,
1951 &hf_opa_ClearPortStatus_PortMulticastXmitPkts,
1952 &hf_opa_ClearPortStatus_PortMulticastRcvPkts,
1953 &hf_opa_ClearPortStatus_PortXmitWait,
1954 &hf_opa_ClearPortStatus_SwPortCongestion,
1955 &hf_opa_ClearPortStatus_PortRcvFECN,
1956 &hf_opa_ClearPortStatus_PortRcvBECN,
1957 &hf_opa_ClearPortStatus_PortXmitTimeCong,
1958 &hf_opa_ClearPortStatus_PortXmitWastedBW,
1959 &hf_opa_ClearPortStatus_PortXmitWaitData,
1960 &hf_opa_ClearPortStatus_PortRcvBubble,
1961 &hf_opa_ClearPortStatus_PortMarkFECN,
1962 &hf_opa_ClearPortStatus_PortRcvConstraintErrors,
1963 &hf_opa_ClearPortStatus_PortRcvSwitchRelayErrors,
1964 &hf_opa_ClearPortStatus_PortXmitDiscards,
1965 &hf_opa_ClearPortStatus_PortXmitConstraintErrors,
1966 &hf_opa_ClearPortStatus_PortRcvRemotePhysicalErrors,
1967 &hf_opa_ClearPortStatus_LocalLinkIntegrityErrors,
1968 &hf_opa_ClearPortStatus_PortRcvErrors,
1969 &hf_opa_ClearPortStatus_ExcessiveBufferOverruns,
1970 &hf_opa_ClearPortStatus_FMConfigErrors,
1971 &hf_opa_ClearPortStatus_LinkErrorRecovery,
1972 &hf_opa_ClearPortStatus_LinkDowned,
1973 &hf_opa_ClearPortStatus_UncorrectableErrors,
1974 &hf_opa_ClearPortStatus_reserved,
1975 NULL
1977 static int hf_opa_DataPortCounters;
1978 static int hf_opa_DataPortCounters_PortSelectMask;
1979 static int hf_opa_DataPortCounters_VLSelectMask;
1980 static int hf_opa_DataPortCounters_resolution_reserved;
1981 static int hf_opa_DataPortCounters_LocalLinkIntegrityResolution;
1982 static int hf_opa_DataPortCounters_LinkErrorRecoveryResolution;
1983 static int hf_opa_DataPortCounters_PortNumber;
1984 static int hf_opa_DataPortCounters_lqi_reserved;
1985 static int hf_opa_DataPortCounters_LinkQualityIndicator;
1986 static int hf_opa_DataPortCounters_PortXmitData;
1987 static int hf_opa_DataPortCounters_PortRcvData;
1988 static int hf_opa_DataPortCounters_PortXmitPkts;
1989 static int hf_opa_DataPortCounters_PortRcvPkts;
1990 static int hf_opa_DataPortCounters_PortMulticastXmitPkts;
1991 static int hf_opa_DataPortCounters_PortMulticastRcvPkts;
1992 static int hf_opa_DataPortCounters_PortXmitWait;
1993 static int hf_opa_DataPortCounters_SwPortCongestion;
1994 static int hf_opa_DataPortCounters_PortRcvFECN;
1995 static int hf_opa_DataPortCounters_PortRcvBECN;
1996 static int hf_opa_DataPortCounters_PortXmitTimeCong;
1997 static int hf_opa_DataPortCounters_PortXmitWastedBW;
1998 static int hf_opa_DataPortCounters_PortXmitWaitData;
1999 static int hf_opa_DataPortCounters_PortRcvBubble;
2000 static int hf_opa_DataPortCounters_PortMarkFECN;
2001 static int hf_opa_DataPortCounters_PortErrorCounterSummary;
2002 static int hf_opa_DataPortCounters_PortVLXmitData;
2003 static int hf_opa_DataPortCounters_PortVLRcvData;
2004 static int hf_opa_DataPortCounters_PortVLXmitPkts;
2005 static int hf_opa_DataPortCounters_PortVLRcvPkts;
2006 static int hf_opa_DataPortCounters_PortVLXmitWait;
2007 static int hf_opa_DataPortCounters_SwPortVLCongestion;
2008 static int hf_opa_DataPortCounters_PortVLRcvFECN;
2009 static int hf_opa_DataPortCounters_PortVLRcvBECN;
2010 static int hf_opa_DataPortCounters_PortVLXmitTimeCong;
2011 static int hf_opa_DataPortCounters_PortVLXmitWastedBW;
2012 static int hf_opa_DataPortCounters_PortVLXmitWaitData;
2013 static int hf_opa_DataPortCounters_PortVLRcvBubble;
2014 static int hf_opa_DataPortCounters_PortVLMarkFECN;
2015 static int hf_opa_ErrorPortCounters;
2016 static int hf_opa_ErrorPortCounters_PortSelectMask;
2017 static int hf_opa_ErrorPortCounters_VLSelectMask;
2018 static int hf_opa_ErrorPortCounters_PortNumber;
2019 static int hf_opa_ErrorPortCounters_PortRcvConstraintErrors;
2020 static int hf_opa_ErrorPortCounters_PortRcvSwitchRelayErrors;
2021 static int hf_opa_ErrorPortCounters_PortXmitDiscards;
2022 static int hf_opa_ErrorPortCounters_PortXmitConstraintErrors;
2023 static int hf_opa_ErrorPortCounters_PortRcvRemotePhysicalErrors;
2024 static int hf_opa_ErrorPortCounters_LocalLinkIntegrityErrors;
2025 static int hf_opa_ErrorPortCounters_PortRcvErrors;
2026 static int hf_opa_ErrorPortCounters_ExcessiveBufferOverruns;
2027 static int hf_opa_ErrorPortCounters_FMConfigErrors;
2028 static int hf_opa_ErrorPortCounters_LinkErrorRecovery;
2029 static int hf_opa_ErrorPortCounters_LinkDowned;
2030 static int hf_opa_ErrorPortCounters_UncorrectableErrors;
2031 static int hf_opa_ErrorPortCounters_PortVLXmitDiscards;
2032 static int hf_opa_ErrorPortInfo;
2033 static int hf_opa_ErrorPortInfo_PortSelectMask;
2034 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvErrorInfo;
2035 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_ExcessiveBufferOverrunInfo;
2036 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortXmitConstraintErrorInfo;
2037 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvConstraintErrorInfo;
2038 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvSwitchRelayErrorInfo;
2039 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_UncorrectableErrorInfo;
2040 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_FMConfigErrorInfo;
2041 static int hf_opa_ErrorPortInfo_ErrorInfoSelectMask_reserved;
2042 static int * const _ErrorPortInfo_ErrorInfoSelectMask[] = {
2043 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvErrorInfo,
2044 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_ExcessiveBufferOverrunInfo,
2045 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortXmitConstraintErrorInfo,
2046 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvConstraintErrorInfo,
2047 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvSwitchRelayErrorInfo,
2048 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_UncorrectableErrorInfo,
2049 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_FMConfigErrorInfo,
2050 &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_reserved,
2051 NULL
2053 static int hf_opa_ErrorPortInfo_PortNumber;
2054 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_Status;
2055 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved;
2056 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_ErrorCode;
2057 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit1;
2058 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit2;
2059 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit1Bits;
2060 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit2Bits;
2061 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved2;
2062 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketBytes;
2063 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_FlitBits;
2064 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved3;
2065 static int hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved4;
2066 static int hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_Status;
2067 static int hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_SC;
2068 static int hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_reserved;
2069 static int hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_Status;
2070 static int hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_reserved;
2071 static int hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_P_Key;
2072 static int hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_SLID;
2073 static int hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_Status;
2074 static int hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_reserved;
2075 static int hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_P_Key;
2076 static int hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_SLID;
2077 static int hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_Status;
2078 static int hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_reserved;
2079 static int hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_ErrorCode;
2080 static int hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_DLID;
2081 static int hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum;
2082 static int hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_SC;
2083 static int hf_opa_ErrorPortInfo_UncorrectableErrorInfo_Status;
2084 static int hf_opa_ErrorPortInfo_UncorrectableErrorInfo_reserved;
2085 static int hf_opa_ErrorPortInfo_UncorrectableErrorInfo_ErrorCode;
2086 static int hf_opa_ErrorPortInfo_FMConfigErrorInfo_Status;
2087 static int hf_opa_ErrorPortInfo_FMConfigErrorInfo_reserved;
2088 static int hf_opa_ErrorPortInfo_FMConfigErrorInfo_ErrorCode;
2089 static int hf_opa_ErrorPortInfo_FMConfigErrorInfo_VL;
2090 static int hf_opa_ErrorPortInfo_FMConfigErrorInfo_Distance;
2091 static int hf_opa_ErrorPortInfo_FMConfigErrorInfo_BadFlitBits;
2092 static int hf_opa_ErrorPortInfo_FMConfigErrorInfo_SC;
2093 /* PA */
2094 static int hf_opa_ImageID_imageNumber;
2095 static int hf_opa_ImageID_imageOffset;
2096 static int hf_opa_GetGroupList;
2097 static int hf_opa_GetGroupList_groupName;
2098 static int hf_opa_GetGroupInfo;
2099 static int hf_opa_GetGroupInfo_groupName;
2100 static int hf_opa_GetGroupInfo_numInternalPorts;
2101 static int hf_opa_GetGroupInfo_numExternalPorts;
2102 static int hf_opa_GetGroupInfo_totalMBps;
2103 static int hf_opa_GetGroupInfo_totalKPps;
2104 static int hf_opa_GetGroupInfo_avgMBps;
2105 static int hf_opa_GetGroupInfo_minMBps;
2106 static int hf_opa_GetGroupInfo_maxMBps;
2107 static int hf_opa_GetGroupInfo_numBWBuckets;
2108 static int hf_opa_GetGroupInfo_BWBuckets;
2109 static int hf_opa_GetGroupInfo_avgKPps;
2110 static int hf_opa_GetGroupInfo_minKPps;
2111 static int hf_opa_GetGroupInfo_maxKPps;
2112 static int hf_opa_GetGroupInfo_pmaFailedPorts;
2113 static int hf_opa_GetGroupInfo_topoFailedPorts;
2114 static int hf_opa_GetGroupInfo_integrityErrors;
2115 static int hf_opa_GetGroupInfo_congestionErrors;
2116 static int hf_opa_GetGroupInfo_smaCongestionErrors;
2117 static int hf_opa_GetGroupInfo_bubbleErrors;
2118 static int hf_opa_GetGroupInfo_securityErrors;
2119 static int hf_opa_GetGroupInfo_routingErrors;
2120 static int hf_opa_GetGroupInfo_utilizationPct10;
2121 static int hf_opa_GetGroupInfo_discardsPct10;
2122 static int hf_opa_GetGroupInfo_maxInternalRate;
2123 static int hf_opa_GetGroupInfo_minInternalRate;
2124 static int hf_opa_GetGroupInfo_maxExternalRate;
2125 static int hf_opa_GetGroupInfo_minExternalRate;
2126 static int hf_opa_GetGroupInfo_maxInternalMBps;
2127 static int hf_opa_GetGroupInfo_maxExternalMBps;
2128 static int hf_opa_GetGroupConfig;
2129 static int hf_opa_GetGroupConfig_groupName;
2130 static int hf_opa_GetGroupConfig_Port_NodeGUID;
2131 static int hf_opa_GetGroupConfig_Port_nodeDesc;
2132 static int hf_opa_GetGroupConfig_Port_NodeLID;
2133 static int hf_opa_GetGroupConfig_Port_PortNumber;
2134 static int hf_opa_GetPortCounters;
2135 static int hf_opa_GetPortCounters_nodeLID;
2136 static int hf_opa_GetPortCounters_PortNumber;
2137 static int hf_opa_GetPortCounters_flags;
2138 static int hf_opa_GetPortCounters_PortXmitData;
2139 static int hf_opa_GetPortCounters_PortRcvData;
2140 static int hf_opa_GetPortCounters_PortXmitPkts;
2141 static int hf_opa_GetPortCounters_PortRcvPkts;
2142 static int hf_opa_GetPortCounters_PortMulticastXmitPkts;
2143 static int hf_opa_GetPortCounters_PortMulticastRcvPkts;
2144 static int hf_opa_GetPortCounters_LocalLinkIntegrityErrors;
2145 static int hf_opa_GetPortCounters_FMConfigErrors;
2146 static int hf_opa_GetPortCounters_PortRcvErrors;
2147 static int hf_opa_GetPortCounters_ExcessiveBufferOverruns;
2148 static int hf_opa_GetPortCounters_PortRcvConstraintErrors;
2149 static int hf_opa_GetPortCounters_PortRcvSwitchRelayErrors;
2150 static int hf_opa_GetPortCounters_PortXmitDiscards;
2151 static int hf_opa_GetPortCounters_PortXmitConstraintErrors;
2152 static int hf_opa_GetPortCounters_PortRcvRemotePhysicalErrors;
2153 static int hf_opa_GetPortCounters_SwPortCongestion;
2154 static int hf_opa_GetPortCounters_PortXmitWait;
2155 static int hf_opa_GetPortCounters_PortRcvFECN;
2156 static int hf_opa_GetPortCounters_PortRcvBECN;
2157 static int hf_opa_GetPortCounters_PortXmitTimeCong;
2158 static int hf_opa_GetPortCounters_PortXmitWastedBW;
2159 static int hf_opa_GetPortCounters_PortXmitWaitData;
2160 static int hf_opa_GetPortCounters_PortRcvBubble;
2161 static int hf_opa_GetPortCounters_PortMarkFECN;
2162 static int hf_opa_GetPortCounters_LinkErrorRecovery;
2163 static int hf_opa_GetPortCounters_LinkDowned;
2164 static int hf_opa_GetPortCounters_UncorrectableErrors;
2165 static int hf_opa_GetPortCounters_NumLanesDown;
2166 static int hf_opa_GetPortCounters_reserved;
2167 static int hf_opa_GetPortCounters_LinkQualityIndicator;
2168 static int hf_opa_ClearPortCounters;
2169 static int hf_opa_ClearPortCounters_nodeLID;
2170 static int hf_opa_ClearPortCounters_PortNumber;
2171 static int hf_opa_ClearPortCounters_PortXmitData;
2172 static int hf_opa_ClearPortCounters_PortRcvData;
2173 static int hf_opa_ClearPortCounters_PortXmitPkts;
2174 static int hf_opa_ClearPortCounters_PortRcvPkts;
2175 static int hf_opa_ClearPortCounters_PortMulticastXmitPkts;
2176 static int hf_opa_ClearPortCounters_PortMulticastRcvPkts;
2177 static int hf_opa_ClearPortCounters_LocalLinkIntegrityErrors;
2178 static int hf_opa_ClearPortCounters_FMConfigErrors;
2179 static int hf_opa_ClearPortCounters_PortRcvErrors;
2180 static int hf_opa_ClearPortCounters_ExcessiveBufferOverruns;
2181 static int hf_opa_ClearPortCounters_PortRcvConstraintErrors;
2182 static int hf_opa_ClearPortCounters_PortRcvSwitchRelayErrors;
2183 static int hf_opa_ClearPortCounters_PortXmitDiscards;
2184 static int hf_opa_ClearPortCounters_PortXmitConstraintErrors;
2185 static int hf_opa_ClearPortCounters_PortRcvRemotePhysicalErrors;
2186 static int hf_opa_ClearPortCounters_SwPortCongestion;
2187 static int hf_opa_ClearPortCounters_PortXmitWait;
2188 static int hf_opa_ClearPortCounters_PortRcvFECN;
2189 static int hf_opa_ClearPortCounters_PortRcvBECN;
2190 static int hf_opa_ClearPortCounters_PortXmitTimeCong;
2191 static int hf_opa_ClearPortCounters_PortXmitWastedBW;
2192 static int hf_opa_ClearPortCounters_PortXmitWaitData;
2193 static int hf_opa_ClearPortCounters_PortRcvBubble;
2194 static int hf_opa_ClearPortCounters_PortMarkFECN;
2195 static int hf_opa_ClearPortCounters_LinkErrorRecovery;
2196 static int hf_opa_ClearPortCounters_LinkDowned;
2197 static int hf_opa_ClearPortCounters_UncorrectableErrors;
2198 static int hf_opa_ClearPortCounters_reserved;
2199 static int hf_opa_ClearPortCounters_CounterSelectMask;
2200 static int * const _ClearPortCounters_CounterSelectMask[] = {
2201 &hf_opa_ClearPortCounters_PortXmitData,
2202 &hf_opa_ClearPortCounters_PortRcvData,
2203 &hf_opa_ClearPortCounters_PortXmitPkts,
2204 &hf_opa_ClearPortCounters_PortRcvPkts,
2205 &hf_opa_ClearPortCounters_PortMulticastXmitPkts,
2206 &hf_opa_ClearPortCounters_PortMulticastRcvPkts,
2207 &hf_opa_ClearPortCounters_LocalLinkIntegrityErrors,
2208 &hf_opa_ClearPortCounters_FMConfigErrors,
2209 &hf_opa_ClearPortCounters_PortRcvErrors,
2210 &hf_opa_ClearPortCounters_ExcessiveBufferOverruns,
2211 &hf_opa_ClearPortCounters_PortRcvConstraintErrors,
2212 &hf_opa_ClearPortCounters_PortRcvSwitchRelayErrors,
2213 &hf_opa_ClearPortCounters_PortXmitDiscards,
2214 &hf_opa_ClearPortCounters_PortXmitConstraintErrors,
2215 &hf_opa_ClearPortCounters_PortRcvRemotePhysicalErrors,
2216 &hf_opa_ClearPortCounters_SwPortCongestion,
2217 &hf_opa_ClearPortCounters_PortXmitWait,
2218 &hf_opa_ClearPortCounters_PortRcvFECN,
2219 &hf_opa_ClearPortCounters_PortRcvBECN,
2220 &hf_opa_ClearPortCounters_PortXmitTimeCong,
2221 &hf_opa_ClearPortCounters_PortXmitWastedBW,
2222 &hf_opa_ClearPortCounters_PortXmitWaitData,
2223 &hf_opa_ClearPortCounters_PortRcvBubble,
2224 &hf_opa_ClearPortCounters_PortMarkFECN,
2225 &hf_opa_ClearPortCounters_LinkErrorRecovery,
2226 &hf_opa_ClearPortCounters_LinkDowned,
2227 &hf_opa_ClearPortCounters_UncorrectableErrors,
2228 &hf_opa_ClearPortCounters_reserved,
2229 NULL
2231 static int hf_opa_ClearAllPortCounters;
2232 static int hf_opa_ClearAllPortCounters_PortXmitData;
2233 static int hf_opa_ClearAllPortCounters_PortRcvData;
2234 static int hf_opa_ClearAllPortCounters_PortXmitPkts;
2235 static int hf_opa_ClearAllPortCounters_PortRcvPkts;
2236 static int hf_opa_ClearAllPortCounters_PortMulticastXmitPkts;
2237 static int hf_opa_ClearAllPortCounters_PortMulticastRcvPkts;
2238 static int hf_opa_ClearAllPortCounters_LocalLinkIntegrityErrors;
2239 static int hf_opa_ClearAllPortCounters_FMConfigErrors;
2240 static int hf_opa_ClearAllPortCounters_PortRcvErrors;
2241 static int hf_opa_ClearAllPortCounters_ExcessiveBufferOverruns;
2242 static int hf_opa_ClearAllPortCounters_PortRcvConstraintErrors;
2243 static int hf_opa_ClearAllPortCounters_PortRcvSwitchRelayErrors;
2244 static int hf_opa_ClearAllPortCounters_PortXmitDiscards;
2245 static int hf_opa_ClearAllPortCounters_PortXmitConstraintErrors;
2246 static int hf_opa_ClearAllPortCounters_PortRcvRemotePhysicalErrors;
2247 static int hf_opa_ClearAllPortCounters_SwPortCongestion;
2248 static int hf_opa_ClearAllPortCounters_PortXmitWait;
2249 static int hf_opa_ClearAllPortCounters_PortRcvFECN;
2250 static int hf_opa_ClearAllPortCounters_PortRcvBECN;
2251 static int hf_opa_ClearAllPortCounters_PortXmitTimeCong;
2252 static int hf_opa_ClearAllPortCounters_PortXmitWastedBW;
2253 static int hf_opa_ClearAllPortCounters_PortXmitWaitData;
2254 static int hf_opa_ClearAllPortCounters_PortRcvBubble;
2255 static int hf_opa_ClearAllPortCounters_PortMarkFECN;
2256 static int hf_opa_ClearAllPortCounters_LinkErrorRecovery;
2257 static int hf_opa_ClearAllPortCounters_LinkDowned;
2258 static int hf_opa_ClearAllPortCounters_UncorrectableErrors;
2259 static int hf_opa_ClearAllPortCounters_reserved;
2260 static int hf_opa_ClearAllPortCounters_CounterSelectMask;
2261 static int * const _ClearAllPortCounters_CounterSelectMask[] = {
2262 &hf_opa_ClearAllPortCounters_PortXmitData,
2263 &hf_opa_ClearAllPortCounters_PortRcvData,
2264 &hf_opa_ClearAllPortCounters_PortXmitPkts,
2265 &hf_opa_ClearAllPortCounters_PortRcvPkts,
2266 &hf_opa_ClearAllPortCounters_PortMulticastXmitPkts,
2267 &hf_opa_ClearAllPortCounters_PortMulticastRcvPkts,
2268 &hf_opa_ClearAllPortCounters_LocalLinkIntegrityErrors,
2269 &hf_opa_ClearAllPortCounters_FMConfigErrors,
2270 &hf_opa_ClearAllPortCounters_PortRcvErrors,
2271 &hf_opa_ClearAllPortCounters_ExcessiveBufferOverruns,
2272 &hf_opa_ClearAllPortCounters_PortRcvConstraintErrors,
2273 &hf_opa_ClearAllPortCounters_PortRcvSwitchRelayErrors,
2274 &hf_opa_ClearAllPortCounters_PortXmitDiscards,
2275 &hf_opa_ClearAllPortCounters_PortXmitConstraintErrors,
2276 &hf_opa_ClearAllPortCounters_PortRcvRemotePhysicalErrors,
2277 &hf_opa_ClearAllPortCounters_SwPortCongestion,
2278 &hf_opa_ClearAllPortCounters_PortXmitWait,
2279 &hf_opa_ClearAllPortCounters_PortRcvFECN,
2280 &hf_opa_ClearAllPortCounters_PortRcvBECN,
2281 &hf_opa_ClearAllPortCounters_PortXmitTimeCong,
2282 &hf_opa_ClearAllPortCounters_PortXmitWastedBW,
2283 &hf_opa_ClearAllPortCounters_PortXmitWaitData,
2284 &hf_opa_ClearAllPortCounters_PortRcvBubble,
2285 &hf_opa_ClearAllPortCounters_PortMarkFECN,
2286 &hf_opa_ClearAllPortCounters_LinkErrorRecovery,
2287 &hf_opa_ClearAllPortCounters_LinkDowned,
2288 &hf_opa_ClearAllPortCounters_UncorrectableErrors,
2289 &hf_opa_ClearAllPortCounters_reserved,
2290 NULL
2292 static int hf_opa_PMConfig;
2293 static int hf_opa_PMConfig_sweepInterval;
2294 static int hf_opa_PMConfig_maxClients;
2295 static int hf_opa_PMConfig_sizeHistory;
2296 static int hf_opa_PMConfig_sizeFreeze;
2297 static int hf_opa_PMConfig_lease;
2298 static int hf_opa_PMConfig_pmFlags;
2299 static int hf_opa_PMConfig_PortXmitWait;
2300 static int hf_opa_PMConfig_SwPortCongestion;
2301 static int hf_opa_PMConfig_PortRcvFECN;
2302 static int hf_opa_PMConfig_PortRcvBECN;
2303 static int hf_opa_PMConfig_PortXmitTimeCong;
2304 static int hf_opa_PMConfig_PortMarkFECN;
2305 static int hf_opa_PMConfig_integrityErrors;
2306 static int hf_opa_PMConfig_congestionErrors;
2307 static int hf_opa_PMConfig_smaCongestionErrors;
2308 static int hf_opa_PMConfig_bubbleErrors;
2309 static int hf_opa_PMConfig_securityErrors;
2310 static int hf_opa_PMConfig_routingErrors;
2311 static int hf_opa_PMConfig_LocalLinkIntegrityErrors;
2312 static int hf_opa_PMConfig_PortRcvErrors;
2313 static int hf_opa_PMConfig_ExcessiveBufferOverrunErrors;
2314 static int hf_opa_PMConfig_LinkErrorRecovery;
2315 static int hf_opa_PMConfig_LinkDowned;
2316 static int hf_opa_PMConfig_UncorrectableErrors;
2317 static int hf_opa_PMConfig_FMConfigErrors;
2318 static int hf_opa_PMConfig_LinkQualityIndicator;
2319 static int hf_opa_PMConfig_LinkWidthDowngrade;
2320 static int hf_opa_PMConfig_memoryFootprint;
2321 static int hf_opa_PMConfig_maxAttempts;
2322 static int hf_opa_PMConfig_respTimeout;
2323 static int hf_opa_PMConfig_minRespTimeout;
2324 static int hf_opa_PMConfig_maxParallelNodes;
2325 static int hf_opa_PMConfig_pmaBatchSize;
2326 static int hf_opa_PMConfig_errorClear;
2327 static int hf_opa_MoveFreezeFrame_old;
2328 static int hf_opa_MoveFreezeFrame_new;
2329 static int hf_opa_GetFocusPorts;
2330 static int hf_opa_GetFocusPorts_groupName;
2331 static int hf_opa_GetFocusPorts_select;
2332 static int hf_opa_GetFocusPorts_start;
2333 static int hf_opa_GetFocusPorts_range;
2334 static int hf_opa_GetFocusPorts_nodeLID;
2335 static int hf_opa_GetFocusPorts_portNumber;
2336 static int hf_opa_GetFocusPorts_rate;
2337 static int hf_opa_GetFocusPorts_mtu;
2338 static int hf_opa_GetFocusPorts_localFlags;
2339 static int hf_opa_GetFocusPorts_neighborFlags;
2340 static int hf_opa_GetFocusPorts_value;
2341 static int hf_opa_GetFocusPorts_nodeGUID;
2342 static int hf_opa_GetFocusPorts_nodeDesc;
2343 static int hf_opa_GetFocusPorts_neighborLid;
2344 static int hf_opa_GetFocusPorts_neighborPortNumber;
2345 static int hf_opa_GetFocusPorts_neighborValue;
2346 static int hf_opa_GetFocusPorts_neighborGuid;
2347 static int hf_opa_GetFocusPorts_neighborNodeDesc;
2348 static int hf_opa_GetImageInfo;
2349 static int hf_opa_GetImageInfo_sweepStart;
2350 static int hf_opa_GetImageInfo_sweepDuration;
2351 static int hf_opa_GetImageInfo_numHFIPorts;
2352 static int hf_opa_GetImageInfo_numSwitchNodes;
2353 static int hf_opa_GetImageInfo_numSwitchPorts;
2354 static int hf_opa_GetImageInfo_numLinks;
2355 static int hf_opa_GetImageInfo_numSMs;
2356 static int hf_opa_GetImageInfo_numFailedNodes;
2357 static int hf_opa_GetImageInfo_numFailedPorts;
2358 static int hf_opa_GetImageInfo_numSkippedNodes;
2359 static int hf_opa_GetImageInfo_numSkippedPorts;
2360 static int hf_opa_GetImageInfo_numUnexpectedClearPorts;
2361 static int hf_opa_GetImageInfo_imageInterval;
2362 static int hf_opa_GetImageInfo_smPortGuid;
2363 static int hf_opa_GetImageInfo_smNodeDesc;
2364 static int hf_opa_GetImageInfo_lid;
2365 static int hf_opa_GetImageInfo_state;
2366 static int hf_opa_GetImageInfo_priority;
2367 static int hf_opa_GetImageInfo_portNumber;
2368 static int hf_opa_GetVFList;
2369 static int hf_opa_GetVFList_vfName;
2371 static int hf_opa_GetVFInfo;
2372 static int hf_opa_GetVFInfo_vfName;
2373 static int hf_opa_GetVFInfo_numPorts;
2374 static int hf_opa_GetVFInfo_totalMBps;
2375 static int hf_opa_GetVFInfo_totalKPps;
2376 static int hf_opa_GetVFInfo_avgMBps;
2377 static int hf_opa_GetVFInfo_minMBps;
2378 static int hf_opa_GetVFInfo_maxMBps;
2379 static int hf_opa_GetVFInfo_numBWBuckets;
2380 static int hf_opa_GetVFInfo_BWBuckets;
2381 static int hf_opa_GetVFInfo_avgKPps;
2382 static int hf_opa_GetVFInfo_minKPps;
2383 static int hf_opa_GetVFInfo_maxKPps;
2384 static int hf_opa_GetVFInfo_pmaFailedPorts;
2385 static int hf_opa_GetVFInfo_topoFailedPorts;
2386 static int hf_opa_GetVFInfo_integrityErrors;
2387 static int hf_opa_GetVFInfo_congestionErrors;
2388 static int hf_opa_GetVFInfo_smaCongestionErrors;
2389 static int hf_opa_GetVFInfo_bubbleErrors;
2390 static int hf_opa_GetVFInfo_securityErrors;
2391 static int hf_opa_GetVFInfo_routingErrors;
2392 static int hf_opa_GetVFInfo_utilizationPct10;
2393 static int hf_opa_GetVFInfo_discardsPct10;
2394 static int hf_opa_GetVFInfo_maxInternalRate;
2395 static int hf_opa_GetVFInfo_minInternalRate;
2396 static int hf_opa_GetVFInfo_maxInternalMBps;
2398 static int hf_opa_GetVFConfig;
2399 static int hf_opa_GetVFConfig_vfName;
2400 static int hf_opa_GetVFConfig_Port_NodeGUID;
2401 static int hf_opa_GetVFConfig_Port_nodeDesc;
2402 static int hf_opa_GetVFConfig_Port_NodeLID;
2403 static int hf_opa_GetVFConfig_Port_PortNumber;
2405 static int hf_opa_GetVFPortCounters;
2406 static int hf_opa_GetVFPortCounters_vfName;
2407 static int hf_opa_GetVFPortCounters_nodeLID;
2408 static int hf_opa_GetVFPortCounters_PortNumber;
2409 static int hf_opa_GetVFPortCounters_flags;
2410 static int hf_opa_GetVFPortCounters_PortVFXmitData;
2411 static int hf_opa_GetVFPortCounters_PortVFRcvData;
2412 static int hf_opa_GetVFPortCounters_PortVFXmitPkts;
2413 static int hf_opa_GetVFPortCounters_PortVFRcvPkts;
2414 static int hf_opa_GetVFPortCounters_PortVFXmitDiscards;
2415 static int hf_opa_GetVFPortCounters_SwPortVFCongestion;
2416 static int hf_opa_GetVFPortCounters_PortVFXmitWait;
2417 static int hf_opa_GetVFPortCounters_PortVFRcvFECN;
2418 static int hf_opa_GetVFPortCounters_PortVFRcvBECN;
2419 static int hf_opa_GetVFPortCounters_PortVFXmitTimeCong;
2420 static int hf_opa_GetVFPortCounters_PortVFXmitWastedBW;
2421 static int hf_opa_GetVFPortCounters_PortVFXmitWaitData;
2422 static int hf_opa_GetVFPortCounters_PortVFRcvBubble;
2423 static int hf_opa_GetVFPortCounters_PortVFMarkFECN;
2425 static int hf_opa_ClearVFPortCounters;
2426 static int hf_opa_ClearVFPortCounters_vfName;
2427 static int hf_opa_ClearVFPortCounters_nodeLID;
2428 static int hf_opa_ClearVFPortCounters_PortNumber;
2429 static int hf_opa_ClearVFPortCounters_PortVFXmitData;
2430 static int hf_opa_ClearVFPortCounters_PortVFRcvData;
2431 static int hf_opa_ClearVFPortCounters_PortVFXmitPkts;
2432 static int hf_opa_ClearVFPortCounters_PortVFRcvPkts;
2433 static int hf_opa_ClearVFPortCounters_PortVFXmitDiscards;
2434 static int hf_opa_ClearVFPortCounters_SwPortVFCongestion;
2435 static int hf_opa_ClearVFPortCounters_PortVFXmitWait;
2436 static int hf_opa_ClearVFPortCounters_PortVFRcvFECN;
2437 static int hf_opa_ClearVFPortCounters_PortVFRcvBECN;
2438 static int hf_opa_ClearVFPortCounters_PortVFXmitTimeCong;
2439 static int hf_opa_ClearVFPortCounters_PortVFXmitWastedBW;
2440 static int hf_opa_ClearVFPortCounters_PortVFXmitWaitData;
2441 static int hf_opa_ClearVFPortCounters_PortVFRcvBubble;
2442 static int hf_opa_ClearVFPortCounters_PortVFMarkFECN;
2443 static int hf_opa_ClearVFPortCounters_reserved;
2444 static int hf_opa_ClearVFPortCounters_CounterSelectMask;
2445 static int * const _ClearVFPortCounters_CounterSelectMask[] = {
2446 &hf_opa_ClearVFPortCounters_PortVFXmitData,
2447 &hf_opa_ClearVFPortCounters_PortVFRcvData,
2448 &hf_opa_ClearVFPortCounters_PortVFXmitPkts,
2449 &hf_opa_ClearVFPortCounters_PortVFRcvPkts,
2450 &hf_opa_ClearVFPortCounters_PortVFXmitDiscards,
2451 &hf_opa_ClearVFPortCounters_SwPortVFCongestion,
2452 &hf_opa_ClearVFPortCounters_PortVFXmitWait,
2453 &hf_opa_ClearVFPortCounters_PortVFRcvFECN,
2454 &hf_opa_ClearVFPortCounters_PortVFRcvBECN,
2455 &hf_opa_ClearVFPortCounters_PortVFXmitTimeCong,
2456 &hf_opa_ClearVFPortCounters_PortVFXmitWastedBW,
2457 &hf_opa_ClearVFPortCounters_PortVFXmitWaitData,
2458 &hf_opa_ClearVFPortCounters_PortVFRcvBubble,
2459 &hf_opa_ClearVFPortCounters_PortVFMarkFECN,
2460 &hf_opa_ClearVFPortCounters_reserved,
2461 NULL
2464 static int hf_opa_GetVFFocusPorts;
2465 static int hf_opa_GetVFFocusPorts_vfName;
2466 static int hf_opa_GetVFFocusPorts_select;
2467 static int hf_opa_GetVFFocusPorts_start;
2468 static int hf_opa_GetVFFocusPorts_range;
2469 static int hf_opa_GetVFFocusPorts_nodeLID;
2470 static int hf_opa_GetVFFocusPorts_portNumber;
2471 static int hf_opa_GetVFFocusPorts_rate;
2472 static int hf_opa_GetVFFocusPorts_mtu;
2473 static int hf_opa_GetVFFocusPorts_localFlags;
2474 static int hf_opa_GetVFFocusPorts_neighborFlags;
2475 static int hf_opa_GetVFFocusPorts_value;
2476 static int hf_opa_GetVFFocusPorts_nodeGUID;
2477 static int hf_opa_GetVFFocusPorts_nodeDesc;
2478 static int hf_opa_GetVFFocusPorts_neighborLid;
2479 static int hf_opa_GetVFFocusPorts_neighborPortNumber;
2480 static int hf_opa_GetVFFocusPorts_neighborValue;
2481 static int hf_opa_GetVFFocusPorts_neighborGuid;
2482 static int hf_opa_GetVFFocusPorts_neighborNodeDesc;
2484 /* Expert Info */
2485 static expert_field ei_opa_mad_error;
2486 static expert_field ei_opa_mad_no_attribute_dissector;
2487 static expert_field ei_opa_mad_attribute_modifier_error_nonzero;
2488 static expert_field ei_opa_rmpp_undecoded;
2489 static expert_field ei_opa_aggregate_error;
2491 /* Fragments */
2492 static int hf_opa_rmpp_fragments;
2493 static int hf_opa_rmpp_fragment;
2494 static int hf_opa_rmpp_fragment_overlap;
2495 static int hf_opa_rmpp_fragment_overlap_conflicts;
2496 static int hf_opa_rmpp_fragment_multiple_tails;
2497 static int hf_opa_rmpp_fragment_too_long_fragment;
2498 static int hf_opa_rmpp_fragment_error;
2499 static int hf_opa_rmpp_fragment_count;
2500 static int hf_opa_rmpp_reassembled_in;
2501 static int hf_opa_rmpp_reassembled_length;
2503 static const fragment_items opa_rmpp_frag_items = {
2504 &ett_rmpp_fragment,
2505 &ett_rmpp_fragments,
2506 &hf_opa_rmpp_fragments,
2507 &hf_opa_rmpp_fragment,
2508 &hf_opa_rmpp_fragment_overlap,
2509 &hf_opa_rmpp_fragment_overlap_conflicts,
2510 &hf_opa_rmpp_fragment_multiple_tails,
2511 &hf_opa_rmpp_fragment_too_long_fragment,
2512 &hf_opa_rmpp_fragment_error,
2513 &hf_opa_rmpp_fragment_count,
2514 &hf_opa_rmpp_reassembled_in,
2515 &hf_opa_rmpp_reassembled_length,
2516 NULL,
2517 "RMPP Fragments"
2521 * Builds a range string from a PortSelectMask
2523 * @param[in] tvb pointer to packet buffer
2524 * @param[in] offset offset into packet buffer where port select mask begins
2525 * @param[out] port_list optional: pointer to an arrray of ports, allocated by
2526 * wmem_alloc(wmem_packet_scope(), 256)
2527 * @param[out] num_ports optional: pointer to a number of ports in set in port
2528 * select mask and portlist if provided.
2529 * @return char* pointer to range string allocated using
2530 * wmem_strbuf_new_sized(wmem_packet_scope(),...)
2532 static char *opa_format_port_select_mask(tvbuff_t *tvb, int offset, uint8_t **port_list, uint8_t *num_ports)
2534 int i, j, port, last = -1, first = 0, ports = 0;
2535 uint64_t mask, psm[4];
2536 wmem_strbuf_t *buf = NULL;
2537 uint8_t *portlist = NULL;
2539 if (!tvb_bytes_exist(tvb, offset, 32)) {
2540 return (char *)"Invalid Length: Requires 32 bytes";
2542 psm[0] = tvb_get_ntoh64(tvb, offset);
2543 psm[1] = tvb_get_ntoh64(tvb, offset + 8);
2544 psm[2] = tvb_get_ntoh64(tvb, offset + 16);
2545 psm[3] = tvb_get_ntoh64(tvb, offset + 24);
2547 buf = wmem_strbuf_create(wmem_packet_scope());
2549 if (port_list) {
2550 /* Allocate list of ports; max = 256 = 64 * 4 */
2551 portlist = (uint8_t *)wmem_alloc(wmem_packet_scope(), 256);
2552 memset(portlist, 0xFF, 256);
2554 for (i = 0; i < 4; i++) {
2555 mask = psm[3 - i];
2556 for (j = 0; mask && j < 64; j++, mask >>= 1) {
2557 if ((mask & (uint64_t)0x1) == 0) continue;
2558 port = (i * 64) + j;
2559 if (portlist) portlist[ports] = port;
2561 if (last == -1) {
2562 wmem_strbuf_append_printf(buf, "%d", port);
2563 last = first = port;
2564 } else if ((port - last) > 1) {
2565 if (first == last)
2566 wmem_strbuf_append_printf(buf, ",%d", port);
2567 else
2568 wmem_strbuf_append_printf(buf, "-%d,%d", last, port);
2569 last = first = port;
2570 } else {
2571 last = port;
2573 ports++;
2576 if (first != last && last != -1) {
2577 wmem_strbuf_append_printf(buf, "-%d", last);
2579 if (wmem_strbuf_get_len(buf) == 0) {
2580 wmem_strbuf_append(buf, "<Empty>");
2582 if (num_ports) *num_ports = ports;
2583 if (port_list) *port_list = portlist;
2584 return (char *)wmem_strbuf_finalize(buf);
2586 /* Custom Functions */
2587 static void cf_opa_mad_swinfo_ar_frequency(char *buf, uint16_t value)
2589 snprintf(buf, ITEM_LABEL_LENGTH, "%u ms", 2 ^ (value)*64);
2591 static void cf_opa_mad_linkspeed(char *buf, uint16_t value)
2593 int len = 0;
2594 if (value & 0x1) /* 12.5 Gbps */
2595 len = snprintf(buf, ITEM_LABEL_LENGTH, "12.5");
2596 if (value & 0x2) /* 25.78125 Gbps */
2597 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s25.78125", (len ? ", " : ""));
2598 if (len)
2599 snprintf(&buf[len], ITEM_LABEL_LENGTH - len, " Gbps");
2600 else
2601 snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
2603 static void cf_opa_mad_linkwidth(char *buf, uint16_t value)
2605 int len = 0;
2606 if (value & 0x1) /* 1x */
2607 len = snprintf(buf, ITEM_LABEL_LENGTH, "1X");
2608 if (value & 0x2) /* 2x */
2609 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s2X", (len ? ", " : ""));
2610 if (value & 0x4) /* 3x */
2611 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s3X", (len ? ", " : ""));
2612 if (value & 0x8) /* 4x */
2613 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s4X", (len ? ", " : ""));
2614 if (!len)
2615 snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
2617 static void cf_opa_mad_portlinkmode(char *buf, uint16_t value)
2619 int len = 0;
2620 if (value & 0x1) /* Reserved */
2621 len = snprintf(buf, ITEM_LABEL_LENGTH, "Reserved");
2622 if (value & 0x2) /* Ethernet */
2623 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sEthernet", (len ? ", " : ""));
2624 if (value & 0x4) /* STL */
2625 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sSTL", (len ? ", " : ""));
2626 if (!len)
2627 snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
2629 static void cf_opa_mad_portltpcrcmode(char *buf, uint16_t value)
2631 int len = 0;
2632 if (value & 0x1) /* 14-bit */
2633 len = snprintf(buf, ITEM_LABEL_LENGTH, "14-bit");
2634 if (value & 0x2) /* 16-bit */
2635 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s16-bit", (len ? ", " : ""));
2636 if (value & 0x4) /* 48-bit */
2637 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s48-bit overlapping", (len ? ", " : ""));
2638 if (value & 0x8) /* 12 to 16 bit per lane */
2639 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s[12,16]-bit per lane", (len ? ", " : ""));
2640 if (len)
2641 snprintf(&buf[len], ITEM_LABEL_LENGTH - len, " LTP CRC Mode");
2642 else
2643 snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
2645 static void cf_opa_mad_packetformat(char *buf, uint16_t value)
2647 int len = 0;
2648 if (value & 0x1) /* 8B */
2649 len = snprintf(buf, ITEM_LABEL_LENGTH, "8B");
2650 if (value & 0x2) /* 9B */
2651 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s9B", (len ? ", " : ""));
2652 if (value & 0x4) /* 10B */
2653 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s10B", (len ? ", " : ""));
2654 if (value & 0x8) /* 16B */
2655 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s16B", (len ? ", " : ""));
2656 if (len)
2657 snprintf(&buf[len], ITEM_LABEL_LENGTH - len, " Format%s", (len > 4 ? "s" : ""));
2658 else
2659 snprintf(buf, ITEM_LABEL_LENGTH, "No State Change");
2661 static void cf_opa_mad_swcongestionsetting_controlmap(char *buf, uint32_t value)
2663 int len = 0;
2664 if (value & 0x1) /* Victim */
2665 len = snprintf(buf, ITEM_LABEL_LENGTH, "Victim");
2666 if (value & 0x2) /* Credit */
2667 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sCredit", (len ? ", " : ""));
2668 if (value & 0x4) /* Threshold & PacketSize */
2669 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sThreshold & PacketSize", (len ? ", " : ""));
2670 if (value & 0x8) /* CS_threshold & CS_ReturnDelay */
2671 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sCS_threshold & CS_ReturnDelay", (len ? ", " : ""));
2672 if (value & 0x10) /* Marking Rate */
2673 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%sMarking Rate", (len ? ", " : ""));
2674 if (!len)
2675 snprintf(buf, ITEM_LABEL_LENGTH, "No Valid Fields");
2677 static void cf_opa_mad_32b_mask(char *buf, uint32_t value)
2679 int len = 0;
2680 uint32_t i, mask;
2681 for (i = 0, mask = value; mask && i < 32 && len < ITEM_LABEL_LENGTH; i++, mask >>= 1) {
2682 if (mask & 1) {
2683 len += snprintf(&buf[len], ITEM_LABEL_LENGTH - len, "%s%u", (len ? ", " : ""), i);
2686 if (!len) {
2687 snprintf(buf, ITEM_LABEL_LENGTH, " ");
2690 static void cf_opa_mad_computed_pct10(char *buf, uint16_t value)
2692 snprintf(buf, ITEM_LABEL_LENGTH, "%u.%01u", value / 10, value % 10);
2695 /* Dissector Declarations */
2696 static dissector_handle_t opa_mad_handle;
2697 static dissector_table_t ethertype_dissector_table;
2699 static reassembly_table opa_mad_rmpp_reassembly_table;
2701 static bool pref_parse_on_mad_status_error;
2702 static bool pref_attempt_rmpp_defragment = true;
2704 static range_t *global_mad_vendor_class;
2705 static range_t *global_mad_vendor_rmpp_class;
2706 static range_t *global_mad_application_class;
2707 static range_t *global_mad_reserved_class;
2708 static range_t *global_mad_opa_class;
2710 static int parse_MAD_AttributeModifier(proto_tree *MAD_tree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
2712 proto_tree *AttributeModifier_tree;
2713 proto_item *AttributeModifier_item;
2714 int local_offset = *offset;
2716 AttributeModifier_item = proto_tree_add_item(MAD_tree, hf_opa_attribute_modifier, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2717 AttributeModifier_tree = proto_item_add_subtree(AttributeModifier_item, ett_mad_attributemod);
2719 switch (MAD->MgmtClass) {
2720 case SUBN_LID_ROUTED:
2721 case SUBN_DIRECTED_ROUTE:
2722 switch (MAD->AttributeID) {
2723 case SM_ATTR_ID_CLASS_PORT_INFO: /* Shall be 0 */
2724 case SM_ATTR_ID_NOTICE:
2725 case SM_ATTR_ID_NODE_DESCRIPTION:
2726 case SM_ATTR_ID_NODE_INFO:
2727 case SM_ATTR_ID_SWITCH_INFO:
2728 case SM_ATTR_ID_SL_SC_MAPPING_TABLE:
2729 case SM_ATTR_ID_SC_SL_MAPPING_TABLE:
2730 case SM_ATTR_ID_SM_INFO:
2731 case SM_ATTR_ID_CONGESTION_INFO:
2732 case SM_ATTR_ID_SWITCH_CONGESTION_LOG:
2733 case SM_ATTR_ID_SWITCH_CONGESTION_SETTING:
2734 case SM_ATTR_ID_HFI_CONGESTION_LOG:
2735 case SM_ATTR_ID_HFI_CONGESTION_SETTING:
2736 if (MAD->AttributeModifier)
2737 expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
2738 break;
2739 case SM_ATTR_ID_PORT_INFO: /* NNNN NNNN 0000 0000 0000 00SA PPPP PPPP */
2740 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_Nps2AP, ENC_BIG_ENDIAN);
2741 break;
2742 case SM_ATTR_ID_PORT_STATE_INFO: /* NNNN NNNN 0000 0000 0000 00S0 PPPP PPPP */
2743 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpS2P, ENC_BIG_ENDIAN);
2744 break;
2745 case SM_ATTR_ID_LED_INFO: /* NNNN NNNN 0000 0000 0000 000A PPPP PPPP */
2746 case SM_ATTR_ID_BUFFER_CONTROL_TABLE:
2747 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpAP, ENC_BIG_ENDIAN);
2748 break;
2749 case SM_ATTR_ID_PART_TABLE: /* NNNN NNNN PPPP PPPP 0000 0BBB BBBB BBBB */
2750 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP2B, ENC_BIG_ENDIAN);
2751 break;
2752 case SM_ATTR_ID_SC_SC_MAPPING_TABLE: /* NNNN NNNN 0000 00AB IIII IIII EEEE EEEE */
2753 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbA2B2IE, ENC_BIG_ENDIAN);
2754 break;
2755 case SM_ATTR_ID_VL_ARBITRATION: /* NNNN NNNN SSSS SSSS 0000 000A PPPP PPPP */
2756 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpSAP, ENC_BIG_ENDIAN);
2757 break;
2758 case SM_ATTR_ID_LINEAR_FWD_TABLE: /* NNNN NNNN 0000 0ABB BBBB BBBB BBBB BBBB */
2759 case SM_ATTR_ID_PORT_GROUP_FWD_TABLE:
2760 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbA3B3, ENC_BIG_ENDIAN);
2761 break;
2762 case SM_ATTR_ID_MCAST_FWD_TABLE: /* NNNN NNNN PP0A BBBB BBBB BBBB BBBB BBBB */
2763 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP3A4B4, ENC_BIG_ENDIAN);
2764 break;
2765 case SM_ATTR_ID_CABLE_INFO: /* 0AAA AAAA AAAA ALLL LLL0 0000 PPPP PPPP */
2766 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_A5LP, ENC_BIG_ENDIAN);
2767 break;
2768 case SM_ATTR_ID_AGGREGATE: /* 0000 0000 0000 0000 0000 0000 NNNN NNNN */
2769 proto_tree_add_item(AttributeModifier_tree, hf_opa_attribute_modifier_N2, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2770 break;
2771 case SM_ATTR_ID_SC_VLR_MAPPING_TABLE: /* NNNN NNNN 0000 0000 000Y 000A PPPP PPPP */
2772 case SM_ATTR_ID_SC_VLT_MAPPING_TABLE:
2773 case SM_ATTR_ID_SC_VLNT_MAPPING_TABLE:
2774 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbYAP, ENC_BIG_ENDIAN);
2775 break;
2776 case SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING: /* NNNN NNNN 0000 0000 0000 0000 PPPP PPPP */
2777 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NpP, ENC_BIG_ENDIAN);
2778 break;
2779 case SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE: /* NNNN NNNN 0000 0000 0000 0000 PPPP PPPP */
2780 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP, ENC_BIG_ENDIAN);
2781 break;
2782 case SM_ATTR_ID_PORT_GROUP_TABLE: /* NNNN NNNN PP00 0000 0000 0000 00AB BBBB */
2783 proto_tree_add_bitmask_list(AttributeModifier_tree, tvb, local_offset, 4, _attribute_modifier_NbP3A6B5, ENC_BIG_ENDIAN);
2784 break;
2785 default:
2786 if (MAD->AttributeModifier)
2787 expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
2788 break;
2790 break;
2791 case PERF:
2792 switch (MAD->AttributeID) {
2793 case PM_ATTR_ID_CLASS_PORTINFO: /* 0 */
2794 if (MAD->AttributeModifier)
2795 expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
2796 break;
2797 case PM_ATTR_ID_PORT_STATUS: /* PPPP PPPP 0000 0000 0000 0000 0000 0000 */
2798 case PM_ATTR_ID_CLEAR_PORT_STATUS:
2799 case PM_ATTR_ID_DATA_PORT_COUNTERS:
2800 case PM_ATTR_ID_ERROR_PORT_COUNTERS:
2801 proto_tree_add_item(AttributeModifier_tree, hf_opa_attribute_modifier_NP, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2802 break;
2803 case PM_ATTR_ID_ERROR_INFO:
2804 default:
2805 if (MAD->AttributeModifier)
2806 expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
2807 break;
2809 break;
2810 case PERFADMN:
2811 case SUBNADMN:
2812 if (MAD->AttributeModifier)
2813 expert_add_info(NULL, AttributeModifier_item, &ei_opa_mad_attribute_modifier_error_nonzero);
2814 break;
2815 default:
2816 break;
2818 local_offset += 4;
2819 return local_offset;
2821 /* Parse the common MAD Header */
2822 static bool parse_MAD_Common(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset, MAD_t *MAD)
2824 int local_offset = *offset;
2825 proto_item *MAD_header_item;
2826 proto_tree *MAD_header_tree;
2827 proto_item *MAD_Status_item;
2829 if (MAD == NULL) {
2830 return false;
2833 /* Get the Management Class to decide between LID Routed and Direct Route */
2835 /* Populate the Dissector Tree */
2836 MAD_header_item = proto_tree_add_item(parentTree, hf_opa_mad, tvb, local_offset, 24, ENC_NA);
2837 MAD_header_tree = proto_item_add_subtree(MAD_header_item, ett_mad);
2839 proto_tree_add_item(MAD_header_tree, hf_opa_mad_base_version, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2840 MAD->BaseVersion = tvb_get_uint8(tvb, local_offset);
2841 local_offset += 1;
2842 proto_tree_add_item(MAD_header_tree, hf_opa_mad_mgmt_class, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2843 MAD->MgmtClass = tvb_get_uint8(tvb, local_offset);
2844 local_offset += 1;
2845 proto_tree_add_item(MAD_header_tree, hf_opa_mad_class_version, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2846 MAD->ClassVersion = tvb_get_uint8(tvb, local_offset);
2847 local_offset += 1;
2848 proto_tree_add_item(MAD_header_tree, hf_opa_mad_method, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2849 MAD->Method = tvb_get_uint8(tvb, local_offset);
2850 local_offset += 1;
2851 if (MAD->MgmtClass == SUBN_DIRECTED_ROUTE) {
2852 proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_D, tvb, local_offset, 2, ENC_BIG_ENDIAN);
2853 MAD_Status_item = proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_status, tvb, local_offset, 2, ENC_BIG_ENDIAN);
2854 MAD->Status = tvb_get_ntohs(tvb, local_offset);
2855 local_offset += 2;
2856 if (MAD->Status & 0x7FFF) {
2857 proto_item_append_text(MAD_header_item, " Error: 0x%04x", MAD->Status & 0x7FFF);
2858 expert_add_info_format(pinfo, MAD_Status_item, &ei_opa_mad_error,
2859 "Mad Status Error (0x%04x)", MAD->Status & 0x7FFF);
2861 proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_Hop_Pointer, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2862 MAD->HopPointer = tvb_get_uint8(tvb, local_offset);
2863 local_offset += 1;
2864 proto_tree_add_item(MAD_header_tree, hf_opa_mad_status_DR_Hop_Count, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2865 MAD->HopCount = tvb_get_uint8(tvb, local_offset);
2866 local_offset += 1;
2867 } else {
2868 MAD_Status_item = proto_tree_add_bitmask(MAD_header_tree, tvb, local_offset,
2869 hf_opa_mad_status, ett_mad_status, _mad_status, ENC_BIG_ENDIAN);
2870 MAD->Status = tvb_get_ntohs(tvb, local_offset);
2871 local_offset += 2;
2872 if (MAD->Status) {
2873 proto_item_append_text(MAD_header_item, " Error: 0x%04x", MAD->Status);
2874 expert_add_info_format(pinfo, MAD_Status_item, &ei_opa_mad_error,
2875 "Mad Status Error (0x%04x)", MAD->Status);
2877 proto_tree_add_item(MAD_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
2878 local_offset += 2;
2880 proto_tree_add_item(MAD_header_tree, hf_opa_mad_transaction_id, tvb, local_offset, 8, ENC_BIG_ENDIAN);
2881 MAD->TransactionID = tvb_get_ntoh64(tvb, local_offset);
2882 local_offset += 8;
2883 proto_tree_add_item(MAD_header_tree, hf_opa_mad_attribute_id, tvb, local_offset, 2, ENC_BIG_ENDIAN);
2884 MAD->AttributeID = tvb_get_ntohs(tvb, local_offset);
2885 local_offset += 2;
2886 proto_tree_add_item(MAD_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
2887 local_offset += 2;
2889 MAD->AttributeModifier = tvb_get_ntohl(tvb, local_offset);
2890 *offset = parse_MAD_AttributeModifier(MAD_header_tree, tvb, &local_offset, MAD);
2892 return true;
2894 /* Parse the RMPP (Reliable Multi-Packet Transaction Protocol) */
2895 static bool parse_RMPP(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset, RMPP_t *RMPP)
2897 int local_offset = *offset;
2898 proto_item *RMPP_header_item;
2899 proto_item *RMPP_type_item;
2900 proto_item *RMPP_segment_number_item;
2901 proto_tree *RMPP_header_tree;
2902 uint32_t val;
2904 RMPP_header_item = proto_tree_add_item(parentTree, hf_opa_rmpp, tvb, local_offset, 12, ENC_NA);
2905 RMPP_header_tree = proto_item_add_subtree(RMPP_header_item, ett_rmpp);
2907 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_version, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2908 RMPP->Version = tvb_get_uint8(tvb, local_offset);
2909 local_offset += 1;
2911 RMPP_type_item = proto_tree_add_item_ret_uint(RMPP_header_tree, hf_opa_rmpp_type, tvb,
2912 local_offset, 1, ENC_BIG_ENDIAN, &val);
2913 RMPP->Type = val;
2914 local_offset += 1;
2915 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_r_resp_time, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2916 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_flags_last, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2917 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_flags_first, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2918 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_flags_active, tvb, local_offset, 1, ENC_BIG_ENDIAN);
2919 RMPP->resptime_flags = tvb_get_uint8(tvb, local_offset);
2920 local_offset += 1;
2922 proto_tree_add_item_ret_uint(RMPP_header_tree, hf_opa_rmpp_status, tvb,
2923 local_offset, 1, ENC_BIG_ENDIAN, &val);
2924 RMPP->Status = val;
2925 local_offset += 1;
2927 if (!(RMPP->resptime_flags & RMPP_FLAG_ACTIVE_MASK) && RMPP->Type == RMPP_ILLEGAL) {
2928 proto_item_set_text(RMPP_header_item, "%s%s", "RMPP (Empty)", " - Reliable Multi-Packet Transaction Protocol");
2929 proto_item_append_text(RMPP_type_item, " %s", "RMPP (Empty)");
2930 } else {
2931 proto_item_set_text(RMPP_header_item, "%s%s", val_to_str(RMPP->Type, RMPP_Packet_Types, "RMPP (Reserved 0x%02x)"), " - Reliable Multi-Packet Transaction Protocol");
2932 proto_item_append_text(RMPP_type_item, " %s", val_to_str(RMPP->Type, RMPP_Packet_Types, "RMPP (Reserved 0x%02x)"));
2935 RMPP->PayloadLength = 0;
2937 switch (RMPP->Type) {
2938 case RMPP_ILLEGAL:
2939 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_data1, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2940 local_offset += 4;
2941 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_data2, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2942 local_offset += 4;
2943 break;
2944 case RMPP_DATA:
2945 RMPP_segment_number_item = proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2946 RMPP->SegmentNumber = tvb_get_ntohl(tvb, local_offset);
2947 if (!pref_attempt_rmpp_defragment && RMPP->SegmentNumber > 1) {
2948 expert_add_info_format(pinfo, RMPP_segment_number_item, &ei_opa_rmpp_undecoded,
2949 "Parsing Disabled for RMPP Data Segments greater than 1 (%u)", RMPP->SegmentNumber);
2951 local_offset += 4;
2952 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_payload_length32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2953 RMPP->PayloadLength = tvb_get_ntohl(tvb, local_offset);
2954 local_offset += 4;
2955 break;
2956 case RMPP_ACK:
2957 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_segment_number, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2958 local_offset += 4;
2959 proto_tree_add_item(RMPP_header_tree, hf_opa_rmpp_new_window_last, tvb, local_offset, 4, ENC_BIG_ENDIAN);
2960 local_offset += 4;
2961 break;
2962 case RMPP_STOP:
2963 case RMPP_ABORT:
2964 proto_tree_add_item(RMPP_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_NA);
2965 local_offset += 4;
2966 proto_tree_add_item(RMPP_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_NA);
2967 local_offset += 4;
2968 break;
2969 default:
2970 return false;
2972 *offset = local_offset;
2973 return true;
2975 /* Parse NoticeDataDetails Attribute Field */
2976 static int parse_NoticeDataDetails(proto_tree *parentTree, tvbuff_t *tvb, int *offset, uint16_t trapNumber)
2978 int local_offset = *offset;
2979 proto_item *DataDetails_header_item;
2980 proto_tree *DataDetails_header_tree;
2982 if (!parentTree)
2983 return 0;
2985 DataDetails_header_item = proto_tree_add_item(parentTree, hf_opa_Trap, tvb, local_offset, 64, ENC_NA);
2986 DataDetails_header_tree = proto_item_add_subtree(DataDetails_header_item, ett_datadetails);
2987 proto_item_append_text(DataDetails_header_item, " %u DataDetails", trapNumber);
2989 switch (trapNumber) {
2990 case 64:
2991 case 65:
2992 case 66:
2993 case 67:
2994 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
2995 local_offset += 16;
2996 break;
2997 case 128:
2998 case 2048:
2999 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3000 local_offset += 4;
3001 break;
3002 case 129:
3003 case 130:
3004 case 131:
3005 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3006 local_offset += 4;
3007 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_PORTNO, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3008 local_offset += 1;
3009 break;
3010 case 144:
3011 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3012 local_offset += 4;
3013 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_CAPABILITYMASK, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3014 local_offset += 4;
3015 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3016 local_offset += 2;
3017 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_CAPABILITYMASK3, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3018 local_offset += 2;
3019 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3020 local_offset += 1;
3021 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_144_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3022 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LinkWidthDowngradeEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3023 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LinkSpeecEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3024 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LinkWidthEnabledChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3025 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_NodeDescriptionChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3026 local_offset += 1;
3027 break;
3028 case 145:
3029 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SystemImageGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3030 local_offset += 8;
3031 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3032 local_offset += 4;
3033 break;
3034 case 256:
3035 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3036 local_offset += 4;
3037 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRSLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3038 local_offset += 4;
3039 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_Method, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3040 local_offset += 1;
3041 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRNotice, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3042 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRPathTruncated, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3043 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRHopCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3044 local_offset += 1;
3045 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_AttributeID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3046 local_offset += 2;
3047 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_AttributeModifier, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3048 local_offset += 4;
3049 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_MKey, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3050 local_offset += 8;
3051 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_DRNoticeReturnPath, tvb, local_offset, 30, ENC_NA);
3052 local_offset += 30;
3053 break;
3054 case 257:
3055 case 258:
3056 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3057 local_offset += 4;
3058 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3059 local_offset += 4;
3060 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3061 local_offset += 4;
3062 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3063 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3064 local_offset += 1;
3065 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3066 local_offset += 3;
3067 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
3068 local_offset += 16;
3069 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
3070 local_offset += 16;
3071 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3072 local_offset += 1;
3073 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3074 local_offset += 3;
3075 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3076 local_offset += 1;
3077 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3078 local_offset += 3;
3079 break;
3080 case 259:
3081 proto_tree_add_bitmask(DataDetails_header_tree, tvb, local_offset, hf_opa_Trap_DataValid,
3082 ett_datadetails_trap259datavalid, _Trap_DataValid, ENC_BIG_ENDIAN);
3083 local_offset += 2;
3084 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_PKey, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3085 local_offset += 2;
3086 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3087 local_offset += 4;
3088 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3089 local_offset += 4;
3090 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3091 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_SL_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3092 local_offset += 1;
3093 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3094 local_offset += 3;
3095 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
3096 local_offset += 16;
3097 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_GID, tvb, local_offset, 16, ENC_NA);
3098 local_offset += 16;
3099 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3100 local_offset += 3;
3101 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3102 local_offset += 1;
3103 proto_tree_add_item(DataDetails_header_tree, hf_opa_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3104 local_offset += 3;
3105 proto_tree_add_item(DataDetails_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3106 local_offset += 1;
3107 break;
3108 default:
3109 break;
3112 return local_offset;
3115 /* Parse NoticesAndTraps Attribute */
3116 static int parse_NoticesAndTraps(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
3118 int local_offset = *offset;
3119 proto_item *NoticesAndTraps_header_item;
3120 proto_tree *NoticesAndTraps_header_tree;
3121 bool isGeneric = tvb_get_bits8(tvb, local_offset * 8, 1);
3122 uint16_t trapNumber = tvb_get_ntohs(tvb, local_offset + 4);
3124 if (!parentTree)
3125 return *offset;
3127 NoticesAndTraps_header_item = proto_tree_add_item(parentTree, hf_opa_Notice, tvb, local_offset, 96, ENC_NA);
3128 proto_item_set_text(NoticesAndTraps_header_item, "%s", val_to_str(trapNumber, Trap_Description, "Unknown or Vendor Specific Trap Number! (0x%02x)"));
3129 NoticesAndTraps_header_tree = proto_item_add_subtree(NoticesAndTraps_header_item, ett_noticestraps);
3131 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_IsGeneric, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3132 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_Type, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3133 local_offset += 1;
3134 if (isGeneric) {
3135 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_ProducerType, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3136 local_offset += 3;
3137 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_TrapNumber, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3138 local_offset += 2;
3139 } else {
3140 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3141 local_offset += 3;
3142 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3143 local_offset += 2;
3145 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_Toggle, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3146 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_Count, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3147 local_offset += 2;
3148 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_IssuerLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3149 local_offset += 4;
3150 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3151 local_offset += 4;
3152 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_IssuerGID, tvb, local_offset, 16, ENC_NA);
3153 local_offset += 16;
3155 if (isGeneric) {
3156 parse_NoticeDataDetails(NoticesAndTraps_header_tree, tvb, &local_offset, trapNumber);
3157 local_offset += 64;
3158 if (tvb_bytes_exist(tvb, local_offset, 8)) {
3159 proto_tree_add_item(NoticesAndTraps_header_tree, hf_opa_Notice_ClassDataDetails, tvb, local_offset, -1, ENC_NA);
3161 } else {
3162 local_offset += 64;
3164 return local_offset;
3167 /* Parse InformInfo Attribute*/
3168 static int parse_InformInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3170 int local_offset = *offset;
3171 proto_item *InformInfo_header_item;
3172 proto_tree *InformInfo_header_tree;
3173 bool isGeneric;
3175 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3176 return *offset;
3178 InformInfo_header_item = proto_tree_add_item(parentTree, hf_opa_InformInfo, tvb, local_offset, 40, ENC_NA);
3179 InformInfo_header_tree = proto_item_add_subtree(InformInfo_header_item, ett_informinfo);
3181 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_GID, tvb, local_offset, 16, ENC_NA);
3182 local_offset += 16;
3183 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_LIDRangeBegin, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3184 local_offset += 4;
3185 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_LIDRangeEnd, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3186 local_offset += 4;
3187 isGeneric = (bool)tvb_get_bits8(tvb, local_offset * 8 + 7, 1);
3188 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_IsGeneric, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3189 local_offset += 1;
3190 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_Subscribe, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3191 local_offset += 1;
3192 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_Type, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3193 local_offset += 2;
3194 proto_tree_add_item(InformInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3195 local_offset += 2;
3196 if (isGeneric) {
3197 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_TrapNumber, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3198 local_offset += 2;
3199 } else {
3200 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3201 local_offset += 2;
3203 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_QPN, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3204 local_offset += 3;
3205 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3206 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_RespTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3207 local_offset += 1;
3208 proto_tree_add_item(InformInfo_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3209 local_offset += 1;
3210 if (isGeneric) {
3211 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_ProducerType, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3212 local_offset += 3;
3213 } else {
3214 proto_tree_add_item(InformInfo_header_tree, hf_opa_InformInfo_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3215 local_offset += 3;
3218 return local_offset;
3221 /* Parse ClassPortInfo MAD from the ALL classes. */
3222 static int parse_ClassPortInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3224 proto_item *ClassPortInfo_item;
3225 proto_tree *ClassPortInfo_tree;
3226 proto_tree *ClassPortInfo_Redirect_tree;
3227 proto_tree *ClassPortInfo_Trap_tree;
3228 int local_offset = *offset;
3230 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3231 return *offset;
3233 ClassPortInfo_item = proto_tree_add_item(parentTree, hf_opa_ClassPortInfo, tvb, local_offset, 80, ENC_NA);
3234 ClassPortInfo_tree = proto_item_add_subtree(ClassPortInfo_item, ett_classportinfo);
3236 proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_BaseVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3237 local_offset += 1;
3238 proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_ClassVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3239 local_offset += 1;
3241 proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_CapMask, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3242 local_offset += 2;
3243 proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_CapMask2, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3244 proto_tree_add_item(ClassPortInfo_tree, hf_opa_ClassPortInfo_RespTimeValue, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3245 local_offset += 4;
3247 ClassPortInfo_Redirect_tree = proto_tree_add_subtree(ClassPortInfo_tree, tvb, local_offset, 32,
3248 ett_classportinfo_redirect, NULL, "Redirect");
3250 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_GID, tvb, local_offset, 16, ENC_NA);
3251 local_offset += 16;
3252 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3253 local_offset += 1;
3254 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_reserved, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3255 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3256 local_offset += 3;
3257 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3258 local_offset += 4;
3259 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3260 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3261 local_offset += 1;
3262 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3263 local_offset += 3;
3264 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3265 local_offset += 4;
3267 ClassPortInfo_Trap_tree = proto_tree_add_subtree(ClassPortInfo_tree, tvb, local_offset, 32,
3268 ett_classportinfo_trap, NULL, "Trap");
3270 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_GID, tvb, local_offset, 16, ENC_NA);
3271 local_offset += 16;
3272 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3273 local_offset += 1;
3274 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_reserved, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3275 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_FlowLabel, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3276 local_offset += 3;
3277 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3278 local_offset += 4;
3279 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_HopLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3280 local_offset += 1;
3281 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_QP, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3282 local_offset += 3;
3283 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3284 local_offset += 4;
3286 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3287 local_offset += 2;
3288 proto_tree_add_item(ClassPortInfo_Redirect_tree, hf_opa_ClassPortInfo_Redirect_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3289 local_offset += 2;
3291 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3292 proto_tree_add_item(ClassPortInfo_Trap_tree, hf_opa_ClassPortInfo_Trap_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3293 local_offset += 1;
3295 proto_tree_add_item(ClassPortInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3296 local_offset += 3;
3298 return local_offset;
3301 /* Parse NodeDescription Attribute */
3302 static int parse_NodeDescription(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3304 int local_offset = *offset;
3305 proto_tree *NodeDescription_header_tree = parentTree;
3306 proto_item *NodeDescription_header_item;
3308 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3309 return *offset;
3311 NodeDescription_header_item = proto_tree_add_item(NodeDescription_header_tree, hf_opa_NodeDescription, tvb, local_offset, 64, ENC_NA);
3312 NodeDescription_header_tree = proto_item_add_subtree(NodeDescription_header_item, ett_nodedescription);
3314 proto_tree_add_item(NodeDescription_header_tree, hf_opa_NodeDescription_NodeString, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
3315 local_offset += 64;
3316 return local_offset;
3319 /* Parse NodeInfo Attribute */
3320 static int parse_NodeInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3322 int local_offset = *offset;
3323 proto_tree *NodeInfo_header_tree = parentTree;
3324 proto_item *NodeInfo_header_item;
3326 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3327 return *offset;
3329 NodeInfo_header_item = proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo, tvb, local_offset, 44, ENC_NA);
3330 NodeInfo_header_tree = proto_item_add_subtree(NodeInfo_header_item, ett_nodeinfo);
3332 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_BaseVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3333 local_offset += 1;
3334 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_ClassVersion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3335 local_offset += 1;
3336 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3337 local_offset += 1;
3338 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_NumPorts, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3339 local_offset += 1;
3340 proto_tree_add_item(NodeInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3341 local_offset += 4;
3342 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_SystemImageGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3343 local_offset += 8;
3344 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3345 local_offset += 8;
3346 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_PortGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3347 local_offset += 8;
3348 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_PartitionCap, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3349 local_offset += 2;
3350 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_DeviceID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3351 local_offset += 2;
3352 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_Revision, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3353 local_offset += 4;
3354 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3355 local_offset += 1;
3356 proto_tree_add_item(NodeInfo_header_tree, hf_opa_NodeInfo_VendorID, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3357 local_offset += 3;
3359 return local_offset;
3363 /* Parse SwitchInfo Attribute */
3364 static int parse_SwitchInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3366 int local_offset = *offset;
3367 proto_tree *SwitchInfo_header_tree = parentTree;
3368 proto_item *SwitchInfo_header_item;
3370 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3371 return *offset;
3373 SwitchInfo_header_item = proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo, tvb, local_offset, 84, ENC_NA);
3374 SwitchInfo_header_tree = proto_item_add_subtree(SwitchInfo_header_item, ett_switchinfo);
3376 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_LinearFDBCap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3377 local_offset += 4;
3378 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3379 local_offset += 4;
3380 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_MulticastFDBCap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3381 local_offset += 4;
3382 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_LinearFDBTop, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3383 local_offset += 4;
3384 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_MulticastFDBTop, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3385 local_offset += 4;
3386 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CollectiveCap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3387 local_offset += 4;
3388 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CollectiveTop, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3389 local_offset += 4;
3390 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3391 local_offset += 4;
3392 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_IPAddrIPv6, tvb, local_offset, 16, ENC_NA);
3393 local_offset += 16;
3394 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_IPAddrIPv4, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3395 local_offset += 4;
3396 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3397 local_offset += 4;
3398 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3399 local_offset += 4;
3400 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3401 local_offset += 4;
3402 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
3403 local_offset += 3;
3404 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_LifeTimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3405 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PortStateChange, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3406 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3407 local_offset += 1;
3408 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3409 local_offset += 2;
3410 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PartitionEnforcementCap, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3411 local_offset += 2;
3412 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PortGroupCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3413 local_offset += 1;
3414 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_PortGroupTop, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3415 local_offset += 1;
3416 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_SupportedRoutingMode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3417 local_offset += 1;
3418 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_EnabledRoutingMode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3419 local_offset += 1;
3421 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3422 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_EnhancedPortZero, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3423 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved4, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3424 local_offset += 1;
3425 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_reserved5, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3426 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CollectiveMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3427 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_MulticastMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3428 local_offset += 1;
3430 proto_tree_add_bitmask_list(SwitchInfo_header_tree, tvb, local_offset, 2,
3431 _SwitchInfo_AdaptiveRouting, ENC_BIG_ENDIAN);
3432 local_offset += 2;
3434 proto_tree_add_bitmask(SwitchInfo_header_tree, tvb, local_offset, hf_opa_SwitchInfo_SwitchCapabilityMask,
3435 ett_switchinfo_switchcapabilitymask, _SwitchInfo_SwitchCapabilityMask, ENC_BIG_ENDIAN);
3436 local_offset += 2;
3438 proto_tree_add_item(SwitchInfo_header_tree, hf_opa_SwitchInfo_CapabilityMaskCollectives, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3439 local_offset += 2;
3441 return local_offset;
3444 /* Parse PortInfo Attribute */
3445 static int parse_PortInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3447 int local_offset = *offset;
3448 proto_tree *PortInfo_header_tree = parentTree,
3449 *PortInfo_VL_tree,
3450 *PortInfo_Link_tree,
3451 *PortInfo_FlitControl_tree,
3452 *PortInfo_NeighborMTU_tree,
3453 *PortInfo_XmitQ_tree;
3454 proto_item * PortInfo_header_item,
3455 *PortInfo_PortWdthSpeedActive_item;
3456 proto_item *temp_item;
3457 unsigned p, i, Num_ports, Port_num;
3458 uint16_t active;
3459 int block_length = 242;
3460 int block_pad_len = 8 - (block_length & 7); /* Padding to add */
3462 if (MAD->MgmtClass == SUBNADMN) {
3463 Num_ports = 1;
3464 Port_num = tvb_get_uint8(tvb, local_offset - 4);
3465 } else {
3466 Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
3467 Port_num = (MAD->AttributeModifier & 0x000000FF);
3470 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3471 return *offset;
3473 for (p = Port_num; p < (Port_num + Num_ports);) {
3474 PortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_PortInfo, tvb, local_offset, block_length, ENC_NA);
3475 proto_item_set_text(PortInfo_header_item, "PortInfo on Port %d", p);
3476 PortInfo_header_tree = proto_item_add_subtree(PortInfo_header_item, ett_portinfo);
3478 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3479 local_offset += 4;
3480 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_FlowControlMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3481 local_offset += 4;
3483 /* VL */
3484 PortInfo_VL_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 8,
3485 ett_portinfo_vl, NULL, "VL Info");
3486 proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_PreemptCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3487 local_offset += 1;
3488 proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3489 proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_Cap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3490 local_offset += 1;
3491 proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_HighLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3492 local_offset += 2;
3493 proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_PreemptingLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3494 local_offset += 2;
3495 proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_ArbitrationHighCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3496 local_offset += 1;
3497 proto_tree_add_item(PortInfo_VL_tree, hf_opa_PortInfo_VL_ArbitrationLowCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3498 local_offset += 1;
3500 /* Port States */
3501 proto_tree_add_bitmask_list(PortInfo_header_tree, tvb, local_offset, 4, _PortStates, ENC_BIG_ENDIAN);
3502 local_offset += 4;
3504 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPhysConfig_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3505 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPhysConfig_PortType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3506 local_offset += 1;
3508 /* MultiCollectMask */
3509 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MultiCollectMask_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3510 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MultiCollectMask_CollectiveMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3511 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MultiCollectMask_MulticastMask, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3512 local_offset += 1;
3514 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_KeyProtectBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3515 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S1_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3516 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LMC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3517 local_offset += 1;
3519 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S2_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3520 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MasterSMSL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3521 local_offset += 1;
3523 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LinkInitReason, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3524 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PartitionEnforcementInbound, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3525 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PartitionEnforcementOutbound, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3526 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S3_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3527 local_offset += 1;
3529 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_S4_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3530 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_OperationalVL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3531 local_offset += 1;
3533 /* P_Keys */
3534 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_P_Keys_P_Key_8B, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3535 local_offset += 2;
3536 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_P_Keys_P_Key_10B, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3537 local_offset += 2;
3539 /* Violations */
3540 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3541 local_offset += 2;
3542 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_P_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3543 local_offset += 2;
3544 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Q_KeyViolations, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3545 local_offset += 2;
3547 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_TrapQueuePair_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3548 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_TrapQueuePair, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3549 local_offset += 4;
3551 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_SAQueuePair_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3552 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_SAQueuePair, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3553 local_offset += 4;
3555 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_NeighborPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3556 local_offset += 1;
3558 /*STL Linkdown reason */
3559 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LinkDownReason, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3560 local_offset += 1;
3562 /*STL NeighborLinkdown reason */
3563 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_NeighborLinkDownReason, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3564 local_offset += 1;
3566 /* Subnet */
3567 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_ClientReregister, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3568 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MulticastPKeyTrapSuppressEnabled, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3569 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Timeout, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3570 local_offset += 1;
3572 PortInfo_Link_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 22,
3573 ett_portinfo_link, NULL, "Link Info");
3574 /* LinkSpeed */
3575 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkSpeedSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3576 local_offset += 2;
3577 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkSpeedEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3578 local_offset += 2;
3579 active = tvb_get_ntohs(tvb, local_offset);
3580 PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkSpeedActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3581 local_offset += 2;
3582 if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
3583 proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");
3584 /* LinkWidth */
3585 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3586 local_offset += 2;
3587 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3588 local_offset += 2;
3589 active = tvb_get_ntohs(tvb, local_offset);
3590 PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3591 local_offset += 2;
3592 if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
3593 proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");
3595 /* LinkWidthDowngrade */
3596 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3597 local_offset += 2;
3598 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3599 local_offset += 2;
3600 active = tvb_get_ntohs(tvb, local_offset);
3601 PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_TxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3602 local_offset += 2;
3603 if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
3604 proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");
3605 active = tvb_get_ntohs(tvb, local_offset);
3606 PortInfo_PortWdthSpeedActive_item = proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_LinkWidthDowngrade_RxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3607 local_offset += 2;
3608 if (!active && (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP))
3609 proto_item_set_text(PortInfo_PortWdthSpeedActive_item, "None");
3611 /*PortLinkMode */
3612 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_reserved, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3613 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3614 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3615 proto_tree_add_item(PortInfo_Link_tree, hf_opa_PortInfo_PortLinkMode_Active, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3616 local_offset += 2;
3618 /*PortLTPCRCMode */
3619 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_reserved, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3620 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3621 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3622 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortLTPCRCMode_Active, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3623 local_offset += 2;
3624 /*PortMode*/
3625 proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_PortMode,
3626 ett_portinfo_portmode, _PortInfo_PortMode, ENC_BIG_ENDIAN);
3627 local_offset += 2;
3629 /* PortPacketFormats */
3630 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPacketFormats_Supported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3631 local_offset += 2;
3632 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortPacketFormats_Enabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3633 local_offset += 2;
3635 /* Flit Control */
3636 PortInfo_FlitControl_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 10,
3637 ett_portinfo_flitcontrol, NULL, "Flit Control");
3638 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_reserved, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3639 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_DistanceSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3640 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_DistanceEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3641 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelTxEnabled, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3642 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelRxSupported, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3643 local_offset += 2;
3645 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_MinInitial, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3646 local_offset += 2;
3647 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_MinTail, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3648 local_offset += 2;
3649 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_LargePacketLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3650 local_offset += 1;
3651 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_SmallPacketLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3652 local_offset += 1;
3653 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_MaxSmallPacketLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3654 local_offset += 1;
3655 proto_tree_add_item(PortInfo_FlitControl_tree, hf_opa_PortInfo_FlitControl_Preemption_PreemptionLimit, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3656 local_offset += 1;
3658 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3659 local_offset += 4;
3661 /*PortErrorAction*/
3662 proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_PortErrorAction,
3663 ett_portinfo_porterroraction, _PortInfo_PortErrorAction, ENC_BIG_ENDIAN);
3664 local_offset += 4;
3666 /* PassThroughControl */
3667 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PassThroughControl_EgressPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3668 local_offset += 1;
3669 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PassThroughControl_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3670 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PassThroughControl_DRControl, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3671 local_offset += 1;
3673 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_KeyLeasePeriod, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3674 local_offset += 2;
3676 /* BufferUnits */
3677 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3678 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_VL15Init, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3679 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_VL15CreditRate, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3680 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_CreditAck, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3681 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_BufferUnits_BufferAlloc, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3682 local_offset += 4;
3684 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3685 local_offset += 4;
3687 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MasterSMLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3688 local_offset += 4;
3690 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_M_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3691 local_offset += 8;
3692 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_SubnetPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3693 local_offset += 8;
3695 /*NeighborMTU */
3696 PortInfo_NeighborMTU_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 32 / 2,
3697 ett_portinfo_neighbormtu, NULL, "NeighborMTU");
3698 for (i = 0; i < (32 / 2); i++) {
3699 temp_item = proto_tree_add_item(PortInfo_NeighborMTU_tree, hf_opa_PortInfo_VL1, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3700 proto_item_prepend_text(temp_item, "%3u: ", 2 * i);
3701 temp_item = proto_tree_add_item(PortInfo_NeighborMTU_tree, hf_opa_PortInfo_VL2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3702 local_offset += 1;
3703 proto_item_prepend_text(temp_item, "%3u: ", 2 * i + 1);
3706 /*XmitQ*/
3707 PortInfo_XmitQ_tree = proto_tree_add_subtree(PortInfo_header_tree, tvb, local_offset, 32,
3708 ett_portinfo_xmitq, NULL, "XmitQ");
3709 for (i = 0; i < 32; i++) {
3710 temp_item = proto_tree_add_item(PortInfo_XmitQ_tree, hf_opa_PortInfo_XmitQ_VLStallCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3711 proto_item_prepend_text(temp_item, "%3u: ", i);
3712 temp_item = proto_tree_add_item(PortInfo_XmitQ_tree, hf_opa_PortInfo_XmitQ_HOQLife, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3713 local_offset += 1;
3714 proto_item_prepend_text(temp_item, " ");
3717 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_IPAddrIPv6, tvb, local_offset, 16, ENC_NA);
3718 local_offset += 16;
3719 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_IPAddrIPv4, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3720 local_offset += 4;
3721 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3722 local_offset += 4;
3723 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3724 local_offset += 4;
3725 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3726 local_offset += 4;
3728 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_NeighborNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
3729 local_offset += 8;
3731 /* Capability Mask Flags */
3732 proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_CapabilityMask,
3733 ett_portinfo_capmask, _PortInfo_CapabilityMask, ENC_BIG_ENDIAN);
3734 local_offset += 4;
3735 /* End Capability Mask Flags */
3737 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3738 local_offset += 2;
3740 /* CapabilityMask3 */
3741 proto_tree_add_bitmask(PortInfo_header_tree, tvb, local_offset, hf_opa_PortInfo_CapabilityMask3,
3742 ett_portinfo_capmask3, _PortInfo_CapabilityMask3, ENC_BIG_ENDIAN);
3743 local_offset += 2;
3745 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
3746 local_offset += 4;
3748 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_OverallBufferSpace, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3749 local_offset += 2;
3750 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3751 local_offset += 2;
3753 /* Diag Code */
3754 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_DiagCode, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3755 local_offset += 2;
3756 /* End Diag Code */
3758 /* Replay Depth */
3759 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_ReplayDepth_BufferDepth, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3760 local_offset += 1;
3761 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_ReplayDepth_WireDepth, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3762 local_offset += 1;
3764 /* PortNeighborMode */
3765 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3766 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_MgmtAllowed, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3767 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_NeighborFWAuthenBypass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3768 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_PortNeighborMode_NeighborNodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3769 local_offset += 1;
3771 /* MTU */
3772 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MTU_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3773 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_MTU_Cap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3774 local_offset += 1;
3776 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Resp_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3777 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_Resp_TimeValue, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3778 local_offset += 1;
3780 proto_tree_add_item(PortInfo_header_tree, hf_opa_PortInfo_LocalPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3781 local_offset += 1;
3783 proto_tree_add_item(PortInfo_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3784 local_offset += 2;
3786 /* If Not last block add byte padding */
3787 if ((++p) < (Port_num + Num_ports)) {
3788 local_offset += block_pad_len;
3792 return local_offset;
3795 /* Parse PortStateInfo Attribute */
3796 static int parse_PortStateInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3798 int local_offset = *offset;
3799 proto_item *PortStates_header_item;
3800 proto_tree *PortStates_header_tree;
3801 unsigned i, Num_ports, Port_num;
3803 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3804 return *offset;
3806 Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
3807 Port_num = (MAD->AttributeModifier & 0x000000FF);
3809 for (i = Port_num; i < Port_num + Num_ports; i++) {
3810 PortStates_header_item = proto_tree_add_item(parentTree, hf_opa_PortStates, tvb, local_offset, 4, ENC_NA);
3811 proto_item_set_text(PortStates_header_item, "Port Sate Info on Port %d", i);
3812 PortStates_header_tree = proto_item_add_subtree(PortStates_header_item, ett_portstates);
3814 proto_tree_add_bitmask_list(PortStates_header_tree, tvb, local_offset, 4,
3815 _PortStates, ENC_BIG_ENDIAN);
3816 local_offset += 4;
3818 proto_tree_add_item(PortStates_header_tree, hf_opa_PortStates_LinkWidthDowngradeTxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3819 local_offset += 2;
3820 proto_tree_add_item(PortStates_header_tree, hf_opa_PortStates_LinkWidthDowngradeRxActive, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3821 local_offset += 2;
3824 return local_offset;
3827 /* Parse P_KeyTable Attribute */
3828 static int parse_P_KeyTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3830 int local_offset = *offset;
3831 proto_item *P_KeyTable_header_item;
3832 proto_tree *P_KeyTable_header_tree;
3833 proto_tree *tempBlock_tree;
3834 proto_item *tempItemLow;
3835 proto_item *tempItemHigh;
3836 unsigned i, b, Num_blocks, Block_num/*, Port_num*/;
3838 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3839 return *offset;
3841 if (MAD->MgmtClass == SUBNADMN) {
3842 Num_blocks = 1;
3843 Block_num = tvb_get_ntohs(tvb, local_offset - 4);
3844 /*Port_num = tvb_get_uint8(tvb, local_offset - 2);*/
3845 } else {
3846 Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
3847 Block_num = (MAD->AttributeModifier & 0x000007FF);
3848 /*Port_num = (MAD->AttributeModifier & 0x00FF0000) >> 16;*/
3851 P_KeyTable_header_item = proto_tree_add_item(parentTree, hf_opa_P_KeyTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
3852 P_KeyTable_header_tree = proto_item_add_subtree(P_KeyTable_header_item, ett_pkeytable);
3854 for (b = Block_num; b < Block_num + Num_blocks; b++) {
3855 tempBlock_tree = proto_tree_add_subtree_format(P_KeyTable_header_tree, tvb, local_offset, 64,
3856 ett_pkeytable_block, NULL, "PKey Table Block %u", b);
3858 for (i = 0; i < 32; i++) {
3859 tempItemHigh = proto_tree_add_item(tempBlock_tree, hf_opa_P_KeyTable_MembershipType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3860 tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_P_KeyTable_P_KeyBase, tvb, local_offset, 2, ENC_BIG_ENDIAN);
3861 local_offset += 2;
3862 proto_item_prepend_text(tempItemHigh, "%3u: ", i);
3863 proto_item_prepend_text(tempItemLow, " ");
3866 return local_offset;
3869 /* Parse SLtoSC Mapping Table Attribute */
3870 static int parse_SLtoSCMappingTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3872 int local_offset = *offset;
3873 proto_item *SLtoSCMappingTable_header_item;
3874 proto_tree *SLtoSCMappingTable_header_tree;
3875 proto_item *tempItemHigh;
3876 proto_item *tempItemLow;
3877 unsigned i;
3879 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3880 return *offset;
3882 SLtoSCMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SLtoSCMappingTable, tvb, local_offset, 32, ENC_NA);
3883 SLtoSCMappingTable_header_tree = proto_item_add_subtree(SLtoSCMappingTable_header_item, ett_sltoscmapping);
3885 for (i = 0; i < 32; i++) {
3886 tempItemHigh = proto_tree_add_item(SLtoSCMappingTable_header_tree, hf_opa_SLtoSCMappingTable_SLtoSC_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3887 proto_item_prepend_text(tempItemHigh, "%3u: ", i);
3888 tempItemLow = proto_tree_add_item(SLtoSCMappingTable_header_tree, hf_opa_SLtoSCMappingTable_SLtoSC_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3889 proto_item_prepend_text(tempItemLow, " ");
3890 local_offset += 1;
3893 return local_offset;
3896 /* Parse SCtoSC Mapping Table Attribute */
3897 static int parse_SCtoSCMappingTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3899 int local_offset = *offset;
3900 proto_item *SCtoSCMappingTable_header_item;
3901 proto_tree *SCtoSCMappingTable_header_tree;
3902 proto_item *tempItemHigh;
3903 proto_item *tempItemLow;
3904 proto_tree *tempBlock_tree;
3905 unsigned i, b, i_block, e_block, Num_blocks, Block_num;
3906 bool B;
3908 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3909 return *offset;
3911 if (MAD->MgmtClass == SUBNADMN) {
3912 Num_blocks = 1;
3913 B = false;
3914 i_block = tvb_get_uint8(tvb, local_offset - 4);
3915 e_block = tvb_get_uint8(tvb, local_offset - 3);
3916 Block_num = e_block;
3917 } else {
3918 Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
3919 B = (bool)((MAD->AttributeModifier & 0x00010000) >> 16);
3920 i_block = (MAD->AttributeModifier & 0x0000FF00) >> 8;
3921 e_block = (MAD->AttributeModifier & 0x000000FF);
3922 Block_num = (B ? i_block : e_block);
3925 SCtoSCMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SCtoSCMappingTable, tvb, local_offset, 32 * Num_blocks, ENC_NA);
3926 SCtoSCMappingTable_header_tree = proto_item_add_subtree(SCtoSCMappingTable_header_item, ett_sctoscmapping);
3928 for (b = Block_num; b < (Block_num + Num_blocks); b++) {
3929 tempBlock_tree = proto_tree_add_subtree_format(SCtoSCMappingTable_header_tree, tvb, local_offset, 32,
3930 ett_sctoscmapping_block, NULL, "SC to SC Mapping Table for InPort %u, OutPort %u", (B ? b : i_block), (B ? e_block : b));
3932 for (i = 0; i < 32; i++) {
3933 tempItemHigh = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoSCMappingTable_SCtoSC_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3934 proto_item_prepend_text(tempItemHigh, "%3u: ", i);
3935 tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoSCMappingTable_SCtoSC_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3936 proto_item_prepend_text(tempItemLow, " ");
3937 local_offset += 1;
3941 return local_offset;
3944 /* Parse SCtoSL Mapping Table Attribute */
3945 static int parse_SCtoSLMappingTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3947 int local_offset = *offset;
3948 proto_item *SCtoSLMappingTable_header_item;
3949 proto_tree *SCtoSLMappingTable_header_tree;
3950 proto_item *tempItemHigh;
3951 proto_item *tempItemLow;
3952 unsigned i;
3954 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3955 return *offset;
3957 SCtoSLMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SCtoSLMappingTable, tvb, local_offset, 32, ENC_NA);
3958 SCtoSLMappingTable_header_tree = proto_item_add_subtree(SCtoSLMappingTable_header_item, ett_sctoslmapping);
3960 for (i = 0; i < 32; i++) {
3961 tempItemHigh = proto_tree_add_item(SCtoSLMappingTable_header_tree, hf_opa_SCtoSLMappingTable_SCtoSL_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3962 proto_item_prepend_text(tempItemHigh, "%3u: ", i);
3963 tempItemLow = proto_tree_add_item(SCtoSLMappingTable_header_tree, hf_opa_SCtoSLMappingTable_SCtoSL_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
3964 proto_item_prepend_text(tempItemLow, " ");
3965 local_offset += 1;
3967 return local_offset;
3970 /* Parse SCtoVLx Mapping Table Attribute */
3971 static int parse_SCtoVLxMappingTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
3973 int local_offset = *offset;
3974 proto_item *SCtoVLxMappingTable_header_item;
3975 proto_tree *SCtoVLxMappingTable_header_tree;
3976 proto_item *tempItemLow;
3977 proto_item *tempItemHigh;
3978 proto_tree *tempBlock_tree;
3979 unsigned p, v, Port_num, Num_ports;
3980 const char *VLx;
3982 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
3983 return *offset;
3985 if (MAD->MgmtClass == SUBNADMN) {
3986 Num_ports = 1;
3987 Port_num = tvb_get_uint8(tvb, local_offset - 4);
3988 VLx = val_to_str_const(MAD->AttributeID, SA_SC_VLx, "x");
3989 } else {
3990 Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
3991 Port_num = (MAD->AttributeModifier & 0x000000FF);
3992 VLx = val_to_str_const(MAD->AttributeID, SM_SC_VLx, "x");
3995 SCtoVLxMappingTable_header_item = proto_tree_add_item(parentTree, hf_opa_SCtoVLxMappingTable, tvb, local_offset, 32 * Num_ports, ENC_NA);
3996 proto_item_set_text(SCtoVLxMappingTable_header_item, "SC to VL%s Mapping Table", VLx);
3997 SCtoVLxMappingTable_header_tree = proto_item_add_subtree(SCtoVLxMappingTable_header_item, ett_sctovlxmappingtable);
3999 for (p = Port_num; p < (Port_num + Num_ports); p++) {
4000 tempBlock_tree = proto_tree_add_subtree_format(SCtoVLxMappingTable_header_tree, tvb, local_offset, 32,
4001 ett_sctovlxmappingtable_block, NULL, "SC to VL%s Mapping Table for Port %u", VLx, p);
4003 for (v = 0; v < 32; v++) {
4004 tempItemHigh = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoVLxMappingTable_SCtoVLx_HighBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4005 proto_item_prepend_text(tempItemHigh, "%3u: ", v);
4006 tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_SCtoVLxMappingTable_SCtoVLx_LowBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4007 proto_item_prepend_text(tempItemLow, " ");
4008 local_offset += 1;
4011 return local_offset;
4014 /* Parse VLArbitrationTable Attribute */
4015 static int parse_VLArbitrationTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4017 int local_offset = *offset;
4018 proto_item *VLArbitrationTable_header_item;
4019 proto_tree * VLArbitrationTable_header_tree,*VLArbitrationTable_port_tree;
4020 proto_item *tempItemHigh;
4021 proto_item *tempItemLow;
4022 proto_item *tempItem;
4023 unsigned i, p, Section, Num_ports, Port_num;
4024 const char *TableType;
4026 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4027 return *offset;
4029 if (MAD->MgmtClass == SUBNADMN) {
4030 Num_ports = 1;
4031 Section = tvb_get_uint8(tvb, local_offset - 3);
4032 Port_num = tvb_get_uint8(tvb, local_offset - 4);
4033 } else {
4034 Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
4035 Section = (MAD->AttributeModifier & 0x00FF0000) >> 16;
4036 Port_num = (MAD->AttributeModifier & 0x000000FF);
4038 TableType = val_to_str_const(Section, MADAttrModSectionVLarb_short, "Reserved");
4040 VLArbitrationTable_header_item = proto_tree_add_item(parentTree, hf_opa_VLArbitrationTable, tvb, local_offset, 256 * Num_ports, ENC_NA);
4041 VLArbitrationTable_header_tree = proto_item_add_subtree(VLArbitrationTable_header_item, ett_vlarbitrationtable);
4043 for (p = Port_num; p < (Port_num + Num_ports); p++) {
4044 VLArbitrationTable_port_tree = proto_tree_add_subtree_format(VLArbitrationTable_header_tree, tvb, local_offset, 256,
4045 ett_vlarbitrationtable_port, NULL, "%s VL Arbitration Table on Port %u", TableType, p);
4047 if (Section < 3) {
4048 for (i = 0; i < 128; i++) {
4049 tempItemHigh = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4050 proto_item_prepend_text(tempItemHigh, "%3u: ", i);
4051 tempItemLow = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_VL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4052 proto_item_prepend_text(tempItemLow, " ");
4053 local_offset += 1;
4055 tempItem = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_Weight, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4056 local_offset += 1;
4057 proto_item_prepend_text(tempItem, " ");
4059 } else if (Section == 3) {
4060 for (i = 0; i < 32; i++) {
4061 tempItemLow = proto_tree_add_item(VLArbitrationTable_port_tree, hf_opa_VLArbitrationTable_Matrix, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4062 local_offset += 4;
4063 proto_item_prepend_text(tempItemLow, "%3u: ", i);
4065 local_offset += 128;
4066 } else {
4067 local_offset += 256;
4070 return local_offset;
4073 /* Parse LinearForwardingTable Attribute */
4074 static int parse_LinearForwardingTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4076 int local_offset = *offset;
4077 proto_item *LinearForwardingTable_header_item;
4078 proto_tree *LinearForwardingTable_header_tree;
4079 proto_item *tempItemLow;
4080 proto_tree *tempBlock_tree;
4081 unsigned b, i, Block_num, Num_blocks;
4083 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4084 return *offset;
4086 if (MAD->MgmtClass == SUBNADMN) {
4087 Num_blocks = 1;
4088 Block_num = tvb_get_ntohl(tvb, local_offset - 4) & 0x0003FFFF;
4089 } else {
4090 Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
4091 Block_num = (MAD->AttributeModifier & 0x0003FFFF);
4094 LinearForwardingTable_header_item = proto_tree_add_item(parentTree, hf_opa_LinearForwardingTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
4095 LinearForwardingTable_header_tree = proto_item_add_subtree(LinearForwardingTable_header_item, ett_linearforwardingtable);
4096 for (b = Block_num; b < (Block_num + Num_blocks); b++) {
4097 tempBlock_tree = proto_tree_add_subtree_format(LinearForwardingTable_header_tree, tvb, local_offset, 64,
4098 ett_linearforwardingtable_block, NULL, "Linear Forwarding Table Block %u", b);
4100 for (i = 0; i < 64; i++) {
4101 tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_LinearForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4102 local_offset += 1;
4103 proto_item_prepend_text(tempItemLow, "%3u: ", i);
4106 return local_offset;
4109 /* Parse MulticastForwardingTable Attribute */
4110 static int parse_MulticastForwardingTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4112 int local_offset = *offset;
4113 proto_item *MulticastForwardingTable_header_item;
4114 proto_tree *MulticastForwardingTable_header_tree;
4115 proto_item *tempItem;
4116 proto_tree *tempBlock_tree;
4117 unsigned b, i, Block_num, Num_blocks, Pos;
4118 const char *Position;
4120 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4121 return *offset;
4123 if (MAD->MgmtClass == SUBNADMN) {
4124 Num_blocks = 1;
4125 Pos = 0;
4126 Block_num = tvb_get_ntohl(tvb, local_offset - 4) & 0x001FFFFF;
4127 } else {
4128 Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
4129 Pos = (MAD->AttributeModifier & 0x00C00000) >> 22;
4130 Block_num = (MAD->AttributeModifier & 0x000FFFFF);
4132 Position = val_to_str_const(Pos, GroupTablePosition, "Unknown");
4134 MulticastForwardingTable_header_item = proto_tree_add_item(parentTree, hf_opa_MulticastForwardingTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
4135 MulticastForwardingTable_header_tree = proto_item_add_subtree(MulticastForwardingTable_header_item, ett_multicastforwardingtable);
4136 for (b = Block_num; b < (Block_num + Num_blocks); b++) {
4137 tempBlock_tree = proto_tree_add_subtree_format(MulticastForwardingTable_header_tree, tvb, local_offset, 64,
4138 ett_multicastforwardingtable_block, NULL, "Multicast Forwarding Table Block %u, Ports %s", b, Position);
4140 for (i = 0; i < 8; i++) {
4141 tempItem = proto_tree_add_item(tempBlock_tree, hf_opa_MulticastForwardingTable_PortMask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
4142 local_offset += 8;
4143 proto_item_prepend_text(tempItem, "%3u: ", i);
4146 return local_offset;
4149 /* Parse PortGroupForwardingTable Attribute */
4150 static int parse_PortGroupForwardingTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4152 int local_offset = *offset;
4153 proto_item *PortGroupForwardingTable_header_item;
4154 proto_tree *PortGroupForwardingTable_header_tree;
4155 proto_item *tempItemLow;
4156 proto_tree *tempBlock_tree;
4157 unsigned b, i, Block_num, Num_blocks;
4159 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4160 return *offset;
4162 if (MAD->MgmtClass == SUBNADMN) {
4163 Num_blocks = 1;
4164 Block_num = tvb_get_ntohl(tvb, local_offset - 4) & 0x0003FFFF;
4165 } else {
4166 Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
4167 Block_num = (MAD->AttributeModifier & 0x0003FFFF);
4170 PortGroupForwardingTable_header_item = proto_tree_add_item(parentTree, hf_opa_PortGroupForwardingTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
4171 PortGroupForwardingTable_header_tree = proto_item_add_subtree(PortGroupForwardingTable_header_item, ett_portgroupforwardingtable);
4173 for (b = Block_num; b < (Block_num + Num_blocks); b++) {
4174 tempBlock_tree = proto_tree_add_subtree_format(PortGroupForwardingTable_header_tree, tvb, local_offset, 64,
4175 ett_portgroupforwardingtable_block, NULL, "Port Group Forwarding Table Block %u", b);
4177 for (i = 0; i < 64; i++) {
4178 tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_PortGroupForwardingTable_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4179 local_offset += 1;
4180 proto_item_prepend_text(tempItemLow, "%3u: ", i);
4183 return local_offset;
4186 /* Parse PortGroupTable Attribute */
4187 static int parse_PortGroupTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4189 int local_offset = *offset;
4190 proto_item *PortGroupTable_header_item;
4191 proto_tree *PortGroupTable_header_tree;
4192 proto_item *tempItemLow;
4193 proto_tree *tempBlock_tree;
4194 unsigned b, i, Block_num, Num_blocks, Pos;
4195 const char *Position;
4197 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4198 return *offset;
4200 if (MAD->MgmtClass == SUBNADMN) {
4201 Num_blocks = 1;
4202 Pos = 0;
4203 Block_num = tvb_get_uint8(tvb, local_offset - 3) & 0x1F;
4204 } else {
4205 Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
4206 Pos = (MAD->AttributeModifier & 0x00C00000) >> 22;
4207 Block_num = (MAD->AttributeModifier & 0x0000001F);
4209 Position = val_to_str_const(Pos, GroupTablePosition, "Unknown");
4211 PortGroupTable_header_item = proto_tree_add_item(parentTree, hf_opa_PortGroupTable, tvb, local_offset, 64 * Num_blocks, ENC_NA);
4212 PortGroupTable_header_tree = proto_item_add_subtree(PortGroupTable_header_item, ett_portgrouptable);
4214 for (b = Block_num; b < (Block_num + Num_blocks); b++) {
4215 tempBlock_tree = proto_tree_add_subtree_format(PortGroupTable_header_tree, tvb, local_offset, 64,
4216 ett_portgrouptable_block, NULL, "Port Group Table Block %u, Ports %s", b, Position);
4218 for (i = 0; i < 8; i++) {
4219 tempItemLow = proto_tree_add_item(tempBlock_tree, hf_opa_PortGroupTable_PortMask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
4220 local_offset += 8;
4221 proto_item_prepend_text(tempItemLow, "%3u: ", i);
4224 return local_offset;
4227 /* Parse SMInfo Attribute */
4228 static int parse_SMInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4230 int local_offset = *offset;
4231 proto_item *SMInfo_header_item;
4232 proto_tree *SMInfo_header_tree;
4234 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4235 return *offset;
4237 SMInfo_header_item = proto_tree_add_item(parentTree, hf_opa_SMInfo, tvb, local_offset, 26, ENC_NA);
4238 SMInfo_header_tree = proto_item_add_subtree(SMInfo_header_item, ett_sminfo);
4240 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_GUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
4241 local_offset += 8;
4242 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_SM_Key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
4243 local_offset += 8;
4244 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_ActCount, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4245 local_offset += 4;
4246 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_ElapsedTime, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4247 local_offset += 4;
4248 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_Priority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4249 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_ElevatedPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4250 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_InitialPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4251 proto_tree_add_item(SMInfo_header_tree, hf_opa_SMInfo_SMState, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4252 local_offset += 2;
4253 return local_offset;
4256 /* Parse LedInfo Attribute */
4257 static int parse_LedInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4259 int local_offset = *offset;
4260 proto_item *LedInfo_header_item;
4261 proto_tree *LedInfo_header_tree;
4262 proto_item *tempItemHigh;
4263 proto_item *tempItemLow;
4264 unsigned p, Port_num, Num_ports;
4266 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4267 return *offset;
4269 Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
4270 Port_num = (MAD->AttributeModifier & 0x000000FF);
4272 LedInfo_header_item = proto_tree_add_item(parentTree, hf_opa_LedInfo, tvb, local_offset, 8 * Num_ports, ENC_NA);
4273 LedInfo_header_tree = proto_item_add_subtree(LedInfo_header_item, ett_ledinfo);
4275 for (p = Port_num; p < (Port_num + Num_ports); p++) {
4276 tempItemHigh = proto_tree_add_item(LedInfo_header_tree, hf_opa_LedInfo_LedMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4277 proto_item_prepend_text(tempItemHigh, "Port %3u: ", p);
4278 tempItemLow = proto_tree_add_item(LedInfo_header_tree, hf_opa_LedInfo_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4279 proto_item_prepend_text(tempItemLow, " ");
4280 local_offset += 4;
4281 proto_tree_add_item(LedInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4282 local_offset += 4;
4284 return local_offset;
4287 /* Parse CableInfo Attribute */
4288 static int parse_CableInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4290 int local_offset = *offset;
4291 proto_item *CableInfo_header_item;
4292 proto_tree *CableInfo_header_tree;
4293 proto_item *tempItemLow;
4294 unsigned i, Port_num, Data_Len, start_addr;
4296 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4297 return *offset;
4299 start_addr = (MAD->AttributeModifier & 0x7FF80000) >> 19;
4300 Port_num = (MAD->AttributeModifier & 0x000000FF);
4301 Data_Len = ((MAD->AttributeModifier & 0x0007E000) >> 13) + 1;
4303 CableInfo_header_item = proto_tree_add_item(parentTree, hf_opa_CableInfo, tvb, local_offset, Data_Len, ENC_NA);
4304 proto_item_set_text(CableInfo_header_item, "Cable Info on Port %u", Port_num);
4305 CableInfo_header_tree = proto_item_add_subtree(CableInfo_header_item, ett_cableinfo);
4307 proto_tree_add_item(CableInfo_header_tree, hf_opa_CableInfo_DataStream, tvb, local_offset, Data_Len, ENC_ASCII | ENC_NA);
4308 for (i = 0; i < Data_Len; i++) {
4309 tempItemLow = proto_tree_add_item(CableInfo_header_tree, hf_opa_CableInfo_Data, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4310 proto_item_prepend_text(tempItemLow, "0x%04X: ", i + start_addr);
4311 local_offset += 1;
4313 return local_offset;
4315 /* Parse BufferControlTable Attribute */
4316 static int parse_BufferControlTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4318 int local_offset = *offset;
4319 proto_item *BCT_header_item;
4320 proto_tree *BCT_header_tree;
4321 proto_item *tempItemLow;
4322 proto_item *tempItemHigh;
4323 unsigned p, i, Port_num, Num_ports;
4324 int block_length = 4 + (32 * 4);
4325 int block_pad_len = 8 - (block_length & 7); /* Padding to add */
4327 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4328 return *offset;
4330 if (MAD->MgmtClass == SUBNADMN) {
4331 Num_ports = 1;
4332 Port_num = tvb_get_uint8(tvb, local_offset - 4);
4333 } else {
4334 Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
4335 Port_num = (MAD->AttributeModifier & 0x000000FF);
4338 for (p = Port_num; p < (Port_num + Num_ports);) {
4339 BCT_header_item = proto_tree_add_item(parentTree, hf_opa_BufferControlTable, tvb, local_offset, block_length, ENC_NA);
4340 proto_item_append_text(BCT_header_item, " Port %u", p);
4341 BCT_header_tree = proto_item_add_subtree(BCT_header_item, ett_buffercontroltable);
4343 proto_tree_add_item(BCT_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4344 local_offset += 2;
4345 proto_tree_add_item(BCT_header_tree, hf_opa_BufferControlTable_TxOverallSharedLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4346 local_offset += 2;
4347 for (i = 0; i < 32; i++) {
4348 tempItemHigh = proto_tree_add_item(BCT_header_tree, hf_opa_BufferControlTable_TxSharedLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4349 local_offset += 2;
4350 tempItemLow = proto_tree_add_item(BCT_header_tree, hf_opa_BufferControlTable_TxDedicatedLimit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4351 local_offset += 2;
4352 proto_item_prepend_text(tempItemHigh, "VL %2u: ", i);
4353 proto_item_prepend_text(tempItemLow, " ");
4356 /* If Not last block add byte padding */
4357 if ((++p) < (Port_num + Num_ports)) {
4358 local_offset += block_pad_len;
4361 return local_offset;
4364 /* Parse CongestionInfo Attribute */
4365 static int parse_CongestionInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4367 int local_offset = *offset;
4368 proto_item *CongestionInfo_header_item;
4369 proto_tree *CongestionInfo_header_tree;
4371 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4372 return *offset;
4374 CongestionInfo_header_item = proto_tree_add_item(parentTree, hf_opa_CongestionInfo, tvb, local_offset, 4, ENC_NA);
4375 CongestionInfo_header_tree = proto_item_add_subtree(CongestionInfo_header_item, ett_congestioninfo);
4377 proto_tree_add_item(CongestionInfo_header_tree, hf_opa_CongestionInfo_CongestionInfo, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4378 local_offset += 2;
4379 proto_tree_add_item(CongestionInfo_header_tree, hf_opa_CongestionInfo_ControlTableCap, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4380 local_offset += 1;
4381 proto_tree_add_item(CongestionInfo_header_tree, hf_opa_CongestionInfo_CongestionLogLength, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4382 local_offset += 1;
4383 return local_offset;
4386 /* Parse SwitchCongestionLog Attribute */
4387 static int parse_SwitchCongestionLog(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4389 int local_offset = *offset;
4390 proto_item *SwitchCongestionLog_header_item;
4391 proto_tree *SwitchCongestionLog_header_tree;
4392 proto_tree *SwitchCongestionLog_Entry_tree;
4393 unsigned i;
4395 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4396 return *offset;
4398 SwitchCongestionLog_header_item = proto_tree_add_item(parentTree, hf_opa_SwitchCongestionLog, tvb, local_offset, 40 + (96 * 16), ENC_NA);
4399 SwitchCongestionLog_header_tree = proto_item_add_subtree(SwitchCongestionLog_header_item, ett_switchcongestionlog);
4401 proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_LogType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4402 local_offset += 1;
4403 proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_CongestionFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4404 local_offset += 1;
4405 proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_LogEventsCounter, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4406 local_offset += 2;
4407 proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_CurrentTimeStamp, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4408 local_offset += 4;
4409 proto_tree_add_item(SwitchCongestionLog_header_tree, hf_opa_SwitchCongestionLog_PortMap, tvb, local_offset, 32, ENC_NA);
4410 local_offset += 32;
4412 for (i = 0; i < 96; i++) {
4413 SwitchCongestionLog_Entry_tree = proto_tree_add_subtree_format(SwitchCongestionLog_header_tree, tvb, local_offset, 16,
4414 ett_switchcongestionlog_entry, NULL, "Switch Congestion Log Entry %u", i);
4416 proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_SLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4417 local_offset += 4;
4418 proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_DLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4419 local_offset += 4;
4420 proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4421 proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4422 local_offset += 1;
4423 proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
4424 local_offset += 3;
4425 proto_tree_add_item(SwitchCongestionLog_Entry_tree, hf_opa_SwitchCongestionLog_TimeStamp, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4426 local_offset += 4;
4428 return local_offset;
4431 /* Parse SwitchCongestionSetting Attribute */
4432 static int parse_SwitchCongestionSetting(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4434 int local_offset = *offset;
4435 proto_item *SwitchCongestionSetting_header_item;
4436 proto_tree *SwitchCongestionSetting_header_tree;
4438 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4439 return *offset;
4441 SwitchCongestionSetting_header_item = proto_tree_add_item(parentTree, hf_opa_SwitchCongestionSetting, tvb, local_offset, 64, ENC_NA);
4442 SwitchCongestionSetting_header_tree = proto_item_add_subtree(SwitchCongestionSetting_header_item, ett_switchcongestionsetting);
4444 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Control_Map, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4445 local_offset += 4;
4446 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Victim_Mask, tvb, local_offset, 32, ENC_NA);
4447 local_offset += 32;
4448 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Credit_Mask, tvb, local_offset, 32, ENC_NA);
4449 local_offset += 32;
4450 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Threshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4451 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_reserved1, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4452 local_offset += 1;
4453 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Packet_Size, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4454 local_offset += 1;
4455 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_CS_Threshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4456 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4457 local_offset += 1;
4458 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4459 local_offset += 1;
4460 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_CS_ReturnDelay, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4461 local_offset += 2;
4462 proto_tree_add_item(SwitchCongestionSetting_header_tree, hf_opa_SwitchCongestionSetting_Marking_Rate, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4463 local_offset += 2;
4465 return local_offset;
4468 /* Parse SwitchPortCongestionSetting Attribute */
4469 static int parse_SwitchPortCongestionSetting(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4471 int local_offset = *offset;
4472 proto_item *SwitchPortCongestionSetting_header_item;
4473 proto_tree *SwitchPortCongestionSetting_header_tree;
4474 proto_tree *SwitchPortCongestionSetting_Port_tree;
4475 unsigned p, Num_ports, Port_num;
4477 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4478 return *offset;
4480 if (MAD->MgmtClass == SUBNADMN) {
4481 Num_ports = 1;
4482 Port_num = tvb_get_uint8(tvb, local_offset - 4);
4483 } else {
4484 Num_ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
4485 Port_num = (MAD->AttributeModifier & 0x000000FF);
4488 SwitchPortCongestionSetting_header_item = proto_tree_add_item(parentTree, hf_opa_SwitchPortCongestionSetting, tvb, local_offset, 4 * Num_ports, ENC_NA);
4489 SwitchPortCongestionSetting_header_tree = proto_item_add_subtree(SwitchPortCongestionSetting_header_item, ett_switchportcongestionsetting);
4491 for (p = Port_num; p < Port_num + Num_ports; p++) {
4492 SwitchPortCongestionSetting_Port_tree = proto_tree_add_subtree_format(SwitchPortCongestionSetting_header_tree, tvb, local_offset, 4,
4493 ett_switchportcongestionsetting_port, NULL, "Switch Port Congestion Setting on Port %u", p);
4495 proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Valid, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4496 proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Control_Type, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4497 proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4498 proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Threshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4499 local_offset += 1;
4500 proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Packet_Size, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4501 local_offset += 1;
4502 proto_tree_add_item(SwitchPortCongestionSetting_Port_tree, hf_opa_SwitchPortCongestionSetting_Marking_Rate, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4503 local_offset += 2;
4506 return local_offset;
4509 /* Parse HFICongestionLog Attribute */
4510 static int parse_HFICongestionLog(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4512 int local_offset = *offset;
4513 proto_item *HFICongestionLog_header_item;
4514 proto_tree *HFICongestionLog_header_tree;
4515 proto_tree *HFICongestionLog_Entry_tree;
4516 unsigned i;
4518 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4519 return *offset;
4521 HFICongestionLog_header_item = proto_tree_add_item(parentTree, hf_opa_HFICongestionLog, tvb, local_offset, 12 + (96 * 16), ENC_NA);
4522 HFICongestionLog_header_tree = proto_item_add_subtree(HFICongestionLog_header_item, ett_hficongestionlog);
4524 proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_LogType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4525 local_offset += 1;
4526 proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_CongestionFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4527 local_offset += 1;
4528 proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_ThresholdEventCounter, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4529 local_offset += 2;
4530 proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_CurrentTimeStamp, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4531 local_offset += 4;
4532 proto_tree_add_item(HFICongestionLog_header_tree, hf_opa_HFICongestionLog_ThresholdCongestionEventMap, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4533 local_offset += 4;
4535 for (i = 0; i < 96; i++) {
4536 HFICongestionLog_Entry_tree = proto_tree_add_subtree_format(HFICongestionLog_header_tree, tvb, local_offset, 16,
4537 ett_hficongestionlog_entry, NULL, "HFI Congestion Log Entry %u", i);
4539 proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Local_QP_CN_Entry, tvb, local_offset, 3, ENC_BIG_ENDIAN);
4540 local_offset += 3;
4541 proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Remote_QP_Number_CN_Entry, tvb, local_offset, 3, ENC_BIG_ENDIAN);
4542 local_offset += 3;
4543 proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_SL_CN_Entry, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4544 proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Service_Type_CN_Entry, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4545 local_offset += 1;
4546 proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4547 local_offset += 1;
4549 proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_Remote_LID_CN_Entry, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4550 local_offset += 4;
4552 proto_tree_add_item(HFICongestionLog_Entry_tree, hf_opa_HFICongestionLog_TimeStamp_CN_Entry, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4553 local_offset += 4;
4555 return local_offset;
4558 /* Parse HFICongestionSetting Attribute*/
4559 static int parse_HFICongestionSetting(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4561 int i;
4562 int local_offset = *offset;
4563 proto_item *HFICongestionSetting_header_item;
4564 proto_tree *HFICongestionSetting_header_tree;
4565 proto_item *tempItem;
4567 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4568 return *offset;
4570 HFICongestionSetting_header_item = proto_tree_add_item(parentTree, hf_opa_HFICongestionSetting, tvb, local_offset, 6 + 32 * 6, ENC_NA);
4571 HFICongestionSetting_header_tree = proto_item_add_subtree(HFICongestionSetting_header_item, ett_hficongestionsetting);
4573 proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_Control_Map, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4574 local_offset += 4;
4575 proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_Port_Control, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4576 local_offset += 2;
4578 for (i = 0; i < 32; i++) {
4579 tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_CCTI_Increase, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4580 proto_item_prepend_text(tempItem, "%3u: ", i);
4581 local_offset += 1;
4583 tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4584 proto_item_prepend_text(tempItem, " ");
4585 local_offset += 1;
4587 tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_CCTI_Timer, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4588 proto_item_prepend_text(tempItem, " ");
4589 local_offset += 2;
4591 tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_TriggerThreshold, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4592 proto_item_prepend_text(tempItem, " ");
4593 local_offset += 1;
4595 tempItem = proto_tree_add_item(HFICongestionSetting_header_tree, hf_opa_HFICongestionSetting_CCTI_Min, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4596 proto_item_prepend_text(tempItem, " ");
4597 local_offset += 1;
4600 return local_offset;
4603 /* Parse HFICongestionControlTable Attribute*/
4604 static int parse_HFICongestionControlTable(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4606 int local_offset = *offset;
4607 proto_item *HFICongestionControlTable_header_item;
4608 proto_tree *HFICongestionControlTable_header_tree;
4609 proto_item *tempItem;
4610 proto_tree *tempBlock_tree;
4611 unsigned b, i, Num_blocks, Block_Num;
4613 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
4614 return *offset;
4616 if (MAD->MgmtClass == SUBNADMN) {
4617 Num_blocks = 1;
4618 Block_Num = tvb_get_ntohs(tvb, local_offset - 4);
4619 } else { /* SM LID and SM DR */
4620 Num_blocks = (MAD->AttributeModifier & 0xFF000000) >> 24;
4621 Block_Num = (MAD->AttributeModifier & 0x000000FF);
4624 HFICongestionControlTable_header_item = proto_tree_add_item(parentTree, hf_opa_HFICongestionControlTable, tvb, local_offset, 2 + ((64 * 2) * Num_blocks), ENC_NA);
4625 HFICongestionControlTable_header_tree = proto_item_add_subtree(HFICongestionControlTable_header_item, ett_hficongestioncontroltable);
4627 proto_tree_add_item(HFICongestionControlTable_header_tree, hf_opa_HFICongestionControlTable_CCTI_Limit, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4628 local_offset += 2;
4629 for (b = Block_Num; b < Block_Num + Num_blocks; b++) {
4630 tempBlock_tree = proto_tree_add_subtree_format(HFICongestionControlTable_header_tree, tvb, local_offset, 128,
4631 ett_hficongestioncontroltable_block, NULL, "HFI Congestion Control Table Block %u", b);
4633 for (i = 0; i < 64; i++) {
4634 tempItem = proto_tree_add_item(tempBlock_tree, hf_opa_HFICongestionControlTable_CCT_Shift, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4635 proto_item_prepend_text(tempItem, "%3u: ", i);
4636 tempItem = proto_tree_add_item(tempBlock_tree, hf_opa_HFICongestionControlTable_CCT_Multiplier, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4637 local_offset += 2;
4638 proto_item_prepend_text(tempItem, " ");
4642 return local_offset;
4644 /* Call appropriate parsing function */
4645 static bool call_SUBM_Parser(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, uint16_t AttributeID)
4647 proto_tree *SUBM_Attribute_header_tree = parentTree;
4648 int local_offset = *offset;
4650 if (!tvb_bytes_exist(tvb, local_offset, 8))
4651 return true;
4653 switch (AttributeID) {
4654 case SM_ATTR_ID_CLASS_PORT_INFO:
4655 local_offset = parse_ClassPortInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4656 break;
4657 case SM_ATTR_ID_NOTICE:
4658 local_offset = parse_NoticesAndTraps(SUBM_Attribute_header_tree, tvb, offset);
4659 break;
4660 case SM_ATTR_ID_NODE_DESCRIPTION:
4661 local_offset = parse_NodeDescription(SUBM_Attribute_header_tree, tvb, offset, MAD);
4662 break;
4663 case SM_ATTR_ID_NODE_INFO:
4664 local_offset = parse_NodeInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4665 break;
4666 case SM_ATTR_ID_SWITCH_INFO:
4667 local_offset = parse_SwitchInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4668 break;
4669 case SM_ATTR_ID_PORT_INFO:
4670 local_offset = parse_PortInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4671 break;
4672 case SM_ATTR_ID_PART_TABLE:
4673 local_offset = parse_P_KeyTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4674 break;
4675 case SM_ATTR_ID_SL_SC_MAPPING_TABLE:
4676 local_offset = parse_SLtoSCMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4677 break;
4678 case SM_ATTR_ID_VL_ARBITRATION:
4679 local_offset = parse_VLArbitrationTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4680 break;
4681 case SM_ATTR_ID_LINEAR_FWD_TABLE:
4682 local_offset = parse_LinearForwardingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4683 break;
4684 case SM_ATTR_ID_MCAST_FWD_TABLE:
4685 local_offset = parse_MulticastForwardingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4686 break;
4687 case SM_ATTR_ID_SM_INFO:
4688 local_offset = parse_SMInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4689 break;
4690 case SM_ATTR_ID_LED_INFO:
4691 local_offset = parse_LedInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4692 break;
4693 case SM_ATTR_ID_CABLE_INFO:
4694 local_offset = parse_CableInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4695 break;
4696 case SM_ATTR_ID_SC_SC_MAPPING_TABLE:
4697 local_offset = parse_SCtoSCMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4698 break;
4699 case SM_ATTR_ID_SC_SL_MAPPING_TABLE:
4700 local_offset = parse_SCtoSLMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4701 break;
4702 case SM_ATTR_ID_SC_VLR_MAPPING_TABLE:
4703 case SM_ATTR_ID_SC_VLT_MAPPING_TABLE:
4704 case SM_ATTR_ID_SC_VLNT_MAPPING_TABLE:
4705 local_offset = parse_SCtoVLxMappingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4706 break;
4707 case SM_ATTR_ID_PORT_STATE_INFO:
4708 local_offset = parse_PortStateInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4709 break;
4710 case SM_ATTR_ID_PORT_GROUP_FWD_TABLE:
4711 local_offset = parse_PortGroupForwardingTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4712 break;
4713 case SM_ATTR_ID_PORT_GROUP_TABLE:
4714 local_offset = parse_PortGroupTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4715 break;
4716 case SM_ATTR_ID_BUFFER_CONTROL_TABLE:
4717 local_offset = parse_BufferControlTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4718 break;
4719 case SM_ATTR_ID_CONGESTION_INFO:
4720 local_offset = parse_CongestionInfo(SUBM_Attribute_header_tree, tvb, offset, MAD);
4721 break;
4722 case SM_ATTR_ID_SWITCH_CONGESTION_LOG:
4723 local_offset = parse_SwitchCongestionLog(SUBM_Attribute_header_tree, tvb, offset, MAD);
4724 break;
4725 case SM_ATTR_ID_SWITCH_CONGESTION_SETTING:
4726 local_offset = parse_SwitchCongestionSetting(SUBM_Attribute_header_tree, tvb, offset, MAD);
4727 break;
4728 case SM_ATTR_ID_SWITCH_PORT_CONGESTION_SETTING:
4729 local_offset = parse_SwitchPortCongestionSetting(SUBM_Attribute_header_tree, tvb, offset, MAD);
4730 break;
4731 case SM_ATTR_ID_HFI_CONGESTION_LOG:
4732 local_offset = parse_HFICongestionLog(SUBM_Attribute_header_tree, tvb, offset, MAD);
4733 break;
4734 case SM_ATTR_ID_HFI_CONGESTION_SETTING:
4735 local_offset = parse_HFICongestionSetting(SUBM_Attribute_header_tree, tvb, offset, MAD);
4736 break;
4737 case SM_ATTR_ID_HFI_CONGESTION_CONTROL_TABLE:
4738 local_offset = parse_HFICongestionControlTable(SUBM_Attribute_header_tree, tvb, offset, MAD);
4739 break;
4740 default:
4741 return false;
4743 *offset = local_offset;
4744 return true;
4747 /* Parse Aggregate Attribute */
4748 static int parse_Aggregate(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4750 int i;
4751 unsigned requestLength;
4752 int numAttributes;
4753 int local_offset = *offset;
4754 int saved_offset;
4755 uint16_t LocalAttributeID = 0;
4756 bool AggregatError = false;
4757 proto_item *Aggregate_header_item;
4758 proto_item *Aggregate_Length_item;
4759 proto_item *Aggregate_Error_item;
4760 proto_tree *Aggregate_header_tree;
4762 if (!parentTree)
4763 return *offset;
4765 numAttributes = MAD->AttributeModifier & 0x000000FF;
4767 for (i = 0; i < numAttributes; i++) {
4768 requestLength = (tvb_get_uint8(tvb, local_offset + 3) & 0x7F) * 8;
4769 if (i == numAttributes - 1 && MAD->Method == METHOD_GET) {
4770 Aggregate_header_item = proto_tree_add_item(parentTree, hf_opa_Aggregate, tvb, local_offset, 8, ENC_NA);
4771 } else {
4772 Aggregate_header_item = proto_tree_add_item(parentTree, hf_opa_Aggregate, tvb, local_offset, requestLength + 8, ENC_NA);
4774 Aggregate_header_tree = proto_item_add_subtree(Aggregate_header_item, ett_aggregate);
4776 proto_tree_add_item(Aggregate_header_tree, hf_opa_Aggregate_AttributeID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4777 LocalAttributeID = tvb_get_ntohs(tvb, local_offset);
4778 local_offset += 2;
4779 proto_item_set_text(Aggregate_header_item, "Aggregate %u: %s", i + 1, val_to_str(LocalAttributeID, SUBM_Attributes, "Unknown Attribute Type! (0x%02x)"));
4781 AggregatError = (bool)tvb_get_bits(tvb, local_offset * 8, 1, ENC_BIG_ENDIAN);
4782 Aggregate_Error_item = proto_tree_add_item(Aggregate_header_tree, hf_opa_Aggregate_Error, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4783 if (AggregatError)
4784 expert_add_info(NULL, Aggregate_Error_item, &ei_opa_aggregate_error);
4786 Aggregate_Length_item = proto_tree_add_item(Aggregate_header_tree, hf_opa_Aggregate_RequestLength, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4787 proto_item_append_text(Aggregate_Length_item, " (%u Bytes)", requestLength);
4788 local_offset += 2;
4790 MAD->AttributeModifier = tvb_get_ntohl(tvb, local_offset);
4791 MAD->AttributeID = LocalAttributeID;
4792 local_offset = parse_MAD_AttributeModifier(Aggregate_header_tree, tvb, &local_offset, MAD);
4793 if (i == numAttributes - 1 && MAD->Method == METHOD_GET) {
4794 /* Do Nothing */
4795 } else {
4796 saved_offset = local_offset;
4797 call_SUBM_Parser(Aggregate_header_tree, tvb, &local_offset, MAD, LocalAttributeID);
4798 if (local_offset != (saved_offset + (int)requestLength)) {
4799 local_offset = saved_offset + (int)requestLength;
4803 return local_offset;
4805 /* Parse the attribute from a Subnet Management Packet. */
4806 static bool parse_SUBM_Attribute(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4808 int local_offset = *offset;
4809 if (MAD->AttributeID == SM_ATTR_ID_AGGREGATE) {
4810 *offset = parse_Aggregate(parentTree, tvb, &local_offset, MAD);
4811 return true;
4812 } else
4813 return call_SUBM_Parser(parentTree, tvb, offset, MAD, MAD->AttributeID);
4815 /* Parse the Method from the MAD Common Header. */
4816 static void label_SUBM_Method(proto_item *SubMItem, MAD_t *MAD, packet_info *pinfo)
4818 const char *label = val_to_str_const(MAD->Method, SUBM_Methods, "(Unknown SM Method!)");
4819 proto_item_append_text(SubMItem, " %s", label);
4820 col_append_str(pinfo->cinfo, COL_INFO, label);
4822 /* Parse the Attribute from the MAD Common Header */
4823 static void label_SUBM_Attribute(proto_item *SubMItem, MAD_t *MAD, packet_info *pinfo)
4825 const char *label = val_to_str_const(MAD->AttributeID, SUBM_Attributes, "Attribute (Unknown SM Attribute!)");
4826 proto_item_append_text(SubMItem, "%s", &label[11]);
4827 col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
4829 /* Parse Subnet Management (LID Routed) */
4830 static void parse_SUBN_LID_ROUTED(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
4832 MAD_t MAD;
4833 int local_offset;
4834 proto_item *SM_LID_header_item;
4835 proto_tree *SM_LID_header_tree;
4837 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
4838 return;
4840 local_offset = *offset;
4842 SM_LID_header_item = proto_tree_add_item(parentTree, hf_opa_sm_lid, tvb, local_offset, -1, ENC_NA);
4843 SM_LID_header_tree = proto_item_add_subtree(SM_LID_header_item, ett_sm_lid);
4845 proto_tree_add_item(SM_LID_header_tree, hf_opa_sm_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
4846 local_offset += 8;
4848 label_SUBM_Method(SM_LID_header_item, &MAD, pinfo);
4849 label_SUBM_Attribute(SM_LID_header_item, &MAD, pinfo);
4851 *offset = local_offset;
4852 if (!pref_parse_on_mad_status_error && MAD.Status) {
4853 local_offset += tvb_captured_length_remaining(tvb, *offset);
4854 } else if (!parse_SUBM_Attribute(SM_LID_header_tree, tvb, &local_offset, &MAD)) {
4855 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
4856 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
4857 local_offset += tvb_captured_length_remaining(tvb, *offset);
4859 *offset = local_offset;
4862 /* Parse Subnet Management (Directed Route) */
4863 static void parse_SUBN_DIRECTED_ROUTE(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
4865 MAD_t MAD;
4866 int local_offset;
4867 proto_item *SM_DR_header_item;
4868 proto_tree *SM_DR_header_tree;
4870 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
4871 return;
4873 local_offset = *offset;
4875 SM_DR_header_item = proto_tree_add_item(parentTree, hf_opa_sm_dr, tvb, local_offset, -1, ENC_NA);
4876 SM_DR_header_tree = proto_item_add_subtree(SM_DR_header_item, ett_sm_dr);
4878 proto_tree_add_item(SM_DR_header_item, hf_opa_sm_m_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
4879 local_offset += 8;
4881 label_SUBM_Method(SM_DR_header_item, &MAD, pinfo);
4882 label_SUBM_Attribute(SM_DR_header_item, &MAD, pinfo);
4884 proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_slid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4885 local_offset += 4;
4886 proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_dlid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4887 local_offset += 4;
4888 proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_initial_path, tvb, local_offset, 64, ENC_NA);
4889 local_offset += 64;
4890 proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_return_path, tvb, local_offset, 64, ENC_NA);
4891 local_offset += 64;
4892 proto_tree_add_item(SM_DR_header_tree, hf_opa_sm_dr_reserved64, tvb, local_offset, 8, ENC_NA);
4893 local_offset += 8;
4894 *offset = local_offset;
4895 if (!pref_parse_on_mad_status_error && (MAD.Status & 0x7FFF)) {
4896 local_offset += tvb_captured_length_remaining(tvb, *offset);
4897 } else if (!parse_SUBM_Attribute(SM_DR_header_tree, tvb, &local_offset, &MAD)) {
4898 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
4899 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
4900 local_offset += tvb_captured_length_remaining(tvb, *offset);
4901 return;
4903 *offset = local_offset;
4906 static int parse_PortInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
4908 int local_offset = *offset;
4909 proto_tree * PortInfoRecord_LinkDownReason_tree,
4910 *PortInfoRecord_LinkDownReason_Entry_tree;
4911 int i;
4912 local_offset = parse_PortInfo(parentTree, tvb, &local_offset, MAD);
4914 PortInfoRecord_LinkDownReason_tree = proto_tree_add_subtree(parentTree, tvb, local_offset, 8 * 16,
4915 ett_portinforecord_linkdownreason, NULL, "Port Info Record LinkDown Reason");
4916 for (i = 0; i < 8; i++) {
4917 PortInfoRecord_LinkDownReason_Entry_tree = proto_tree_add_subtree_format(PortInfoRecord_LinkDownReason_tree, tvb, local_offset, 16,
4918 ett_portinforecord_linkdownreason_entry, NULL, "Link Down Reason Entry %u", i);
4920 proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_NA);
4921 local_offset += 4;
4922 proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_NA);
4923 local_offset += 2;
4924 proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_PortInfoRecord_LinkDownReason_NeighborLinkDownReason, tvb, local_offset, 1, ENC_NA);
4925 local_offset += 1;
4926 proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_PortInfoRecord_LinkDownReason_LinkDownReason, tvb, local_offset, 1, ENC_NA);
4927 local_offset += 1;
4928 proto_tree_add_item(PortInfoRecord_LinkDownReason_Entry_tree, hf_opa_PortInfoRecord_LinkDownReason_Timestamp, tvb, local_offset, 8, ENC_NA);
4929 local_offset += 8;
4932 return local_offset;
4935 /* Parse LinkRecord Attribute*/
4936 static int parse_LinkRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
4938 int local_offset = *offset;
4939 proto_item *LinkRecord_header_item;
4940 proto_tree *LinkRecord_header_tree;
4942 if (!parentTree) {
4943 return *offset;
4946 LinkRecord_header_item = proto_tree_add_item(parentTree, hf_opa_LinkRecord, tvb, local_offset, 7, ENC_NA);
4947 LinkRecord_header_tree = proto_item_add_subtree(LinkRecord_header_item, ett_linkrecord);
4949 proto_tree_add_item(LinkRecord_header_tree, hf_opa_LinkRecord_ToPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
4950 local_offset += 1;
4951 proto_tree_add_item(LinkRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
4952 local_offset += 2;
4953 proto_tree_add_item(LinkRecord_header_tree, hf_opa_LinkRecord_ToLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4954 local_offset += 4;
4956 return local_offset;
4960 /* Parse ServiceRecord Attribute*/
4961 static int parse_ServiceRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
4963 int local_offset = *offset;
4964 proto_item *ServiceRecord_header_item;
4965 proto_tree *ServiceRecord_header_tree;
4966 proto_item *tempData;
4968 if (!parentTree) {
4969 return *offset;
4972 ServiceRecord_header_item = proto_tree_add_item(parentTree, hf_opa_ServiceRecord, tvb, local_offset, 152, ENC_NA);
4973 ServiceRecord_header_tree = proto_item_add_subtree(ServiceRecord_header_item, ett_servicerecord);
4975 proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceLease, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4976 local_offset += 4;
4977 proto_tree_add_item(ServiceRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
4978 local_offset += 4;
4979 proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceKey, tvb, local_offset, 16, ENC_NA);
4980 local_offset += 16;
4981 proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
4982 local_offset += 64;
4984 tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
4985 local_offset += 16;
4986 proto_item_append_text(tempData, "(ServiceData 8.1, 8.16)");
4987 tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
4988 local_offset += 16;
4989 proto_item_append_text(tempData, "(ServiceData 16.1, 16.8)");
4990 tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
4991 local_offset += 16;
4992 proto_item_append_text(tempData, "(ServiceData 32.1, 32.4)");
4993 tempData = proto_tree_add_item(ServiceRecord_header_tree, hf_opa_ServiceRecord_ServiceData, tvb, local_offset, 16, ENC_NA);
4994 local_offset += 16;
4995 proto_item_append_text(tempData, "(ServiceData 64.1, 64.2)");
4997 return local_offset;
5001 /* Parse PathRecord Attribute*/
5002 static int parse_PathRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5004 int local_offset = *offset;
5005 proto_item * PathRecord_header_item;
5006 proto_tree * PathRecord_header_tree;
5008 if (!parentTree) {
5009 return *offset;
5012 PathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_PathRecord, tvb, local_offset, 64, ENC_NA);
5013 PathRecord_header_tree = proto_item_add_subtree(PathRecord_header_item, ett_pathrecord);
5015 proto_tree_add_item(PathRecord_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_NA);
5016 local_offset += 8;
5017 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_DGID, tvb, local_offset, 16, ENC_NA);
5018 local_offset += 16;
5019 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_SGID, tvb, local_offset, 16, ENC_NA);
5020 local_offset += 16;
5021 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_DLID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5022 local_offset += 2;
5023 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_SLID, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5024 local_offset += 2;
5025 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_RawTraffic, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5026 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5027 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5028 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5029 local_offset += 4;
5031 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5032 local_offset += 1;
5034 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5035 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5036 local_offset += 1;
5038 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5039 local_offset += 2;
5041 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_QosType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5042 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5043 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_QosPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5044 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5045 local_offset += 2;
5046 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5047 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5048 local_offset += 1;
5049 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5050 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5051 local_offset += 1;
5052 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5053 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5054 local_offset += 1;
5055 proto_tree_add_item(PathRecord_header_tree, hf_opa_PathRecord_Preference, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5056 local_offset += 1;
5057 proto_tree_add_item(PathRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5058 local_offset += 2;
5059 proto_tree_add_item(PathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5060 local_offset += 4;
5062 return local_offset;
5065 /* Parse MCMemberRecord Attribute*/
5066 static int parse_MCMemberRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5068 int local_offset = *offset;
5069 proto_item *MCMemberRecord_header_item;
5070 proto_tree *MCMemberRecord_header_tree;
5072 if (!parentTree) {
5073 return *offset;
5076 MCMemberRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MCMemberRecord, tvb, local_offset, 24, ENC_NA);
5077 MCMemberRecord_header_tree = proto_item_add_subtree(MCMemberRecord_header_item, ett_mcmemberrecord);
5079 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_Q_Key, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5080 local_offset += 4;
5081 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5082 local_offset += 2;
5083 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5084 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5085 local_offset += 1;
5086 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5087 local_offset += 1;
5088 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5089 local_offset += 2;
5090 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5091 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5092 local_offset += 1;
5093 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5094 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5095 local_offset += 1;
5096 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_SL, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5097 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5098 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5099 local_offset += 4;
5101 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_Scope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5102 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5103 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_JoinSendOnlyMember, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5104 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_JoinNonMember, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5105 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_JoinFullMember, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5106 local_offset += 1;
5108 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_ProxyJoin, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5109 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5110 local_offset += 1;
5112 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5113 local_offset += 2;
5115 proto_tree_add_item(MCMemberRecord_header_tree, hf_opa_MCMemberRecord_MLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5116 local_offset += 4;
5118 return local_offset;
5122 /* Parse TraceRecord Attribute*/
5123 static int parse_TraceRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5125 int local_offset = *offset;
5126 proto_item *TraceRecord_header_item;
5127 proto_tree *TraceRecord_header_tree;
5129 if (!parentTree) {
5130 return *offset;
5133 TraceRecord_header_item = proto_tree_add_item(parentTree, hf_opa_TraceRecord, tvb, local_offset, 40, ENC_NA);
5134 TraceRecord_header_tree = proto_item_add_subtree(TraceRecord_header_item, ett_tracerecord);
5136 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_IDGeneration, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5137 local_offset += 2;
5138 proto_tree_add_item(TraceRecord_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5139 local_offset += 1;
5140 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_NodeType, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5141 local_offset += 1;
5142 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_EntryPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5143 local_offset += 1;
5144 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_ExitPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5145 local_offset += 1;
5146 proto_tree_add_item(TraceRecord_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5147 local_offset += 2;
5148 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_NodeID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5149 local_offset += 8;
5150 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_ChassisID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5151 local_offset += 8;
5152 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_EntryPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5153 local_offset += 8;
5154 proto_tree_add_item(TraceRecord_header_tree, hf_opa_TraceRecord_ExitPortID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5155 local_offset += 8;
5157 return local_offset;
5160 /* Parse MultiPathRecord Attribute*/
5161 static int parse_MultiPathRecord_GID(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5163 int local_offset = *offset;
5164 proto_item *MultiPathRecord_header_item;
5165 proto_tree *MultiPathRecord_header_tree;
5166 proto_item *SDGID;
5167 uint8_t SGIDCount;
5168 uint8_t DGIDCount;
5169 uint32_t i;
5171 if (!parentTree)
5172 return *offset;
5174 SGIDCount = tvb_get_uint8(tvb, local_offset + 14);
5175 DGIDCount = tvb_get_uint8(tvb, local_offset + 15);
5176 MultiPathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MultiPathRecord, tvb, local_offset, 32 + (SGIDCount + DGIDCount) * 16, ENC_NA);
5177 proto_item_append_text(MultiPathRecord_header_item, " (GID)");
5178 MultiPathRecord_header_tree = proto_item_add_subtree(MultiPathRecord_header_item, ett_multipathrecord_gid);
5179 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5180 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5181 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5182 local_offset += 4;
5184 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5185 local_offset += 1;
5187 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5188 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5189 local_offset += 1;
5191 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5192 local_offset += 2;
5194 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5195 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5196 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5197 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5198 local_offset += 2;
5200 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5201 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5202 local_offset += 1;
5203 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5204 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5205 local_offset += 1;
5206 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5207 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5208 local_offset += 1;
5210 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_IndependenceSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5211 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5212 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5213 local_offset += 1;
5215 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5216 local_offset += 1;
5217 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5218 local_offset += 1;
5220 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_sa_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5221 local_offset += 8;
5223 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_8B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5224 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_10B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5225 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_9B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5226 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_16B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5227 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5228 local_offset += 1;
5230 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
5231 local_offset += 3;
5232 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5233 local_offset += 4;
5235 for (i = 0; i < SGIDCount; i++) {
5236 SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGID, tvb, local_offset, 16, ENC_NA);
5237 local_offset += 16;
5238 proto_item_prepend_text(SDGID, "%u: ", i);
5240 for (i = 0; i < DGIDCount; i++) {
5241 SDGID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGID, tvb, local_offset, 16, ENC_NA);
5242 local_offset += 16;
5243 proto_item_prepend_text(SDGID, "%u: ", i);
5246 return local_offset;
5249 /* Parse MultiPathRecord Attribute*/
5250 static int parse_MultiPathRecord_GUID(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5252 int local_offset = *offset;
5253 proto_item *MultiPathRecord_header_item;
5254 proto_tree *MultiPathRecord_header_tree;
5255 proto_item *SDGUID;
5256 uint16_t SGUIDCount;
5257 uint16_t DGUIDCount;
5258 uint32_t i;
5260 if (!parentTree)
5261 return *offset;
5263 SGUIDCount = tvb_get_ntohs(tvb, local_offset + 14);
5264 DGUIDCount = tvb_get_ntohs(tvb, local_offset + 16);
5265 MultiPathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MultiPathRecord, tvb, local_offset, 40 + (SGUIDCount + DGUIDCount) * 8, ENC_NA);
5266 proto_item_append_text(MultiPathRecord_header_item, " (GUID)");
5267 MultiPathRecord_header_tree = proto_item_add_subtree(MultiPathRecord_header_item, ett_multipathrecord_guid);
5268 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5269 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5270 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5271 local_offset += 4;
5273 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5274 local_offset += 1;
5276 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5277 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5278 local_offset += 1;
5280 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5281 local_offset += 2;
5283 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5284 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5285 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5286 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5287 local_offset += 2;
5289 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5290 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5291 local_offset += 1;
5292 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5293 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5294 local_offset += 1;
5295 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5296 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5297 local_offset += 1;
5299 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_IndependenceSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5300 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5301 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5302 local_offset += 1;
5304 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5305 local_offset += 1;
5307 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5308 local_offset += 1;
5310 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_8B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5311 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_10B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5312 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_9B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5313 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_16B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5314 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5315 local_offset += 1;
5317 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5318 local_offset += 1;
5319 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5320 local_offset += 2;
5322 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5323 local_offset += 8;
5324 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SubnetPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5325 local_offset += 8;
5327 for (i = 0; i < SGUIDCount; i++) {
5328 SDGUID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUID, tvb, local_offset, 8, ENC_NA);
5329 local_offset += 8;
5330 proto_item_prepend_text(SDGUID, "%u: ", i);
5332 for (i = 0; i < DGUIDCount; i++) {
5333 SDGUID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUID, tvb, local_offset, 8, ENC_NA);
5334 local_offset += 8;
5335 proto_item_prepend_text(SDGUID, "%u: ", i);
5337 return local_offset;
5340 /* Parse MultiPathRecord Attribute*/
5341 static int parse_MultiPathRecord_lid(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5343 int local_offset = *offset;
5344 proto_item *MultiPathRecord_header_item;
5345 proto_tree *MultiPathRecord_header_tree;
5346 proto_item *SDLID;
5347 uint16_t SLIDCount;
5348 uint16_t DLIDCount;
5349 uint32_t i;
5351 if (!parentTree)
5352 return *offset;
5354 SLIDCount = tvb_get_ntohs(tvb, local_offset + 14);
5355 DLIDCount = tvb_get_ntohs(tvb, local_offset + 16);
5356 MultiPathRecord_header_item = proto_tree_add_item(parentTree, hf_opa_MultiPathRecord, tvb, local_offset, 40 + (SLIDCount + DLIDCount) * 4, ENC_NA);
5357 MultiPathRecord_header_tree = proto_item_add_subtree(MultiPathRecord_header_item, ett_multipathrecord_lid);
5358 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5359 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_FlowLabel, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5360 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_HopLimit, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5361 local_offset += 4;
5363 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_TClass, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5364 local_offset += 1;
5366 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Reversible, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5367 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_NumbPath, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5368 local_offset += 1;
5370 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5371 local_offset += 2;
5373 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSType, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5374 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_QoSPriority, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5375 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved2, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5376 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SL, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5377 local_offset += 2;
5379 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTUSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5380 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5381 local_offset += 1;
5382 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_RateSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5383 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5384 local_offset += 1;
5385 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTimeSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5386 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_PacketLifeTime, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5387 local_offset += 1;
5389 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_IndependenceSelector, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5390 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5391 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DGUIDScope, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5392 local_offset += 1;
5394 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SLIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5395 local_offset += 1;
5396 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DLIDCount, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5397 local_offset += 1;
5399 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_8B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5400 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_10B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5401 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_9B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5402 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_L2_16B, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5403 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5404 local_offset += 1;
5406 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5407 local_offset += 1;
5408 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5409 local_offset += 2;
5411 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5412 local_offset += 8;
5413 proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SubnetPrefix, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5414 local_offset += 8;
5416 for (i = 0; i < SLIDCount; i++) {
5417 SDLID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_SLID, tvb, local_offset, 4, ENC_NA);
5418 local_offset += 4;
5419 proto_item_prepend_text(SDLID, "%u: ", i);
5421 for (i = 0; i < DLIDCount; i++) {
5422 SDLID = proto_tree_add_item(MultiPathRecord_header_tree, hf_opa_MultiPathRecord_DLID, tvb, local_offset, 4, ENC_NA);
5423 local_offset += 4;
5424 proto_item_prepend_text(SDLID, "%u: ", i);
5426 return local_offset;
5429 /* Parse CableInfoRecord Attribute*/
5430 static int parse_CableInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5432 int local_offset = *offset;
5433 proto_item *CableInfoRecord_header_item;
5434 proto_tree *CableInfoRecord_header_tree;
5436 if (!parentTree)
5437 return *offset;
5439 CableInfoRecord_header_item = proto_tree_add_item(parentTree, hf_opa_CableInfoRecord, tvb, local_offset, 72, ENC_NA);
5440 CableInfoRecord_header_tree = proto_item_add_subtree(CableInfoRecord_header_item, ett_cableinforecord);
5442 proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Lid, tvb, local_offset, 4, ENC_NA);
5443 local_offset += 4;
5444 proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Port, tvb, local_offset, 1, ENC_NA);
5445 local_offset += 1;
5446 proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Length, tvb, local_offset, 1, ENC_NA);
5447 proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_reserved, tvb, local_offset, 1, ENC_NA);
5448 local_offset += 1;
5449 proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Address, tvb, local_offset, 2, ENC_NA);
5450 proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_PortType, tvb, local_offset, 2, ENC_NA);
5451 local_offset += 2;
5452 proto_tree_add_item(CableInfoRecord_header_tree, hf_opa_CableInfoRecord_Data, tvb, local_offset, 64, ENC_NA);
5453 local_offset += 64;
5455 return local_offset;
5458 /* Parse ServiceAssociationRecord Attribute*/
5459 static int parse_ServiceAssociationRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5461 int local_offset = *offset;
5462 /* proto_item *ServiceAssociationRecord_header_item; */
5463 proto_tree *ServiceAssociationRecord_header_tree;
5465 if (!parentTree) {
5466 return *offset;
5469 /* ServiceAssociationRecord_header_item = proto_tree_add_item(parentTree, hf_opa_sapa, tvb, local_offset, 80, ENC_NA); */
5470 /* proto_item_set_text(ServiceAssociationRecord_header_item, "%s", "ServiceAssociationRecord"); */
5471 ServiceAssociationRecord_header_tree = parentTree; /* proto_item_add_subtree(ServiceAssociationRecord_header_item, ett_serviceassocrecord); */
5473 proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_opa_ServiceAssociationRecord_ServiceKey, tvb, local_offset, 16, ENC_NA);
5474 local_offset += 16;
5475 proto_tree_add_item(ServiceAssociationRecord_header_tree, hf_opa_ServiceAssociationRecord_ServiceName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
5476 local_offset += 64;
5478 return local_offset;
5481 static int parse_VFInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
5483 int local_offset = *offset;
5484 proto_item *VFInfoRecord_header_item;
5485 proto_tree *VFInfoRecord_header_tree;
5487 if (!parentTree)
5488 return *offset;
5490 VFInfoRecord_header_item = proto_tree_add_item(parentTree, hf_opa_VFInfoRecord, tvb, local_offset, 128, ENC_NA);
5491 VFInfoRecord_header_tree = proto_item_add_subtree(VFInfoRecord_header_item, ett_vfinforecord);
5493 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_vfIndex, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5494 local_offset += 2;
5495 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_pKey, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5496 local_offset += 2;
5497 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5498 local_offset += 4;
5499 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
5500 local_offset += 64;
5501 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_sa_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5502 local_offset += 8;
5503 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_MGID, tvb, local_offset, 16, ENC_NA);
5504 local_offset += 16;
5506 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_SelectFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5507 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5508 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_SL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5509 local_offset += 1;
5511 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_MTUSpecified, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5512 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5513 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_MTU, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5514 local_offset += 1;
5516 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_RateSpecified, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5517 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved4, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5518 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_Rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5519 local_offset += 1;
5521 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_PktLifeSpecified, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5522 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved5, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5523 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_PktLifeTimeInc, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5524 local_offset += 1;
5526 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_OptionFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5527 local_offset += 1;
5529 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_BandwidthPercent, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5530 local_offset += 1;
5532 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved6, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5533 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_Priority, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5534 local_offset += 1;
5536 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_RoutingSLs, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5537 local_offset += 1;
5539 proto_tree_add_item(VFInfoRecord_header_tree, hf_opa_VFInfoRecord_reserved7, tvb, local_offset, 24, ENC_NA);
5540 local_offset += 24;
5542 return local_offset;
5544 static int parse_QuarantinedNodeRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
5546 int local_offset = *offset;
5547 proto_item *QuarantinedNodeRecord_header_item;
5548 proto_tree *QuarantinedNodeRecord_header_tree;
5550 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
5551 return *offset;
5553 QuarantinedNodeRecord_header_item = proto_tree_add_item(parentTree, hf_opa_QuarantinedNodeRecord, tvb, local_offset, 213, ENC_NA);
5554 QuarantinedNodeRecord_header_tree = proto_item_add_subtree(QuarantinedNodeRecord_header_item, ett_quarantinednoderecord);
5556 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedLid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5557 local_offset += 4;
5558 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5559 local_offset += 1;
5560 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
5561 local_offset += 3;
5562 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5563 local_offset += 8;
5564 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_TrustedNeighborNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5565 local_offset += 8;
5567 local_offset = parse_NodeDescription(QuarantinedNodeRecord_header_tree, tvb, &local_offset, MAD);
5568 local_offset = parse_NodeInfo(QuarantinedNodeRecord_header_tree, tvb, &local_offset, MAD);
5570 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_QuarantineReasons, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5571 local_offset += 4;
5572 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_ExpectedNodeDesc, tvb, local_offset, 64, ENC_NA);
5573 local_offset += 64;
5574 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_ExpectedNodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5575 local_offset += 8;
5576 proto_tree_add_item(QuarantinedNodeRecord_header_tree, hf_opa_QuarantinedNodeRecord_ExpectedPortGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5577 local_offset += 8;
5579 return local_offset;
5581 static int parse_FabricInfoRecord(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
5583 int local_offset = *offset;
5584 proto_item *FabricInfoRecord_header_item;
5585 proto_tree *FabricInfoRecord_header_tree;
5587 if (!parentTree || MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE)
5588 return *offset;
5590 FabricInfoRecord_header_item = proto_tree_add_item(parentTree, hf_opa_FabricInfoRecord, tvb, local_offset, 132, ENC_NA);
5591 FabricInfoRecord_header_tree = proto_item_add_subtree(FabricInfoRecord_header_item, ett_fabricinforecord);
5593 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumHFIs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5594 local_offset += 4;
5595 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumSwitches, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5596 local_offset += 4;
5597 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumInternalHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5598 local_offset += 4;
5599 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumExternalHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5600 local_offset += 4;
5601 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumInternalISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5602 local_offset += 4;
5603 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumExternalISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5604 local_offset += 4;
5605 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumDegradedHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5606 local_offset += 4;
5607 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumDegradedISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5608 local_offset += 4;
5609 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumOmittedHFILinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5610 local_offset += 4;
5611 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_NumOmittedISLs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5612 local_offset += 4;
5613 proto_tree_add_item(FabricInfoRecord_header_tree, hf_opa_FabricInfoRecord_Reserved, tvb, local_offset, 92, ENC_NA);
5614 local_offset += 92;
5616 return local_offset;
5618 /* Parse RID Field from Subnet Administration Packets. */
5619 static void parse_RID(proto_tree *SA_header_tree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
5621 int local_offset = *offset;
5623 if (!SA_header_tree)
5624 return;
5626 switch (MAD->AttributeID) {
5627 case SA_ATTR_ID_CLASS_PORT_INFO:
5628 break;
5629 case SA_ATTR_ID_NOTICE:
5630 break;
5631 case SA_ATTR_ID_NODE_RECORD: /* NodeRecord */
5632 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5633 local_offset += 4;
5634 break;
5635 case SA_ATTR_ID_PORTINFO_RECORD: /* PortInfoRecord */
5636 proto_tree_add_item(SA_header_tree, hf_opa_sa_EndportLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5637 local_offset += 4;
5638 proto_tree_add_item(SA_header_tree, hf_opa_sa_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5639 local_offset += 1;
5640 proto_tree_add_item(SA_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5641 local_offset += 1;
5642 break;
5643 case SA_ATTR_ID_SC_MAPTBL_RECORD: /* SCMappingTableRecord */
5644 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5645 local_offset += 4;
5646 proto_tree_add_item(SA_header_tree, hf_opa_sa_InputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5647 local_offset += 1;
5648 proto_tree_add_item(SA_header_tree, hf_opa_sa_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5649 local_offset += 1;
5650 break;
5651 case SA_ATTR_ID_SL2SC_MAPTBL_RECORD:
5652 case SA_ATTR_ID_SC2SL_MAPTBL_RECORD:
5653 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5654 local_offset += 4;
5655 proto_tree_add_item(SA_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5656 local_offset += 2;
5657 break;
5658 case SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD:
5659 case SA_ATTR_ID_SC_VLT_MAPTBL_RECORD:
5660 case SA_ATTR_ID_SC_VLR_MAPTBL_RECORD:
5661 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5662 local_offset += 4;
5663 proto_tree_add_item(SA_header_tree, hf_opa_sa_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5664 local_offset += 1;
5665 break;
5666 case SA_ATTR_ID_SWITCHINFO_RECORD: /* SwitchInfoRecord */
5667 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5668 local_offset += 4;
5669 break;
5670 case SA_ATTR_ID_LINEAR_FWDTBL_RECORD: /* LinearForwardingTableRecord */
5671 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5672 local_offset += 4;
5673 proto_tree_add_item(SA_header_tree, hf_opa_sa_reserved14, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5674 proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_18b, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5675 local_offset += 4;
5676 break;
5677 case SA_ATTR_ID_MCAST_FWDTBL_RECORD: /* MulticastForwardingTableRecord */
5678 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5679 local_offset += 4;
5680 proto_tree_add_item(SA_header_tree, hf_opa_sa_Position, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5681 proto_tree_add_item(SA_header_tree, hf_opa_sa_reserved9, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5682 proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_21b, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5683 local_offset += 4;
5684 break;
5685 case SA_ATTR_ID_VLARBTABLE_RECORD: /*VLArbitrationTableRecord */
5686 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5687 local_offset += 4;
5688 proto_tree_add_item(SA_header_tree, hf_opa_sa_OutputPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5689 local_offset += 1;
5690 proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_8b, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5691 local_offset += 1;
5692 break;
5693 case SA_ATTR_ID_SMINFO_RECORD: /* SMInfoRecord */
5694 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5695 local_offset += 4;
5696 break;
5697 case SA_ATTR_ID_P_KEY_TABLE_RECORD: /* P_KeyTableRecord */
5698 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5699 local_offset += 4;
5700 proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5701 local_offset += 2;
5702 proto_tree_add_item(SA_header_tree, hf_opa_sa_PortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5703 local_offset += 1;
5704 break;
5705 case SA_ATTR_ID_INFORM_INFO_RECORD: /* InformInfoRecord */
5706 proto_tree_add_item(SA_header_tree, hf_opa_sa_SubscriberLID, tvb, local_offset, 4, ENC_NA);
5707 local_offset += 4;
5708 proto_tree_add_item(SA_header_tree, hf_opa_sa_Enum, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5709 local_offset += 2;
5710 break;
5711 case SA_ATTR_ID_LINK_RECORD: /* LinkRecord */
5712 proto_tree_add_item(SA_header_tree, hf_opa_sa_FromLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5713 local_offset += 4;
5714 proto_tree_add_item(SA_header_tree, hf_opa_sa_FromPort, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5715 local_offset += 1;
5716 break;
5717 case SA_ATTR_ID_SERVICE_RECORD: /* ServiceRecord */
5718 proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5719 local_offset += 8;
5720 proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceLID, tvb, local_offset, 4, ENC_NA);
5721 local_offset += 4;
5722 proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceP_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5723 local_offset += 2;
5724 proto_tree_add_item(SA_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5725 local_offset += 2;
5726 proto_tree_add_item(SA_header_tree, hf_opa_sa_ServiceGID, tvb, local_offset, 16, ENC_NA);
5727 local_offset += 16;
5728 break;
5729 case SA_ATTR_ID_PATH_RECORD: /* PathRecord */
5730 break;
5731 case SA_ATTR_ID_MCMEMBER_RECORD: /* MCMemberRecord */
5732 proto_tree_add_item(SA_header_tree, hf_opa_sa_MGID, tvb, local_offset, 16, ENC_NA);
5733 local_offset += 16;
5734 proto_tree_add_item(SA_header_tree, hf_opa_sa_PortGID, tvb, local_offset, 16, ENC_NA);
5735 local_offset += 16;
5736 break;
5737 case SA_ATTR_ID_TRACE_RECORD:
5738 break;
5739 case SA_ATTR_ID_MULTIPATH_GID_RECORD:
5740 break;
5741 case SA_ATTR_ID_MULTIPATH_GUID_RECORD:
5742 break;
5743 case SA_ATTR_ID_MULTIPATH_LID_RECORD:
5744 break;
5745 case SA_ATTR_ID_CABLE_INFO_RECORD:
5746 break;
5747 case SA_ATTR_ID_VF_INFO_RECORD:
5748 break;
5749 case SA_ATTR_ID_PORTGROUP_TABLE_RECORD:
5750 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5751 local_offset += 4;
5752 proto_tree_add_item(SA_header_tree, hf_opa_sa_Position_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5753 proto_tree_add_item(SA_header_tree, hf_opa_sa_reserved9_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5754 proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_5b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5755 local_offset += 2;
5756 break;
5757 case SA_ATTR_ID_QUARANTINED_NODE_RECORD:
5758 break;
5759 case SA_ATTR_ID_CONGESTION_INFO_RECORD:
5760 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5761 local_offset += 4;
5762 break;
5763 case SA_ATTR_ID_SWITCH_CONG_RECORD:
5764 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5765 local_offset += 4;
5766 break;
5767 case SA_ATTR_ID_SWITCH_PORT_CONG_RECORD:
5768 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5769 local_offset += 4;
5770 proto_tree_add_item(SA_header_tree, hf_opa_sa_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5771 local_offset += 1;
5772 break;
5773 case SA_ATTR_ID_HFI_CONG_RECORD:
5774 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5775 local_offset += 4;
5776 break;
5777 case SA_ATTR_ID_HFI_CONG_CTRL_RECORD:
5778 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5779 local_offset += 4;
5780 proto_tree_add_item(SA_header_tree, hf_opa_sa_BlockNum_16b, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5781 local_offset += 2;
5782 break;
5783 case SA_ATTR_ID_BUFF_CTRL_TAB_RECORD:
5784 proto_tree_add_item(SA_header_tree, hf_opa_sa_Lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5785 local_offset += 4;
5786 proto_tree_add_item(SA_header_tree, hf_opa_sa_Port, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5787 local_offset += 1;
5788 break;
5789 case SA_ATTR_ID_FABRICINFO_RECORD:
5790 break;
5791 default:
5792 break;
5794 *offset = local_offset;
5796 /* Parse the attribute from a Subnet Administration Packet. */
5797 static bool parse_SUBA_Attribute(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, SA_HEADER_t *SA_HEADER)
5799 proto_tree *SUBA_Attribute_header_tree = parentTree;
5800 int local_offset = *offset;
5802 if (RMPP->Type == RMPP_ACK || SA_HEADER->AttributeOffset == 0 || (RMPP->PayloadLength <= 20 && RMPP->Type == RMPP_DATA) ||
5803 (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
5804 return true;
5806 /* Skim off the RID fields should they be present */
5807 parse_RID(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5809 /* Parse the rest of the attributes */
5810 switch (MAD->AttributeID) {
5811 case SA_ATTR_ID_CLASS_PORT_INFO: /* (ClassPortInfo) */
5812 local_offset = parse_ClassPortInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5813 break;
5814 case SA_ATTR_ID_NOTICE: /* (Notice) */
5815 local_offset = parse_NoticesAndTraps(SUBA_Attribute_header_tree, tvb, &local_offset);
5816 break;
5817 case SA_ATTR_ID_INFORM_INFO: /* (InformInfo) */
5818 local_offset = parse_InformInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5819 break;
5820 case SA_ATTR_ID_NODE_RECORD: /* (NodeRecord) */
5821 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5822 local_offset += 4;
5823 local_offset = parse_NodeInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5824 local_offset = parse_NodeDescription(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5825 break;
5826 case SA_ATTR_ID_PORTINFO_RECORD: /* (PortInfoRecord) */
5827 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5828 local_offset += 2;
5829 local_offset = parse_PortInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5830 break;
5831 case SA_ATTR_ID_SL2SC_MAPTBL_RECORD:
5832 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5833 local_offset += 2;
5834 local_offset = parse_SLtoSCMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5835 break;
5836 case SA_ATTR_ID_SC_MAPTBL_RECORD:
5837 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5838 local_offset += 2;
5839 local_offset = parse_SCtoSCMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5840 break;
5841 case SA_ATTR_ID_SC2SL_MAPTBL_RECORD:
5842 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5843 local_offset += 2;
5844 local_offset = parse_SCtoSLMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5845 break;
5846 case SA_ATTR_ID_SC_VLNT_MAPTBL_RECORD:
5847 case SA_ATTR_ID_SC_VLT_MAPTBL_RECORD:
5848 case SA_ATTR_ID_SC_VLR_MAPTBL_RECORD:
5849 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
5850 local_offset += 3;
5851 local_offset = parse_SCtoVLxMappingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5852 break;
5853 case SA_ATTR_ID_SWITCHINFO_RECORD: /* (SwitchInfoRecord) */
5854 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5855 local_offset += 4;
5856 local_offset = parse_SwitchInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5857 break;
5858 case SA_ATTR_ID_LINEAR_FWDTBL_RECORD: /*(LinearForwardingTableRecord) */
5859 local_offset = parse_LinearForwardingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5860 break;
5861 case SA_ATTR_ID_MCAST_FWDTBL_RECORD: /* (MulticastForwardingTableRecord) */
5862 local_offset = parse_MulticastForwardingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5863 break;
5864 case SA_ATTR_ID_VLARBTABLE_RECORD: /* (VLArbitrationTableRecord) */
5865 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5866 local_offset += 2;
5867 local_offset = parse_VLArbitrationTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5868 break;
5869 case SA_ATTR_ID_SMINFO_RECORD: /* (SMInfoRecord) */
5870 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5871 local_offset += 4;
5872 local_offset = parse_SMInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5873 break;
5874 case SA_ATTR_ID_P_KEY_TABLE_RECORD: /* (P_KeyTableRecord) */
5875 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
5876 local_offset += 1;
5877 local_offset = parse_P_KeyTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5878 break;
5879 case SA_ATTR_ID_INFORM_INFO_RECORD: /*(InformInfoRecord) */
5880 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5881 local_offset += 2;
5882 local_offset = parse_InformInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5883 break;
5884 case SA_ATTR_ID_LINK_RECORD: /* (LinkRecord) */
5885 local_offset = parse_LinkRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5886 break;
5887 case SA_ATTR_ID_SERVICE_RECORD: /*(ServiceRecord) */
5888 local_offset = parse_ServiceRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5889 break;
5890 case SA_ATTR_ID_PATH_RECORD: /* (PathRecord) */
5891 local_offset = parse_PathRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5892 break;
5893 case SA_ATTR_ID_MCMEMBER_RECORD: /* (MCMemberRecord) */
5894 local_offset = parse_MCMemberRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5895 break;
5896 case SA_ATTR_ID_TRACE_RECORD: /* (TraceRecord) */
5897 local_offset = parse_TraceRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5898 break;
5899 case SA_ATTR_ID_MULTIPATH_GID_RECORD: /* (MultiPathRecord) */
5900 local_offset = parse_MultiPathRecord_GID(SUBA_Attribute_header_tree, tvb, &local_offset);
5901 break;
5902 case SA_ATTR_ID_MULTIPATH_GUID_RECORD:
5903 local_offset = parse_MultiPathRecord_GUID(SUBA_Attribute_header_tree, tvb, &local_offset);
5904 break;
5905 case SA_ATTR_ID_MULTIPATH_LID_RECORD:
5906 local_offset = parse_MultiPathRecord_lid(SUBA_Attribute_header_tree, tvb, &local_offset);
5907 break;
5908 case SA_ATTR_ID_SERVICEASSOCIATION_RECORD: /* (ServiceAssociationRecord) */
5909 local_offset = parse_ServiceAssociationRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5910 break;
5911 case SA_ATTR_ID_PGROUP_FWDTBL_RECORD:
5912 local_offset = parse_PortGroupForwardingTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5913 break;
5914 case SA_ATTR_ID_CABLE_INFO_RECORD: /* (CableInfoRecord) */
5915 local_offset = parse_CableInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5916 break;
5917 case SA_ATTR_ID_VF_INFO_RECORD:
5918 local_offset = parse_VFInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset);
5919 break;
5920 case SA_ATTR_ID_PORTGROUP_TABLE_RECORD:
5921 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5922 local_offset += 2;
5923 local_offset = parse_PortGroupTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5924 break;
5925 case SA_ATTR_ID_QUARANTINED_NODE_RECORD:
5926 local_offset = parse_QuarantinedNodeRecord(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5927 break;
5928 case SA_ATTR_ID_CONGESTION_INFO_RECORD:
5929 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5930 local_offset += 4;
5931 local_offset = parse_CongestionInfo(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5932 break;
5933 case SA_ATTR_ID_SWITCH_CONG_RECORD:
5934 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5935 local_offset += 4;
5936 local_offset = parse_SwitchCongestionSetting(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5937 break;
5938 case SA_ATTR_ID_SWITCH_PORT_CONG_RECORD:
5939 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
5940 local_offset += 3;
5941 local_offset = parse_SwitchPortCongestionSetting(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5942 break;
5943 case SA_ATTR_ID_HFI_CONG_RECORD:
5944 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
5945 local_offset += 4;
5946 local_offset = parse_HFICongestionSetting(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5947 break;
5948 case SA_ATTR_ID_HFI_CONG_CTRL_RECORD:
5949 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
5950 local_offset += 2;
5951 local_offset = parse_HFICongestionControlTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5952 break;
5953 case SA_ATTR_ID_BUFF_CTRL_TAB_RECORD:
5954 proto_tree_add_item(SUBA_Attribute_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
5955 local_offset += 3;
5956 local_offset = parse_BufferControlTable(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5957 break;
5958 case SA_ATTR_ID_FABRICINFO_RECORD:
5959 local_offset = parse_FabricInfoRecord(SUBA_Attribute_header_tree, tvb, &local_offset, MAD);
5960 break;
5961 default:
5962 return false;
5965 *offset = local_offset;
5966 return true;
5968 /* Parse the SA Method from the MAD Common Header. */
5969 static void label_SUBA_Method(proto_item *SubAItem, MAD_t *MAD, packet_info *pinfo)
5971 const char *label = val_to_str_const(MAD->Method, SUBA_Methods, "(Unknown SA Method!)");
5972 proto_item_append_text(SubAItem, " %s", label);
5973 col_append_str(pinfo->cinfo, COL_INFO, label);
5975 /* Parse the SA Attribute from the MAD Common Header */
5976 static void label_SUBA_Attribute(proto_item *SubAItem, MAD_t *MAD, packet_info *pinfo)
5978 const char *label = val_to_str_const(MAD->AttributeID, SUBA_Attributes, "Attribute (Unknown SA Attribute!)");
5979 proto_item_append_text(SubAItem, "%s", &label[11]);
5980 col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
5982 /* Parse the SA_HEADER
5983 * IN: parentTree to add the dissection to
5984 * IN: tvb - the data buffer from wireshark
5985 * IN/OUT: The current and updated offset */
5986 static bool parse_SA_HEADER(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset, MAD_t *MAD, SA_HEADER_t *SA_HEADER)
5988 int local_offset = *offset;
5989 proto_item *SA_HEADER_header_item;
5990 proto_tree *SA_HEADER_header_tree;
5992 SA_HEADER_header_item = proto_tree_add_item(parentTree, hf_opa_sa, tvb, local_offset, 20, ENC_NA);
5993 SA_HEADER_header_tree = proto_item_add_subtree(SA_HEADER_header_item, ett_sa);
5995 SA_HEADER->SM_Key = tvb_get_ntoh64(tvb, local_offset);
5996 proto_tree_add_item(SA_HEADER_header_tree, hf_opa_sa_sm_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
5997 local_offset += 8;
5998 SA_HEADER->AttributeOffset = tvb_get_ntohs(tvb, local_offset);
5999 proto_tree_add_item(SA_HEADER_header_tree, hf_opa_sa_attribute_offset, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6000 local_offset += 2;
6001 SA_HEADER->Reserved = tvb_get_ntohs(tvb, local_offset);
6002 proto_tree_add_item(SA_HEADER_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6003 local_offset += 2;
6004 SA_HEADER->ComponentMask = tvb_get_ntoh64(tvb, local_offset);
6005 proto_tree_add_item(SA_HEADER_header_tree, hf_opa_sa_component_mask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6006 local_offset += 8;
6008 label_SUBA_Method(SA_HEADER_header_item, MAD, pinfo);
6009 label_SUBA_Attribute(SA_HEADER_header_item, MAD, pinfo);
6011 *offset = local_offset;
6012 return true;
6014 /* Parse Subnet Administration */
6015 static void parse_SUBNADMN(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
6017 MAD_t MAD;
6018 RMPP_t RMPP;
6019 SA_HEADER_t SA_HEADER;
6020 fragment_head *frag_head = NULL;
6021 tvbuff_t *old_tvb = NULL;
6022 int old_offset;
6023 unsigned r, records, length;
6024 proto_tree *SA_record_tree;
6025 const char *label;
6026 bool parent_was_opa_fe = proto_is_frame_protocol(pinfo->layers, "opa.fe");
6028 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
6029 return;
6031 if (!parse_RMPP(parentTree, pinfo, tvb, offset, &RMPP)) {
6032 return;
6034 if (!parse_SA_HEADER(parentTree, pinfo, tvb, offset, &MAD, &SA_HEADER)) {
6035 return;
6037 if ((!pref_parse_on_mad_status_error && MAD.Status) ||
6038 RMPP.Type == RMPP_ACK) {
6039 *offset += tvb_captured_length_remaining(tvb, *offset);
6040 return;
6043 if (!parent_was_opa_fe && pref_attempt_rmpp_defragment
6044 && (RMPP.resptime_flags & RMPP_FLAG_ACTIVE_MASK) && (RMPP.Type == RMPP_DATA)
6045 && !((RMPP.resptime_flags & RMPP_FLAG_FIRST_MASK)
6046 && (RMPP.resptime_flags & RMPP_FLAG_LAST_MASK))) {
6048 frag_head = fragment_add_seq_check(&opa_mad_rmpp_reassembly_table,
6049 tvb, *offset, pinfo, (uint32_t)MAD.TransactionID, NULL, RMPP.SegmentNumber - 1,
6050 ((RMPP.resptime_flags & RMPP_FLAG_LAST_MASK) ?
6051 RMPP.PayloadLength - 20 : (uint32_t)tvb_captured_length_remaining(tvb, *offset)),
6052 (bool)!(RMPP.resptime_flags & RMPP_FLAG_LAST_MASK));
6053 /* Back up tvb & offset */
6054 old_tvb = tvb;
6055 old_offset = *offset;
6056 /* Create new tvb from reassembled data */
6057 tvb = process_reassembled_data(old_tvb, old_offset, pinfo, "Reassembled RMPP Packet",
6058 frag_head, &opa_rmpp_frag_items, NULL, parentTree);
6059 if (tvb == NULL) {
6060 return;
6062 *offset = 0;
6065 length = tvb_captured_length_remaining(tvb, *offset);
6066 records = (SA_HEADER.AttributeOffset ? length / (SA_HEADER.AttributeOffset * 8) : 0);
6067 for (r = 0; r < records; r++) {
6068 old_offset = *offset;
6069 label = val_to_str_const(MAD.AttributeID, SUBA_Attributes, "Attribute (Unknown SA Attribute!)");
6070 SA_record_tree = proto_tree_add_subtree_format(parentTree, tvb, old_offset,
6071 (SA_HEADER.AttributeOffset * 8), ett_rmpp_sa_record, NULL, "%s Record %u: ", label, r);
6073 if (!parse_SUBA_Attribute(SA_record_tree, tvb, offset, &MAD, &RMPP, &SA_HEADER)) {
6074 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
6075 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
6076 *offset += tvb_captured_length_remaining(tvb, *offset);
6077 return;
6079 *offset = old_offset + (SA_HEADER.AttributeOffset * 8);
6081 return;
6084 /* Parse PortStatus MAD from the Performance management class. */
6085 static int parse_PortStatus(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
6087 proto_item *PortStatus_header_item;
6088 proto_tree *PortStatus_header_tree;
6089 proto_tree *PortStatus_VL_tree;
6090 int local_offset = *offset;
6091 uint32_t VLSelectMask;
6092 unsigned i, VLs;
6093 uint32_t vlSelMskTmp;
6095 if (!parentTree)
6096 return *offset;
6098 VLSelectMask = tvb_get_ntohl(tvb, local_offset + 4);
6099 for (i = 0, VLs = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
6100 VLs = VLs + (vlSelMskTmp & 0x1);
6103 if (MAD->Method == METHOD_GET) { /* Get() */
6104 PortStatus_header_item = proto_tree_add_item(parentTree, hf_opa_PortStatus, tvb, local_offset, 8, ENC_NA);
6105 } else if (MAD->Method == METHOD_GET_RESP) { /* GetResp(): */
6106 PortStatus_header_item = proto_tree_add_item(parentTree, hf_opa_PortStatus, tvb, local_offset, 208 + VLs * 112, ENC_NA);
6107 } else {
6108 return *offset;
6110 PortStatus_header_tree = proto_item_add_subtree(PortStatus_header_item, ett_portstatus);
6112 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6113 local_offset += 1;
6114 proto_tree_add_item(PortStatus_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6115 local_offset += 3;
6117 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_VLSelectMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6118 local_offset += 4;
6120 if (MAD->Method == METHOD_GET)
6121 return local_offset;
6123 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6124 local_offset += 8;
6125 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6126 local_offset += 8;
6127 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6128 local_offset += 8;
6129 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6130 local_offset += 8;
6132 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortMulticastXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6133 local_offset += 8;
6134 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortMulticastRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6135 local_offset += 8;
6136 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6137 local_offset += 8;
6138 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_SwPortCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6139 local_offset += 8;
6140 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6141 local_offset += 8;
6143 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6144 local_offset += 8;
6145 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6146 local_offset += 8;
6147 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6148 local_offset += 8;
6149 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6150 local_offset += 8;
6151 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6152 local_offset += 8;
6154 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6155 local_offset += 8;
6156 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6157 local_offset += 8;
6158 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvSwitchRelayErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6159 local_offset += 8;
6160 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6161 local_offset += 8;
6162 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortXmitConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6163 local_offset += 8;
6165 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvRemotePhysicalErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6166 local_offset += 8;
6167 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LocalLinkIntegrityErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6168 local_offset += 8;
6169 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_PortRcvErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6170 local_offset += 8;
6171 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_ExcessiveBufferOverruns, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6172 local_offset += 8;
6173 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_FMConfigErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6174 local_offset += 8;
6176 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LinkErrorRecovery, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6177 local_offset += 4;
6178 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LinkDowned, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6179 local_offset += 4;
6181 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6182 local_offset += 1;
6183 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6184 proto_tree_add_item(PortStatus_header_tree, hf_opa_PortStatus_LinkQualityIndicator, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6185 local_offset += 1;
6187 proto_tree_add_item(PortStatus_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6188 local_offset += 2;
6189 proto_tree_add_item(PortStatus_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6190 local_offset += 4;
6192 for (i = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
6193 if (vlSelMskTmp & 0x1) {
6194 PortStatus_VL_tree = proto_tree_add_subtree_format(PortStatus_header_tree, tvb, local_offset, 112,
6195 ett_portstatus_vl, NULL, "VL %u", i);
6197 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6198 local_offset += 8;
6199 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6200 local_offset += 8;
6201 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6202 local_offset += 8;
6203 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6204 local_offset += 8;
6205 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6206 local_offset += 8;
6208 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_SwPortVLCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6209 local_offset += 8;
6210 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6211 local_offset += 8;
6212 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6213 local_offset += 8;
6214 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6215 local_offset += 8;
6216 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6217 local_offset += 8;
6219 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6220 local_offset += 8;
6221 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6222 local_offset += 8;
6223 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6224 local_offset += 8;
6225 proto_tree_add_item(PortStatus_VL_tree, hf_opa_PortStatus_PortVLXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6226 local_offset += 8;
6229 return local_offset;
6232 /* Parse ClearPortStatus MAD from the Performance management class.*/
6233 static int parse_ClearPortStatus(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
6235 proto_item *ClearPortStatus_header_item;
6236 proto_tree *ClearPortStatus_header_tree;
6237 proto_item *ClearPortStatus_PortSelectMask_item;
6238 int local_offset = *offset;
6240 if (!parentTree)
6241 return *offset;
6243 if (MAD->Method == METHOD_SET || MAD->Method == METHOD_GET_RESP) { /* Only Set()/GetResp() is supported. */
6244 ClearPortStatus_header_item = proto_tree_add_item(parentTree, hf_opa_ClearPortStatus, tvb, local_offset, 36, ENC_NA);
6245 } else
6246 return *offset;
6248 ClearPortStatus_header_tree = proto_item_add_subtree(ClearPortStatus_header_item, ett_clearportstatus);
6250 ClearPortStatus_PortSelectMask_item = proto_tree_add_item(ClearPortStatus_header_tree, hf_opa_ClearPortStatus_PortSelectMask, tvb, local_offset, 32, ENC_NA);
6251 proto_item_append_text(ClearPortStatus_PortSelectMask_item, ": %s",
6252 opa_format_port_select_mask(tvb, local_offset, NULL, NULL));
6253 local_offset += 32;
6255 proto_tree_add_bitmask(ClearPortStatus_header_tree, tvb, local_offset,
6256 hf_opa_ClearPortStatus_CounterSelectMask, ett_clearportstatus_counterselectmask,
6257 _ClearPortStatus_CounterSelectMask, ENC_BIG_ENDIAN);
6258 local_offset += 4;
6260 return local_offset;
6263 /* Parse DataPortCounters MAD from the Performance management class.*/
6264 static int parse_DataPortCounters(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
6266 proto_item *DataPortCounters_header_item;
6267 proto_item *DataPortCounters_PortSelectMask_item;
6268 proto_tree *DataPortCounters_header_tree;
6269 proto_tree *DataPortCounters_Port_tree;
6270 proto_tree *DataPortCounters_VL_tree;
6272 int local_offset = *offset;
6273 uint32_t VLSelectMask, vlSelMskTmp;
6274 unsigned VLs, i, p;
6275 unsigned Num_Ports = (MAD->AttributeModifier >> 24) & 0xFF;
6277 if (!parentTree)
6278 return *offset;
6280 VLSelectMask = tvb_get_ntohl(tvb, local_offset + 32);
6281 for (i = 0, VLs = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
6282 VLs += (vlSelMskTmp & 0x1);
6285 if (MAD->Method == METHOD_GET) { /* Get() */
6286 DataPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_DataPortCounters, tvb, local_offset, 40, ENC_NA);
6287 } else if (MAD->Method == METHOD_GET_RESP) { /* GetResp(): */
6288 DataPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_DataPortCounters, tvb, local_offset, 40 + Num_Ports * (136 + VLs * 104), ENC_NA);
6289 } else { /* Set() */
6290 return *offset;
6292 DataPortCounters_header_tree = proto_item_add_subtree(DataPortCounters_header_item, ett_dataportcounters);
6294 DataPortCounters_PortSelectMask_item = proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_PortSelectMask, tvb, local_offset, 32, ENC_NA);
6295 proto_item_append_text(DataPortCounters_PortSelectMask_item, ": %s",
6296 opa_format_port_select_mask(tvb, local_offset, NULL, NULL));
6297 local_offset += 32;
6299 proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_VLSelectMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6300 local_offset += 4;
6302 proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_resolution_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6303 proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_LocalLinkIntegrityResolution, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6304 proto_tree_add_item(DataPortCounters_header_tree, hf_opa_DataPortCounters_LinkErrorRecoveryResolution, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6305 local_offset += 4;
6307 if (MAD->Method == METHOD_GET)
6308 return local_offset;
6310 for (p = 0; p < Num_Ports; p++) {
6311 DataPortCounters_Port_tree = proto_tree_add_subtree_format(DataPortCounters_header_tree, tvb, local_offset, (1 + 3 + 4 + (8 * 16) + VLs * (8 * 13)),
6312 ett_dataportcounters_port, NULL, "Port %u", tvb_get_uint8(tvb, local_offset));
6314 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6315 local_offset += 1;
6316 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6317 local_offset += 3;
6318 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_lqi_reserved, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6319 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_LinkQualityIndicator, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6320 local_offset += 4;
6322 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6323 local_offset += 8;
6324 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6325 local_offset += 8;
6326 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6327 local_offset += 8;
6328 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6329 local_offset += 8;
6331 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortMulticastXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6332 local_offset += 8;
6333 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortMulticastRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6334 local_offset += 8;
6335 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6336 local_offset += 8;
6337 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_SwPortCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6338 local_offset += 8;
6339 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6340 local_offset += 8;
6342 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6343 local_offset += 8;
6344 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6345 local_offset += 8;
6346 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6347 local_offset += 8;
6348 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6349 local_offset += 8;
6350 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6351 local_offset += 8;
6353 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6354 local_offset += 8;
6355 proto_tree_add_item(DataPortCounters_Port_tree, hf_opa_DataPortCounters_PortErrorCounterSummary, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6356 local_offset += 8;
6358 for (i = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
6359 if (vlSelMskTmp & 0x1) {
6360 DataPortCounters_VL_tree = proto_tree_add_subtree_format(DataPortCounters_Port_tree, tvb, local_offset, 8 * 13,
6361 ett_dataportcounters_vl, NULL, "VL %u", i);
6363 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6364 local_offset += 8;
6365 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6366 local_offset += 8;
6367 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6368 local_offset += 8;
6369 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6370 local_offset += 8;
6371 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6372 local_offset += 8;
6374 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_SwPortVLCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6375 local_offset += 8;
6376 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6377 local_offset += 8;
6378 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6379 local_offset += 8;
6380 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6381 local_offset += 8;
6382 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6383 local_offset += 8;
6385 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6386 local_offset += 8;
6387 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6388 local_offset += 8;
6389 proto_tree_add_item(DataPortCounters_VL_tree, hf_opa_DataPortCounters_PortVLMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6390 local_offset += 8;
6394 return local_offset;
6397 /* Parse ErrorPortCounters MAD from the Performance management class.*/
6398 static int parse_ErrorPortCounters(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
6400 proto_item *ErrorPortCounters_header_item;
6401 proto_item *ErrorPortCounters_PortSelectMask_item;
6402 proto_item *ErrorPortCounters_VL_item;
6403 proto_tree *ErrorPortCounters_header_tree;
6404 proto_tree *ErrorPortCounters_Port_tree;
6406 int local_offset = *offset;
6407 uint32_t VLSelectMask, vlSelMskTmp;
6408 unsigned VLs, i, p;
6409 unsigned Num_Ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
6411 if (!parentTree)
6412 return *offset;
6414 VLSelectMask = tvb_get_ntohl(tvb, local_offset + 32);
6415 for (i = 0, VLs = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
6416 VLs += (vlSelMskTmp & 0x1);
6419 if (MAD->Method == METHOD_GET) { /* Get() */
6420 ErrorPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortCounters, tvb, local_offset, 40, ENC_NA);
6421 } else if (MAD->Method == METHOD_GET_RESP) { /* GetResp(): */
6422 ErrorPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortCounters, tvb, local_offset, 40 + Num_Ports * (96 + VLs * 8), ENC_NA);
6423 } else { /* Set() */
6424 return *offset;
6426 ErrorPortCounters_header_tree = proto_item_add_subtree(ErrorPortCounters_header_item, ett_errorportcounters);
6428 ErrorPortCounters_PortSelectMask_item = proto_tree_add_item(ErrorPortCounters_header_tree, hf_opa_ErrorPortCounters_PortSelectMask, tvb, local_offset, 32, ENC_NA);
6429 proto_item_append_text(ErrorPortCounters_PortSelectMask_item, ": %s",
6430 opa_format_port_select_mask(tvb, local_offset, NULL, NULL));
6431 local_offset += 32;
6433 proto_tree_add_item(ErrorPortCounters_header_tree, hf_opa_ErrorPortCounters_VLSelectMask, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6434 local_offset += 4;
6436 proto_tree_add_item(ErrorPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6437 local_offset += 4;
6439 if (MAD->Method == METHOD_GET)
6440 return local_offset;
6442 for (p = 0; p < Num_Ports; p++) {
6443 ErrorPortCounters_Port_tree = proto_tree_add_subtree_format(ErrorPortCounters_header_tree, tvb, local_offset, (96 + VLs * 8),
6444 ett_errorportcounters_port, NULL, "Port %u", tvb_get_uint8(tvb, local_offset));
6446 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6447 local_offset += 1;
6448 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6449 local_offset += 3;
6450 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6451 local_offset += 4;
6452 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6453 local_offset += 8;
6454 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvSwitchRelayErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6455 local_offset += 8;
6456 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6457 local_offset += 8;
6458 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortXmitConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6459 local_offset += 8;
6460 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvRemotePhysicalErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6461 local_offset += 8;
6463 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_LocalLinkIntegrityErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6464 local_offset += 8;
6465 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortRcvErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6466 local_offset += 8;
6467 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_ExcessiveBufferOverruns, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6468 local_offset += 8;
6469 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_FMConfigErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6470 local_offset += 8;
6472 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_LinkErrorRecovery, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6473 local_offset += 4;
6474 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_LinkDowned, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6475 local_offset += 4;
6477 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6478 local_offset += 1;
6480 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6481 local_offset += 3;
6482 proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6483 local_offset += 4;
6485 for (i = 0, vlSelMskTmp = VLSelectMask; vlSelMskTmp && i < 32; i++, vlSelMskTmp >>= 1) {
6486 if (vlSelMskTmp & 0x1) {
6487 ErrorPortCounters_VL_item = proto_tree_add_item(ErrorPortCounters_Port_tree, hf_opa_ErrorPortCounters_PortVLXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6488 local_offset += 8;
6489 proto_item_prepend_text(ErrorPortCounters_VL_item, "%3u: ", i);
6493 return local_offset;
6496 /* Parse ErrorPortInfo MAD from the Performance management class.*/
6497 static int parse_ErrorPortInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
6499 proto_item *ErrorPortInfo_header_item;
6500 proto_item *ErrorPortInfo_PortSelectMask_item;
6502 proto_tree *ErrorPortInfo_header_tree;
6503 proto_tree *ErrorPortInfo_Port_tree;
6504 proto_tree * PortRcvErrorInfo_tree,
6505 *ExcessiveBufferOverrunInfo_tree,
6506 *PortXmitConstraintErrorInfo_tree,
6507 *PortRcvConstraintErrorInfo_tree,
6508 *PortRcvSwitchRelayErrorInfo_tree,
6509 *UncorrectableErrorInfo_tree,
6510 *FMConfigErrorInfo_tree;
6512 int local_offset = *offset;
6513 unsigned p, ErrorCode;
6514 unsigned Num_Ports = (MAD->AttributeModifier & 0xFF000000) >> 24;
6516 if (!parentTree)
6517 return *offset;
6519 if (MAD->Method == METHOD_GET_RESP) {
6520 ErrorPortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortInfo, tvb, local_offset, -1, ENC_NA);
6521 } else if (MAD->Method == METHOD_SET) {
6522 ErrorPortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortInfo, tvb, local_offset, 40, ENC_NA);
6523 } else { /* GET */
6524 ErrorPortInfo_header_item = proto_tree_add_item(parentTree, hf_opa_ErrorPortInfo, tvb, local_offset, 32, ENC_NA);
6526 ErrorPortInfo_header_tree = proto_item_add_subtree(ErrorPortInfo_header_item, ett_errorportinfo);
6528 ErrorPortInfo_PortSelectMask_item = proto_tree_add_item(ErrorPortInfo_header_tree, hf_opa_ErrorPortInfo_PortSelectMask, tvb, local_offset, 32, ENC_NA);
6529 proto_item_append_text(ErrorPortInfo_PortSelectMask_item, ": %s",
6530 opa_format_port_select_mask(tvb, local_offset, NULL, NULL));
6531 local_offset += 32;
6533 if (MAD->Method == METHOD_GET)
6534 return local_offset;
6535 /* ErrorInfoSelectMask */
6536 proto_tree_add_bitmask_list(ErrorPortInfo_header_tree, tvb, local_offset, 4, _ErrorPortInfo_ErrorInfoSelectMask, ENC_BIG_ENDIAN);
6537 local_offset += 4;
6539 if (MAD->Method == METHOD_SET
6540 /* GetResp packet from a Set operation will contain 1 zeroed port struct */
6541 || (MAD->Method == METHOD_GET_RESP && Num_Ports > 1
6542 && tvb_reported_length_remaining(tvb, local_offset) < (72 * 2)))
6543 return local_offset;
6545 proto_tree_add_item(ErrorPortInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6546 local_offset += 4;
6547 for (p = 0; p < Num_Ports; p++) {
6548 ErrorPortInfo_Port_tree = proto_tree_add_subtree_format(ErrorPortInfo_header_tree, tvb, local_offset, 72,
6549 ett_errorportinfoport, NULL, "Port %u", tvb_get_uint8(tvb, local_offset));
6551 proto_tree_add_item(ErrorPortInfo_Port_tree, hf_opa_ErrorPortInfo_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6552 local_offset += 1;
6553 proto_tree_add_item(ErrorPortInfo_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6554 local_offset += 3;
6555 proto_tree_add_item(ErrorPortInfo_Port_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6556 local_offset += 4;
6558 /* PortRcvErrorInfo */
6559 PortRcvErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 24,
6560 ett_errorportinfo_portrcverrorinfo, NULL, "PortRcv Error Info");
6562 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6563 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6564 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6565 ErrorCode = tvb_get_uint8(tvb, local_offset) & 0x0F;
6566 local_offset += 1;
6567 if (ErrorCode >= 1 && ErrorCode <= 12) {
6568 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit1, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6569 local_offset += 8;
6570 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit2, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6571 local_offset += 8;
6572 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit1Bits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6573 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit2Bits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6574 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved2, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6575 local_offset += 1;
6576 } else if (ErrorCode == 13) {
6577 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketBytes, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6578 local_offset += 8;
6579 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_FlitBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6580 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved3, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6581 local_offset += 1;
6582 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6583 local_offset += 8;
6584 } else {
6585 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved4, tvb, local_offset, 17, ENC_NA);
6586 local_offset += 17;
6588 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6589 local_offset += 2;
6590 proto_tree_add_item(PortRcvErrorInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6591 local_offset += 4;
6593 /* ExcessiveBufferOverrunErrorInfo */
6594 ExcessiveBufferOverrunInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
6595 ett_errorportinfo_excessivebufferoverruninfo, NULL, "ExcessiveBufferOverrun Error Info");
6597 proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6598 proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6599 proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6600 local_offset += 1;
6601 proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6602 local_offset += 3;
6603 proto_tree_add_item(ExcessiveBufferOverrunInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6604 local_offset += 4;
6606 /* PortXmitConstraintErrorInfo */
6607 PortXmitConstraintErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
6608 ett_errorportinfo_portxmitconstrainterrorinfo, NULL, "PortXmitConstraint Error Info");
6610 proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6611 proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6612 local_offset += 1;
6613 proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6614 local_offset += 1;
6615 proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6616 local_offset += 2;
6617 proto_tree_add_item(PortXmitConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_SLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6618 local_offset += 4;
6620 /* PortRcvConstraintErrorInfo */
6621 PortRcvConstraintErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
6622 ett_errorportinfo_portrcvconstrainterrorinfo, NULL, "PortRcvConstraint Error Info");
6624 proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6625 proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6626 local_offset += 1;
6627 proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6628 local_offset += 1;
6629 proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_P_Key, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6630 local_offset += 2;
6631 proto_tree_add_item(PortRcvConstraintErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_SLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6632 local_offset += 4;
6634 /* PortRcvSwitchRelayErrorInfo */
6635 PortRcvSwitchRelayErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 8,
6636 ett_errorportinfo_portrcvswitchrelayerrorinfo, NULL, "PortRcvSwitchRelay Error Info");
6638 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6639 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6640 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6641 ErrorCode = tvb_get_uint8(tvb, local_offset) & 0x0F;
6642 local_offset += 1;
6643 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6644 local_offset += 3;
6645 switch (ErrorCode) {
6646 case 0:
6647 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_DLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6648 local_offset += 4;
6649 break;
6650 case 2:
6651 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6652 local_offset += 1;
6653 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
6654 local_offset += 3;
6655 break;
6656 case 3:
6657 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6658 local_offset += 1;
6659 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6660 local_offset += 1;
6661 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6662 local_offset += 2;
6663 break;
6664 default:
6665 proto_tree_add_item(PortRcvSwitchRelayErrorInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6666 local_offset += 4;
6667 break;
6670 /* UncorrectableErrorInfo */
6671 UncorrectableErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 2,
6672 ett_errorportinfo_uncorrectableerrorinfo, NULL, "Uncorrectable Error Info");
6674 proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_ErrorPortInfo_UncorrectableErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6675 proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_ErrorPortInfo_UncorrectableErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6676 proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_ErrorPortInfo_UncorrectableErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6677 local_offset += 1;
6678 proto_tree_add_item(UncorrectableErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6679 local_offset += 1;
6681 /* FMConfigErrorInfo */
6682 FMConfigErrorInfo_tree = proto_tree_add_subtree(ErrorPortInfo_Port_tree, tvb, local_offset, 6,
6683 ett_errorportinfo_fmconfigerrorinfo, NULL, "FMConfig Error Info");
6685 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_Status, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6686 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6687 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_ErrorCode, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6688 ErrorCode = tvb_get_uint8(tvb, local_offset) & 0x0F;
6689 local_offset += 1;
6690 switch (ErrorCode) {
6691 case 0:
6692 case 1:
6693 case 2:
6694 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_Distance, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6695 local_offset += 1;
6696 break;
6697 case 3:
6698 case 4:
6699 case 5:
6700 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_VL, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6701 local_offset += 1;
6702 break;
6703 case 6:
6704 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_BadFlitBits, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6705 local_offset += 1;
6706 break;
6707 case 7:
6708 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_ErrorPortInfo_FMConfigErrorInfo_SC, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6709 local_offset += 1;
6710 break;
6711 default:
6712 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
6713 local_offset += 1;
6714 break;
6717 proto_tree_add_item(FMConfigErrorInfo_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6718 local_offset += 4;
6720 return local_offset;
6722 static bool parse_PM_Attribute(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
6724 int local_offset = *offset;
6726 switch (MAD->AttributeID) {
6727 /* Mgmt */
6728 case PA_ATTR_ID_CLASS_PORTINFO:
6729 local_offset = parse_ClassPortInfo(parentTree, tvb, &local_offset, MAD);
6730 break;
6731 case PM_ATTR_ID_PORT_STATUS:
6732 local_offset = parse_PortStatus(parentTree, tvb, &local_offset, MAD);
6733 break;
6734 case PM_ATTR_ID_CLEAR_PORT_STATUS:
6735 local_offset = parse_ClearPortStatus(parentTree, tvb, &local_offset, MAD);
6736 break;
6737 case PM_ATTR_ID_DATA_PORT_COUNTERS:
6738 local_offset = parse_DataPortCounters(parentTree, tvb, &local_offset, MAD);
6739 break;
6740 case PM_ATTR_ID_ERROR_PORT_COUNTERS:
6741 local_offset = parse_ErrorPortCounters(parentTree, tvb, &local_offset, MAD);
6742 break;
6743 case PM_ATTR_ID_ERROR_INFO:
6744 local_offset = parse_ErrorPortInfo(parentTree, tvb, &local_offset, MAD);
6745 break;
6746 default:
6747 return false;
6750 *offset = local_offset;
6751 return true;
6754 /* Parse the Method from the MAD Common Header. */
6755 static void label_PM_Method(proto_item *PMItem, MAD_t *MAD, packet_info *pinfo)
6757 const char *label = val_to_str_const(MAD->Method, PM_Methods, "(Unknown Perf Method!)");
6758 proto_item_append_text(PMItem, " %s", label);
6759 col_append_str(pinfo->cinfo, COL_INFO, label);
6762 /* Parse the Attribute from the MAD Common Header */
6763 static void label_PM_Attribute(proto_item *PMItem, MAD_t *MAD, packet_info *pinfo)
6765 const char *label = val_to_str_const(MAD->AttributeID, PM_Attributes, "Attribute (Unknown Perf Attribute!)");
6766 proto_item_append_text(PMItem, "%s", &label[11]);
6767 col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
6769 /* Parse Performance Management */
6770 static void parse_PERF(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
6772 MAD_t MAD;
6773 proto_item *PM_header_item;
6774 proto_tree *PM_header_tree;
6776 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
6777 return;
6780 PM_header_item = proto_tree_add_item(parentTree, hf_opa_pm, tvb, *offset, -1, ENC_NA);
6781 PM_header_tree = proto_item_add_subtree(PM_header_item, ett_pm);
6783 label_PM_Method(PM_header_item, &MAD, pinfo);
6784 label_PM_Attribute(PM_header_item, &MAD, pinfo);
6786 if (!pref_parse_on_mad_status_error && MAD.Status) {
6787 *offset += tvb_captured_length_remaining(tvb, *offset);
6788 return;
6790 if (!parse_PM_Attribute(PM_header_tree, tvb, offset, &MAD)) {
6791 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
6792 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
6793 *offset += tvb_captured_length_remaining(tvb, *offset);
6794 return;
6798 /* Parse Image MAD from the Performance Admin class. */
6799 static int parse_Image(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
6801 proto_tree *Image_header_tree = parentTree;
6803 int local_offset = *offset;
6805 if (!parentTree)
6806 return *offset;
6808 /* ImageID */
6809 proto_tree_add_item(Image_header_tree, hf_opa_ImageID_imageNumber, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6810 local_offset += 8;
6811 proto_tree_add_item(Image_header_tree, hf_opa_ImageID_imageOffset, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6812 local_offset += 4;
6813 proto_tree_add_item(Image_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6814 local_offset += 4;
6815 /* End ImageID */
6817 return local_offset;
6819 /* Parse GetGroupList MAD from the Performance Admin class.*/
6820 static int parse_GetGroupList(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
6822 proto_item *GetGroupList_GroupName_item;
6823 proto_tree *GetGroupList_header_tree;
6824 proto_item *GetGroupList_header_item;
6825 int local_offset = *offset;
6826 unsigned i;
6828 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
6829 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
6831 if (!parentTree || RMPP->Type != RMPP_DATA ||
6832 (MAD->Method != METHOD_GET_RESP && MAD->Method != METHOD_GETTABLE_RESP)) {
6833 return *offset;
6836 GetGroupList_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupList, tvb, local_offset, length, ENC_NA);
6837 GetGroupList_header_tree = proto_item_add_subtree(GetGroupList_header_item, ett_getgrouplist);
6838 proto_tree_add_none_format(GetGroupList_header_tree, hf_opa_GetGroupList, tvb, local_offset, length, "Number of Groups: %u", records);
6840 for (i = 0; i < records; i++) {
6841 GetGroupList_GroupName_item = proto_tree_add_item(GetGroupList_header_tree, hf_opa_GetGroupList_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
6842 local_offset += 64;
6843 proto_item_prepend_text(GetGroupList_GroupName_item, "%3u: ", i + 1);
6845 return local_offset;
6848 /* Parse GetGroupInfo MAD from the Performance Admin class.*/
6849 static int parse_GetGroupInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
6851 proto_tree *GetGroupInfo_header_tree;
6852 proto_tree *GetGroupInfo_header_item;
6854 proto_tree *GetGroupInfo_Util_Stats_tree;
6855 proto_item *GetGroupInfo_Util_Stats_Buckets_item;
6856 proto_tree *GetGroupInfo_Util_Stats_Buckets_tree;
6857 proto_item *GetGroupInfo_Util_Stats_Bucket_item;
6859 proto_tree *GetGroupInfo_Error_Summary_tree;
6860 proto_tree *GetGroupInfo_Error_Integrity_Buckets_tree;
6861 proto_tree *GetGroupInfo_Error_Congestion_Buckets_tree;
6862 proto_tree *GetGroupInfo_Error_SmaCongestion_Buckets_tree;
6863 proto_tree *GetGroupInfo_Error_Bubble_Buckets_tree;
6864 proto_tree *GetGroupInfo_Error_Security_Buckets_tree;
6865 proto_tree *GetGroupInfo_Error_Routing_Buckets_tree;
6866 proto_item *GetGroupInfo_Error_Stats_Integrity_Buckets_item;
6867 proto_item *GetGroupInfo_Error_Stats_Congestion_Buckets_item;
6868 proto_item *GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item;
6869 proto_item *GetGroupInfo_Error_Stats_Bubble_Buckets_item;
6870 proto_item *GetGroupInfo_Error_Stats_Security_Buckets_item;
6871 proto_item *GetGroupInfo_Error_Stats_Routing_Buckets_item;
6872 proto_item *GetGroupInfo_Error_Stats_Bucket_item;
6874 int local_offset = *offset;
6875 unsigned i, r;
6877 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
6878 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
6880 unsigned util = 100 / PM_UTIL_BUCKETS; /* 0%+ 10%+ 20%+ ... 80%+ 90%+ */
6881 unsigned err = 100 / (PM_ERR_BUCKETS - 1); /* 0%+ 25%+ 50%+ 75%+ 100%+ */
6883 if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
6884 return *offset;
6886 if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
6887 GetGroupInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupInfo, tvb, local_offset, 64 + 16, ENC_NA);
6888 proto_item_set_text(GetGroupInfo_header_item, "GroupInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
6889 GetGroupInfo_header_tree = proto_item_add_subtree(GetGroupInfo_header_item, ett_getgroupinfo);
6890 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
6891 local_offset += 64;
6892 /* ImageID */
6893 local_offset = parse_Image(GetGroupInfo_header_tree, tvb, &local_offset);
6894 return local_offset;
6897 for (r = 0; r < records; r++) {
6898 GetGroupInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupInfo, tvb, local_offset, 64 + 16, ENC_NA);
6899 proto_item_set_text(GetGroupInfo_header_item, "GroupInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
6900 GetGroupInfo_header_tree = proto_item_add_subtree(GetGroupInfo_header_item, ett_getgroupinfo);
6901 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
6902 local_offset += 64;
6904 /* ImageID */
6905 local_offset = parse_Image(GetGroupInfo_header_tree, tvb, &local_offset);
6907 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_numInternalPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6908 local_offset += 4;
6909 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_numExternalPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6910 local_offset += 4;
6912 /* internalUtilStats */
6913 GetGroupInfo_Util_Stats_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 48 + PM_UTIL_BUCKETS * 4,
6914 ett_getgroupinfoutilstats, NULL, "Internal Utilization Statistics");
6916 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6917 local_offset += 8;
6918 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6919 local_offset += 8;
6920 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6921 local_offset += 4;
6922 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6923 local_offset += 4;
6924 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6925 local_offset += 4;
6926 GetGroupInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6927 local_offset += 4;
6928 GetGroupInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Util_Stats_Buckets_item, ett_getgroupinfoutilbuckets);
6929 for (i = 0; i < PM_UTIL_BUCKETS; i++) {
6930 GetGroupInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Util_Stats_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6931 proto_item_set_text(GetGroupInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
6932 local_offset += 4;
6934 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6935 local_offset += 4;
6936 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6937 local_offset += 4;
6938 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6939 local_offset += 4;
6940 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6941 local_offset += 2;
6942 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6943 local_offset += 2;
6945 /* sendUtilStats */
6946 GetGroupInfo_Util_Stats_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 48 + PM_UTIL_BUCKETS * 4,
6947 ett_getgroupinfoutilstats, NULL, "External Send Utilization Statistics");
6949 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6950 local_offset += 8;
6951 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6952 local_offset += 8;
6953 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6954 local_offset += 4;
6955 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6956 local_offset += 4;
6957 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6958 local_offset += 4;
6959 GetGroupInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6960 local_offset += 4;
6961 GetGroupInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Util_Stats_Buckets_item, ett_getgroupinfoutilbuckets);
6962 for (i = 0; i < PM_UTIL_BUCKETS; i++) {
6963 GetGroupInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Util_Stats_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6964 proto_item_set_text(GetGroupInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
6965 local_offset += 4;
6967 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6968 local_offset += 4;
6969 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6970 local_offset += 4;
6971 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6972 local_offset += 4;
6973 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6974 local_offset += 2;
6975 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
6976 local_offset += 2;
6978 /* recvUtilStats */
6979 GetGroupInfo_Util_Stats_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 48 + PM_UTIL_BUCKETS * 4,
6980 ett_getgroupinfoutilstats, NULL, "External Receive Utilization Statistics");
6982 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6983 local_offset += 8;
6984 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
6985 local_offset += 8;
6986 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6987 local_offset += 4;
6988 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6989 local_offset += 4;
6990 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6991 local_offset += 4;
6992 GetGroupInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6993 local_offset += 4;
6994 GetGroupInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Util_Stats_Buckets_item, ett_getgroupinfoutilbuckets);
6995 for (i = 0; i < PM_UTIL_BUCKETS; i++) {
6996 GetGroupInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Util_Stats_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
6997 proto_item_set_text(GetGroupInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
6998 local_offset += 4;
7000 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7001 local_offset += 4;
7002 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7003 local_offset += 4;
7004 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7005 local_offset += 4;
7006 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7007 local_offset += 2;
7008 proto_tree_add_item(GetGroupInfo_Util_Stats_tree, hf_opa_GetGroupInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7009 local_offset += 2;
7011 /* internalErrors */
7012 GetGroupInfo_Error_Summary_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 40 + PM_ERR_BUCKETS * 24,
7013 ett_getgroupinfoerrorsummary, NULL, "Internal Error Statistics");
7015 GetGroupInfo_Error_Stats_Integrity_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7016 local_offset += 4;
7017 GetGroupInfo_Error_Stats_Congestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7018 local_offset += 4;
7019 GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7020 local_offset += 4;
7021 GetGroupInfo_Error_Stats_Bubble_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7022 local_offset += 4;
7023 GetGroupInfo_Error_Stats_Security_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7024 local_offset += 4;
7025 GetGroupInfo_Error_Stats_Routing_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7026 local_offset += 4;
7028 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_utilizationPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7029 local_offset += 2;
7030 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_discardsPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7031 local_offset += 2;
7032 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7033 local_offset += 4;
7034 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7035 local_offset += 8;
7037 GetGroupInfo_Error_Integrity_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Integrity_Buckets_item, ett_getgroupinfoerrintegritybucket);
7038 GetGroupInfo_Error_Congestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Congestion_Buckets_item, ett_getgroupinfoerrcongestionbucket);
7039 GetGroupInfo_Error_SmaCongestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item, ett_getgroupinfoerrsmacongestionbucket);
7040 GetGroupInfo_Error_Bubble_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Bubble_Buckets_item, ett_getgroupinfoerrbubblebucket);
7041 GetGroupInfo_Error_Security_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Security_Buckets_item, ett_getgroupinfoerrsecuritybucket);
7042 GetGroupInfo_Error_Routing_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Routing_Buckets_item, ett_getgroupinfoerrroutingbucket);
7044 for (i = 0; i < PM_ERR_BUCKETS; i++) {
7045 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Integrity_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7046 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7047 local_offset += 4;
7048 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Congestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7049 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7050 local_offset += 4;
7051 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_SmaCongestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7052 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7053 local_offset += 4;
7054 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Bubble_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7055 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7056 local_offset += 4;
7057 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Security_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7058 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7059 local_offset += 4;
7060 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Routing_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7061 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7062 local_offset += 4;
7065 /* externalErrors */
7066 GetGroupInfo_Error_Summary_tree = proto_tree_add_subtree(GetGroupInfo_header_tree, tvb, local_offset, 40 + PM_ERR_BUCKETS * 24,
7067 ett_getgroupinfoerrorsummary, NULL, "External Error Statistics");
7069 GetGroupInfo_Error_Stats_Integrity_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7070 local_offset += 4;
7071 GetGroupInfo_Error_Stats_Congestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7072 local_offset += 4;
7073 GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7074 local_offset += 4;
7075 GetGroupInfo_Error_Stats_Bubble_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7076 local_offset += 4;
7077 GetGroupInfo_Error_Stats_Security_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7078 local_offset += 4;
7079 GetGroupInfo_Error_Stats_Routing_Buckets_item = proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7080 local_offset += 4;
7082 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_utilizationPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7083 local_offset += 2;
7084 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_GetGroupInfo_discardsPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7085 local_offset += 2;
7086 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7087 local_offset += 4;
7088 proto_tree_add_item(GetGroupInfo_Error_Summary_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7089 local_offset += 8;
7091 GetGroupInfo_Error_Integrity_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Integrity_Buckets_item, ett_getgroupinfoerrintegritybucket);
7092 GetGroupInfo_Error_Congestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Congestion_Buckets_item, ett_getgroupinfoerrcongestionbucket);
7093 GetGroupInfo_Error_SmaCongestion_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_SmaCongestion_Buckets_item, ett_getgroupinfoerrsmacongestionbucket);
7094 GetGroupInfo_Error_Bubble_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Bubble_Buckets_item, ett_getgroupinfoerrbubblebucket);
7095 GetGroupInfo_Error_Security_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Security_Buckets_item, ett_getgroupinfoerrsecuritybucket);
7096 GetGroupInfo_Error_Routing_Buckets_tree = proto_item_add_subtree(GetGroupInfo_Error_Stats_Routing_Buckets_item, ett_getgroupinfoerrroutingbucket);
7098 for (i = 0; i < PM_ERR_BUCKETS; i++) {
7099 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Integrity_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7100 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7101 local_offset += 4;
7102 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Congestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7103 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7104 local_offset += 4;
7105 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_SmaCongestion_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7106 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7107 local_offset += 4;
7108 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Bubble_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7109 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7110 local_offset += 4;
7111 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Security_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7112 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7113 local_offset += 4;
7114 GetGroupInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetGroupInfo_Error_Routing_Buckets_tree, hf_opa_GetGroupInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7115 proto_item_set_text(GetGroupInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7116 local_offset += 4;
7119 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7120 local_offset += 1;
7121 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_minInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7122 local_offset += 1;
7123 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxExternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7124 local_offset += 1;
7125 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_minExternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7126 local_offset += 1;
7127 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxInternalMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7128 local_offset += 4;
7129 proto_tree_add_item(GetGroupInfo_header_tree, hf_opa_GetGroupInfo_maxExternalMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7130 local_offset += 4;
7132 return local_offset;
7135 /* Parse GetGroupConfig MAD from the Performance Admin class.*/
7136 static int parse_GetGroupConfig(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
7138 proto_item *GetGroupConfig_header_item;
7139 proto_tree *GetGroupConfig_header_tree = parentTree;
7141 proto_item *GetGroupConfig_Port_item;
7142 proto_tree *GetGroupConfig_Port_tree;
7144 int local_offset = *offset;
7145 unsigned i;
7147 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
7148 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
7150 if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
7151 return *offset;
7153 if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
7154 GetGroupConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupConfig, tvb, local_offset, 64 + 16, ENC_NA);
7155 proto_item_set_text(GetGroupConfig_header_item, "GroupConfig for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
7156 GetGroupConfig_header_tree = proto_item_add_subtree(GetGroupConfig_header_item, ett_getgroupconfig);
7158 proto_tree_add_item(GetGroupConfig_header_tree, hf_opa_GetGroupConfig_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7159 local_offset += 64;
7160 local_offset = parse_Image(GetGroupConfig_header_tree, tvb, &local_offset);
7161 } else if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
7162 GetGroupConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetGroupConfig, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
7163 GetGroupConfig_header_tree = proto_item_add_subtree(GetGroupConfig_header_item, ett_getgroupconfig);
7164 for (i = 0; i < records; i++) {
7165 GetGroupConfig_Port_tree = proto_tree_add_subtree_format(GetGroupConfig_header_tree, tvb, local_offset,
7166 PA_HEADER->AttributeOffset * 8, ett_getgroupconfigport, &GetGroupConfig_Port_item, "%3u: ", i);
7167 local_offset = parse_Image(GetGroupConfig_Port_tree, tvb, &local_offset);
7168 proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7169 local_offset += 8;
7170 proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7171 local_offset += 64;
7172 proto_item_append_text(GetGroupConfig_Port_item, "LID: 0x%04x, Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_uint8(tvb, local_offset + 4));
7173 proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_NodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7174 local_offset += 4;
7175 proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_GetGroupConfig_Port_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7176 local_offset += 1;
7177 proto_tree_add_item(GetGroupConfig_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7178 local_offset += 3;
7182 return local_offset;
7185 /* Parse GetPortCounters MAD from the Performance Admin class.*/
7186 static int parse_GetPortCounters(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
7188 proto_tree *GetPortCounters_header_tree;
7189 proto_item *GetPortCounters_header_item;
7191 int local_offset = *offset;
7193 if (!parentTree)
7194 return *offset;
7196 GetPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_GetPortCounters, tvb, local_offset, 232 + 16, ENC_NA);
7197 proto_item_set_text(GetPortCounters_header_item, "Port Counters for LID: 0x%x Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_uint8(tvb, local_offset + 4));
7198 GetPortCounters_header_tree = proto_item_add_subtree(GetPortCounters_header_item, ett_getportcounters);
7200 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7201 local_offset += 4;
7202 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7203 local_offset += 1;
7204 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7205 local_offset += 3;
7207 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_flags, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7208 local_offset += 4;
7209 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7210 local_offset += 4;
7211 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7212 local_offset += 8;
7214 /* ImageID */
7215 local_offset = parse_Image(GetPortCounters_header_tree, tvb, &local_offset);
7216 if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
7217 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7218 local_offset += 8;
7219 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7220 local_offset += 8;
7221 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7222 local_offset += 8;
7223 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7224 local_offset += 8;
7225 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortMulticastXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7226 local_offset += 8;
7227 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortMulticastRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7228 local_offset += 8;
7229 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LocalLinkIntegrityErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7230 local_offset += 8;
7231 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_FMConfigErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7232 local_offset += 8;
7233 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7234 local_offset += 8;
7235 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_ExcessiveBufferOverruns, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7236 local_offset += 8;
7237 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7238 local_offset += 8;
7239 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvSwitchRelayErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7240 local_offset += 8;
7241 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7242 local_offset += 8;
7243 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitConstraintErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7244 local_offset += 8;
7245 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvRemotePhysicalErrors, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7246 local_offset += 8;
7247 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_SwPortCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7248 local_offset += 8;
7249 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7250 local_offset += 8;
7251 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7252 local_offset += 8;
7253 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7254 local_offset += 8;
7255 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7256 local_offset += 8;
7257 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7258 local_offset += 8;
7259 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7260 local_offset += 8;
7261 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7262 local_offset += 8;
7263 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_PortMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7264 local_offset += 8;
7266 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LinkErrorRecovery, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7267 local_offset += 4;
7268 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LinkDowned, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7269 local_offset += 4;
7271 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7272 local_offset += 1;
7273 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_NumLanesDown, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7274 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_reserved, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7275 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_GetPortCounters_LinkQualityIndicator, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7276 local_offset += 1;
7278 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7279 local_offset += 2;
7280 proto_tree_add_item(GetPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7281 local_offset += 4;
7282 } else {
7283 local_offset += 208;
7286 return local_offset;
7289 static int parse_ClearPortCounters(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
7291 proto_tree *ClearPortCounters_header_tree;
7292 proto_item *ClearPortCounters_header_item;
7294 int local_offset = *offset;
7296 if (!parentTree)
7297 return *offset;
7299 ClearPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ClearPortCounters, tvb, local_offset, 20, ENC_NA);
7300 proto_item_set_text(ClearPortCounters_header_item, "Clear User Port Counters for LID: 0x%x Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_uint8(tvb, local_offset + 4));
7301 ClearPortCounters_header_tree = proto_item_add_subtree(ClearPortCounters_header_item, ett_clearportcounters);
7303 proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_ClearPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7304 local_offset += 4;
7305 proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_ClearPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7306 local_offset += 1;
7307 proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7308 local_offset += 3;
7309 proto_tree_add_item(ClearPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7310 local_offset += 8;
7312 proto_tree_add_bitmask(ClearPortCounters_header_tree, tvb, local_offset,
7313 hf_opa_ClearPortCounters_CounterSelectMask, ett_clearportcounters_counterselectmask,
7314 _ClearPortCounters_CounterSelectMask, ENC_BIG_ENDIAN);
7315 local_offset += 4;
7317 return local_offset;
7320 static int parse_ClearAllPortCounters(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
7323 proto_tree *ClearAllPortCounters_header_tree;
7324 proto_item *ClearAllPortCounters_header_item;
7326 int local_offset = *offset;
7328 if (!parentTree)
7329 return *offset;
7331 ClearAllPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ClearAllPortCounters, tvb, local_offset, 4, ENC_NA);
7332 proto_item_set_text(ClearAllPortCounters_header_item, "Clear All User Port Counters");
7333 ClearAllPortCounters_header_tree = proto_item_add_subtree(ClearAllPortCounters_header_item, ett_clearallportcounters);
7335 proto_tree_add_bitmask(ClearAllPortCounters_header_tree, tvb, local_offset,
7336 hf_opa_ClearAllPortCounters_CounterSelectMask, ett_clearallportcounters_counterselectmask,
7337 _ClearAllPortCounters_CounterSelectMask, ENC_BIG_ENDIAN);
7338 local_offset += 4;
7340 return local_offset;
7343 static int parse_PMConfig(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
7345 proto_tree *PMConfig_header_tree;
7346 proto_item *PMConfig_header_item;
7348 int local_offset = *offset;
7350 if (!parentTree)
7351 return *offset;
7353 PMConfig_header_item = proto_tree_add_item(parentTree, hf_opa_PMConfig, tvb, local_offset, 104, ENC_NA);
7354 PMConfig_header_tree = proto_item_add_subtree(PMConfig_header_item, ett_pmconfig);
7356 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_sweepInterval, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7357 local_offset += 4;
7358 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_maxClients, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7359 local_offset += 4;
7360 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_sizeHistory, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7361 local_offset += 4;
7362 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_sizeFreeze, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7363 local_offset += 4;
7364 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_lease, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7365 local_offset += 4;
7366 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_pmFlags, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7367 local_offset += 4;
7369 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortXmitWait, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7370 local_offset += 1;
7371 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_SwPortCongestion, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7372 local_offset += 1;
7373 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortRcvFECN, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7374 local_offset += 1;
7375 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortRcvBECN, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7376 local_offset += 1;
7377 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortXmitTimeCong, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7378 local_offset += 1;
7379 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortMarkFECN, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7380 local_offset += 1;
7381 proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7382 local_offset += 2;
7384 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7385 local_offset += 4;
7386 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7387 local_offset += 4;
7388 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7389 local_offset += 4;
7390 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7391 local_offset += 4;
7392 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7393 local_offset += 4;
7394 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7395 local_offset += 4;
7397 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LocalLinkIntegrityErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7398 local_offset += 1;
7399 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_PortRcvErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7400 local_offset += 1;
7401 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_ExcessiveBufferOverrunErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7402 local_offset += 1;
7403 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkErrorRecovery, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7404 local_offset += 1;
7405 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkDowned, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7406 local_offset += 1;
7407 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_UncorrectableErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7408 local_offset += 1;
7409 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_FMConfigErrors, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7410 local_offset += 1;
7411 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkQualityIndicator, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7412 local_offset += 1;
7413 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_LinkWidthDowngrade, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7414 local_offset += 1;
7415 proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved8, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7416 local_offset += 1;
7417 proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7418 local_offset += 2;
7419 proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7420 local_offset += 4;
7422 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_memoryFootprint, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7423 local_offset += 8;
7424 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_maxAttempts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7425 local_offset += 4;
7426 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_respTimeout, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7427 local_offset += 4;
7428 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_minRespTimeout, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7429 local_offset += 4;
7430 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_maxParallelNodes, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7431 local_offset += 4;
7432 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_pmaBatchSize, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7433 local_offset += 4;
7434 proto_tree_add_item(PMConfig_header_tree, hf_opa_PMConfig_errorClear, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7435 local_offset += 1;
7436 proto_tree_add_item(PMConfig_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7437 local_offset += 3;
7439 return local_offset;
7442 /* Parse MoveFreezeFrame MAD from the Performance Admin class. */
7443 static int parse_MoveFreezeFrame(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
7445 proto_tree *MoveFreezeFrame_header_tree = parentTree;
7446 proto_item *MoveFreezeFrame_old_item;
7447 proto_tree *MoveFreezeFrame_old_tree;
7448 proto_item *MoveFreezeFrame_new_item;
7449 proto_tree *MoveFreezeFrame_new_tree;
7451 int local_offset = *offset;
7453 if (!parentTree)
7454 return *offset;
7456 MoveFreezeFrame_old_item = proto_tree_add_item(MoveFreezeFrame_header_tree, hf_opa_MoveFreezeFrame_old, tvb, local_offset, 16, ENC_NA);
7457 MoveFreezeFrame_old_tree = proto_item_add_subtree(MoveFreezeFrame_old_item, ett_movefreezeframeold);
7458 local_offset = parse_Image(MoveFreezeFrame_old_tree, tvb, &local_offset);
7460 MoveFreezeFrame_new_item = proto_tree_add_item(MoveFreezeFrame_header_tree, hf_opa_MoveFreezeFrame_new, tvb, local_offset, 16, ENC_NA);
7461 MoveFreezeFrame_new_tree = proto_item_add_subtree(MoveFreezeFrame_new_item, ett_movefreezeframenew);
7462 local_offset = parse_Image(MoveFreezeFrame_new_tree, tvb, &local_offset);
7464 return local_offset;
7467 /* Parse GetFocusPorts MAD from the Performance Admin class. */
7468 static int parse_GetFocusPorts(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
7470 proto_tree *GetFocusPorts_header_tree;
7471 proto_item *GetFocusPorts_header_item;
7473 proto_tree *GetFocusPorts_Port_tree;
7474 proto_item *GetFocusPorts_Port_item;
7476 int local_offset = *offset;
7477 unsigned i = 0;
7479 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
7480 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
7482 if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
7483 return *offset;
7485 if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
7486 GetFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetFocusPorts, tvb, local_offset, 64 + 28, ENC_NA);
7487 proto_item_set_text(GetFocusPorts_header_item, "Focus Ports for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
7488 GetFocusPorts_header_tree = proto_item_add_subtree(GetFocusPorts_header_item, ett_getfocusports);
7490 proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_groupName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7491 local_offset += 64;
7492 local_offset = parse_Image(GetFocusPorts_header_tree, tvb, &local_offset);
7493 proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_select, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7494 local_offset += 4;
7495 proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_start, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7496 local_offset += 4;
7497 proto_tree_add_item(GetFocusPorts_header_tree, hf_opa_GetFocusPorts_range, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7498 local_offset += 4;
7500 } else if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
7501 GetFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetFocusPorts, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
7502 GetFocusPorts_header_tree = proto_item_add_subtree(GetFocusPorts_header_item, ett_getfocusports);
7503 for (i = 0; i < records; i++) {
7504 GetFocusPorts_Port_tree = proto_tree_add_subtree_format(GetFocusPorts_header_tree, tvb, local_offset,
7505 PA_HEADER->AttributeOffset * 8, ett_getfocusportsport, &GetFocusPorts_Port_item, "%3u: ", i);
7506 local_offset = parse_Image(GetFocusPorts_Port_tree, tvb, &local_offset);
7508 proto_item_append_text(GetFocusPorts_Port_item, "LID: %04x, Port %u",
7509 tvb_get_ntohl(tvb, local_offset), tvb_get_uint8(tvb, local_offset + 4));
7510 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7511 local_offset += 4;
7512 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7513 local_offset += 1;
7514 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7515 local_offset += 1;
7516 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_mtu, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7517 local_offset += 1;
7518 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_localFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7519 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7520 local_offset += 1;
7521 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_value, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7522 local_offset += 8;
7523 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_nodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7524 local_offset += 8;
7525 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7526 local_offset += 64;
7527 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborLid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7528 local_offset += 4;
7529 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborPortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7530 local_offset += 1;
7531 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7532 local_offset += 3;
7533 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborValue, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7534 local_offset += 8;
7535 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7536 local_offset += 8;
7537 proto_tree_add_item(GetFocusPorts_Port_tree, hf_opa_GetFocusPorts_neighborNodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7538 local_offset += 64;
7542 return local_offset;
7545 /* Parse GetImageInfo MAD from the Performance Admin class. */
7546 static int parse_GetImageInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
7548 proto_tree *GetImageInfo_header_tree = parentTree;
7549 proto_item *GetImageInfo_header_item;
7550 proto_tree *GetImageInfo_SM_tree;
7551 uint32_t numSMs;
7553 int local_offset = *offset;
7555 if (!parentTree)
7556 return *offset;
7558 GetImageInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetImageInfo, tvb, local_offset, 216, ENC_NA);
7559 GetImageInfo_header_tree = proto_item_add_subtree(GetImageInfo_header_item, ett_getimageinfo);
7561 local_offset = parse_Image(GetImageInfo_header_tree, tvb, &local_offset);
7563 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_sweepStart,
7564 tvb, local_offset, 8, ENC_TIME_SECS|ENC_BIG_ENDIAN);
7565 local_offset += 8;
7566 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_sweepDuration, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7567 local_offset += 4;
7568 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numHFIPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7569 local_offset += 2;
7570 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7571 local_offset += 4;
7572 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSwitchNodes, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7573 local_offset += 2;
7574 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSwitchPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7575 local_offset += 4;
7576 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numLinks, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7577 local_offset += 4;
7578 numSMs = tvb_get_ntohl(tvb, local_offset);
7579 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSMs, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7580 local_offset += 4;
7581 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numFailedNodes, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7582 local_offset += 4;
7583 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numFailedPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7584 local_offset += 4;
7585 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSkippedNodes, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7586 local_offset += 4;
7587 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numSkippedPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7588 local_offset += 4;
7589 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_numUnexpectedClearPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7590 local_offset += 4;
7591 proto_tree_add_item(GetImageInfo_header_tree, hf_opa_GetImageInfo_imageInterval, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7592 local_offset += 4;
7594 GetImageInfo_SM_tree = proto_tree_add_subtree(GetImageInfo_header_tree, tvb, local_offset, 16 + 64,
7595 ett_getimageinfosm, NULL, "Primary SM Info");
7596 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7597 local_offset += 4;
7598 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_state, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7599 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_priority, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7600 local_offset += 1;
7601 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7602 local_offset += 1;
7603 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7604 local_offset += 2;
7605 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smPortGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7606 local_offset += 8;
7607 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smNodeDesc, tvb, local_offset, 64, ENC_NA | ENC_ASCII);
7608 local_offset += 64;
7610 if (!numSMs || numSMs > 1) {
7611 GetImageInfo_SM_tree = proto_tree_add_subtree(GetImageInfo_header_tree, tvb, local_offset, 16 + 64,
7612 ett_getimageinfosm, NULL, "Secondary SM Info");
7613 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_lid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7614 local_offset += 4;
7615 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_state, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7616 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_priority, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7617 local_offset += 1;
7618 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7619 local_offset += 1;
7620 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7621 local_offset += 2;
7622 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smPortGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7623 local_offset += 8;
7624 proto_tree_add_item(GetImageInfo_SM_tree, hf_opa_GetImageInfo_smNodeDesc, tvb, local_offset, 64, ENC_NA | ENC_ASCII);
7625 local_offset += 64;
7626 } else {
7627 proto_tree_add_subtree(GetImageInfo_header_tree, tvb, local_offset, 16 + 64,
7628 ett_getimageinfosm, NULL, "No Secondary SM Info");
7629 local_offset += (16 + 64);
7631 return local_offset;
7634 /* Parse GetVFList MAD from the Performance Admin class. */
7635 static int parse_GetVFList(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
7637 proto_item *GetVFList_GroupName_item;
7638 proto_tree *GetVFList_header_tree;
7639 proto_item *GetVFList_header_item;
7641 int local_offset = *offset;
7642 unsigned i;
7644 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
7645 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
7647 if (!parentTree || RMPP->Type != RMPP_DATA ||
7648 (MAD->Method != METHOD_GET_RESP && MAD->Method != METHOD_GETTABLE_RESP)) {
7649 return *offset;
7652 GetVFList_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFList, tvb, local_offset, length, ENC_NA);
7653 GetVFList_header_tree = proto_item_add_subtree(GetVFList_header_item, ett_getvflist);
7654 proto_tree_add_none_format(GetVFList_header_tree, hf_opa_GetVFList, tvb, local_offset, length, "Number of VFs: %u", records);
7656 for (i = 0; i < records; i++) {
7657 GetVFList_GroupName_item = proto_tree_add_item(GetVFList_header_tree, hf_opa_GetVFList_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7658 local_offset += 64;
7659 proto_item_prepend_text(GetVFList_GroupName_item, "%3u: ", i + 1);
7662 return local_offset;
7665 /* Parse GetVFInfo MAD from the Performance Admin class. */
7666 static int parse_GetVFInfo(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
7668 proto_tree *GetVFInfo_header_tree = parentTree;
7669 proto_tree *GetVFInfo_header_item = parentTree;
7671 proto_tree *GetVFInfo_Util_Stats_tree;
7672 proto_item *GetVFInfo_Util_Stats_Buckets_item;
7673 proto_tree *GetVFInfo_Util_Stats_Buckets_tree;
7674 proto_item *GetVFInfo_Util_Stats_Bucket_item;
7676 proto_tree *GetVFInfo_Error_Summary_tree;
7677 proto_tree *GetVFInfo_Error_Integrity_Buckets_tree;
7678 proto_tree *GetVFInfo_Error_Congestion_Buckets_tree;
7679 proto_tree *GetVFInfo_Error_SmaCongestion_Buckets_tree;
7680 proto_tree *GetVFInfo_Error_Bubble_Buckets_tree;
7681 proto_tree *GetVFInfo_Error_Security_Buckets_tree;
7682 proto_tree *GetVFInfo_Error_Routing_Buckets_tree;
7683 proto_item *GetVFInfo_Error_Stats_Integrity_Buckets_item;
7684 proto_item *GetVFInfo_Error_Stats_Congestion_Buckets_item;
7685 proto_item *GetVFInfo_Error_Stats_SmaCongestion_Buckets_item;
7686 proto_item *GetVFInfo_Error_Stats_Bubble_Buckets_item;
7687 proto_item *GetVFInfo_Error_Stats_Security_Buckets_item;
7688 proto_item *GetVFInfo_Error_Stats_Routing_Buckets_item;
7689 proto_item *GetVFInfo_Error_Stats_Bucket_item;
7691 int local_offset = *offset;
7692 unsigned i;
7694 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
7695 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
7697 unsigned util = 100 / PM_UTIL_BUCKETS; /* 0%+ 10%+ 20%+ ... 80%+ 90%+ */
7698 unsigned err = 100 / (PM_ERR_BUCKETS - 1); /* 0%+ 25%+ 50%+ 75%+ 100%+ */
7700 if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1)) {
7701 return *offset;
7704 if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
7705 GetVFInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFInfo, tvb, local_offset, 64 + 24, ENC_NA);
7706 proto_item_set_text(GetVFInfo_header_item, "VFInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
7707 GetVFInfo_header_tree = proto_item_add_subtree(GetVFInfo_header_item, ett_getvfinfo);
7708 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7709 local_offset += 64;
7710 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7711 local_offset += 8;
7713 /* ImageID */
7714 local_offset = parse_Image(GetVFInfo_header_tree, tvb, &local_offset);
7715 return local_offset;
7718 for (i = 0; i < records; i++) {
7719 GetVFInfo_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFInfo, tvb, local_offset, PA_HEADER->AttributeOffset * 8, ENC_NA);
7720 proto_item_set_text(GetVFInfo_header_item, "VFInfo for %s", tvb_get_string_enc(wmem_file_scope(), tvb, local_offset, 64, ENC_ASCII));
7721 GetVFInfo_header_tree = proto_item_add_subtree(GetVFInfo_header_item, ett_getvfinfo);
7723 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7724 local_offset += 64;
7725 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7726 local_offset += 8;
7728 local_offset = parse_Image(GetVFInfo_header_tree, tvb, &local_offset);
7730 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_numPorts, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7731 local_offset += 4;
7733 /* UtilStats */
7734 GetVFInfo_Util_Stats_tree = proto_tree_add_subtree(GetVFInfo_header_tree, tvb, local_offset, 40 + PM_UTIL_BUCKETS * 4,
7735 ett_getvfinfoutilstats, NULL, "Internal Utilization Statistics");
7737 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_totalMBps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7738 local_offset += 8;
7739 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_totalKPps, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7740 local_offset += 8;
7741 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_avgMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7742 local_offset += 4;
7743 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_minMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7744 local_offset += 4;
7745 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_maxMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7746 local_offset += 4;
7747 GetVFInfo_Util_Stats_Buckets_item = proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_numBWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7748 local_offset += 4;
7749 GetVFInfo_Util_Stats_Buckets_tree = proto_item_add_subtree(GetVFInfo_Util_Stats_Buckets_item, ett_getvfinfoutilbuckets);
7750 for (i = 0; i < PM_UTIL_BUCKETS; i++) {
7751 GetVFInfo_Util_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Util_Stats_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7752 proto_item_set_text(GetVFInfo_Util_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * util, tvb_get_ntohl(tvb, local_offset));
7753 local_offset += 4;
7756 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_avgKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7757 local_offset += 4;
7758 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_minKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7759 local_offset += 4;
7760 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_maxKPps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7761 local_offset += 4;
7762 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_pmaFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7763 local_offset += 2;
7764 proto_tree_add_item(GetVFInfo_Util_Stats_tree, hf_opa_GetVFInfo_topoFailedPorts, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7765 local_offset += 2;
7767 /* ErrorStats */
7768 GetVFInfo_Error_Summary_tree = proto_tree_add_subtree(GetVFInfo_header_tree, tvb, local_offset, 40 + PM_ERR_BUCKETS * 24,
7769 ett_getvfinfoerrorsummary, NULL, "Internal Error Statistics");
7771 GetVFInfo_Error_Stats_Integrity_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_integrityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7772 local_offset += 4;
7773 GetVFInfo_Error_Stats_Congestion_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_congestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7774 local_offset += 4;
7775 GetVFInfo_Error_Stats_SmaCongestion_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_smaCongestionErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7776 local_offset += 4;
7777 GetVFInfo_Error_Stats_Bubble_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_bubbleErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7778 local_offset += 4;
7779 GetVFInfo_Error_Stats_Security_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_securityErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7780 local_offset += 4;
7781 GetVFInfo_Error_Stats_Routing_Buckets_item = proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_routingErrors, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7782 local_offset += 4;
7784 proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_utilizationPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7785 local_offset += 2;
7786 proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_GetVFInfo_discardsPct10, tvb, local_offset, 2, ENC_BIG_ENDIAN);
7787 local_offset += 2;
7788 proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7789 local_offset += 4;
7790 proto_tree_add_item(GetVFInfo_Error_Summary_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7791 local_offset += 8;
7793 GetVFInfo_Error_Integrity_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Integrity_Buckets_item, ett_getvfinfoerrintegritybucket);
7794 GetVFInfo_Error_Congestion_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Congestion_Buckets_item, ett_getvfinfoerrcongestionbucket);
7795 GetVFInfo_Error_SmaCongestion_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_SmaCongestion_Buckets_item, ett_getvfinfoerrsmacongestionbucket);
7796 GetVFInfo_Error_Bubble_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Bubble_Buckets_item, ett_getvfinfoerrbubblebucket);
7797 GetVFInfo_Error_Security_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Security_Buckets_item, ett_getvfinfoerrsecuritybucket);
7798 GetVFInfo_Error_Routing_Buckets_tree = proto_item_add_subtree(GetVFInfo_Error_Stats_Routing_Buckets_item, ett_getvfinfoerrroutingbucket);
7800 for (i = 0; i < PM_ERR_BUCKETS; i++) {
7801 GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Integrity_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7802 proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7803 local_offset += 4;
7804 GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Congestion_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7805 proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7806 local_offset += 4;
7807 GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_SmaCongestion_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7808 proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7809 local_offset += 4;
7810 GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Bubble_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7811 proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7812 local_offset += 4;
7813 GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Security_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7814 proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7815 local_offset += 4;
7816 GetVFInfo_Error_Stats_Bucket_item = proto_tree_add_item(GetVFInfo_Error_Routing_Buckets_tree, hf_opa_GetVFInfo_BWBuckets, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7817 proto_item_set_text(GetVFInfo_Error_Stats_Bucket_item, "Bucket %u: %3u%%+: %u", i, i * err, tvb_get_ntohl(tvb, local_offset));
7818 local_offset += 4;
7820 /* End internalErrors */
7821 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_maxInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7822 local_offset += 1;
7823 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_minInternalRate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7824 local_offset += 1;
7825 proto_tree_add_item(GetVFInfo_header_tree, hf_opa_GetVFInfo_maxInternalMBps, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7826 local_offset += 4;
7829 return local_offset;
7832 /* Parse GetVFConfig MAD from the Performance Admin class. */
7833 static int parse_GetVFConfig(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
7835 proto_tree *GetVFConfig_header_tree;
7836 proto_item *GetVFConfig_header_item;
7837 proto_item *GetVFConfig_Port_item;
7838 proto_tree *GetVFConfig_Port_tree;
7840 int local_offset = *offset;
7841 unsigned i;
7843 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
7844 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
7846 if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
7847 return *offset;
7849 if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
7850 GetVFConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFConfig, tvb, local_offset, 64 + 24, ENC_NA);
7851 proto_item_set_text(GetVFConfig_header_item, "VF Config");
7852 GetVFConfig_header_tree = proto_item_add_subtree(GetVFConfig_header_item, ett_getvfconfig);
7853 proto_tree_add_item(GetVFConfig_header_tree, hf_opa_GetVFConfig_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7854 local_offset += 64;
7855 proto_tree_add_item(GetVFConfig_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7856 local_offset += 8;
7857 local_offset = parse_Image(GetVFConfig_header_tree, tvb, &local_offset);
7858 } else if (MAD->Method == METHOD_GETTABLE_RESP || MAD->Method == METHOD_GET_RESP) {
7859 GetVFConfig_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFConfig, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
7860 proto_item_set_text(GetVFConfig_header_item, "VF Config");
7861 GetVFConfig_header_tree = proto_item_add_subtree(GetVFConfig_header_item, ett_getvfconfig);
7862 for (i = 0; i < records; i++) {
7863 GetVFConfig_Port_tree = proto_tree_add_subtree_format(GetVFConfig_header_tree, tvb, local_offset,
7864 PA_HEADER->AttributeOffset * 8, ett_getvfconfigport, &GetVFConfig_Port_item, "%3u: ", i);
7865 local_offset = parse_Image(GetVFConfig_Port_tree, tvb, &local_offset);
7866 proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_NodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7867 local_offset += 8;
7868 proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7869 local_offset += 64;
7870 proto_item_append_text(GetVFConfig_Port_item, "LID: 0x%04x, Port: %u", tvb_get_ntohl(tvb, local_offset), tvb_get_uint8(tvb, local_offset + 4));
7871 proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_NodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7872 local_offset += 4;
7873 proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_GetVFConfig_Port_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7874 local_offset += 1;
7875 proto_tree_add_item(GetVFConfig_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7876 local_offset += 3;
7880 return local_offset;
7883 /* Parse GetVFPortCounters MAD from the Performance Admin class. */
7884 static int parse_GetVFPortCounters(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD)
7886 proto_tree *GetVFPortCounters_header_tree;
7887 proto_item *GetVFPortCounters_header_item;
7889 int local_offset = *offset;
7891 if (!parentTree)
7892 return *offset;
7894 GetVFPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFPortCounters, tvb, local_offset, 224, ENC_NA);
7895 GetVFPortCounters_header_tree = proto_item_add_subtree(GetVFPortCounters_header_item, ett_getvfportcounters);
7897 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7898 local_offset += 4;
7899 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7900 local_offset += 1;
7901 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7902 local_offset += 3;
7904 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_flags, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7905 local_offset += 4;
7906 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved32, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7907 local_offset += 4;
7908 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7909 local_offset += 8;
7911 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7912 local_offset += 64;
7913 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7914 local_offset += 8;
7916 local_offset = parse_Image(GetVFPortCounters_header_tree, tvb, &local_offset);
7918 if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
7919 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7920 local_offset += 8;
7921 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7922 local_offset += 8;
7923 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7924 local_offset += 8;
7925 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvPkts, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7926 local_offset += 8;
7927 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitDiscards, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7928 local_offset += 8;
7929 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_SwPortVFCongestion, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7930 local_offset += 8;
7931 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitWait, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7932 local_offset += 8;
7933 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7934 local_offset += 8;
7935 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvBECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7936 local_offset += 8;
7937 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitTimeCong, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7938 local_offset += 8;
7939 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitWastedBW, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7940 local_offset += 8;
7941 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFXmitWaitData, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7942 local_offset += 8;
7943 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFRcvBubble, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7944 local_offset += 8;
7945 proto_tree_add_item(GetVFPortCounters_header_tree, hf_opa_GetVFPortCounters_PortVFMarkFECN, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7946 local_offset += 8;
7947 } else {
7948 local_offset += 112;
7951 return local_offset;
7954 /* Parse ClearVFPortCounters MAD from the Performance Admin class. */
7955 static int parse_ClearVFPortCounters(proto_tree *parentTree, tvbuff_t *tvb, int *offset)
7957 proto_tree *ClearVFPortCounters_header_tree;
7958 proto_item *ClearVFPortCounters_header_item;
7960 int local_offset = *offset;
7962 if (!parentTree)
7963 return *offset;
7965 ClearVFPortCounters_header_item = proto_tree_add_item(parentTree, hf_opa_ClearVFPortCounters, tvb, local_offset, 92, ENC_NA);
7966 ClearVFPortCounters_header_tree = proto_item_add_subtree(ClearVFPortCounters_header_item, ett_clearvfportcounters);
7968 proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_ClearVFPortCounters_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
7969 local_offset += 4;
7970 proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_ClearVFPortCounters_PortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
7971 local_offset += 1;
7972 proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
7973 local_offset += 3;
7974 proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7975 local_offset += 8;
7977 proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_ClearVFPortCounters_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
7978 local_offset += 64;
7979 proto_tree_add_item(ClearVFPortCounters_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
7980 local_offset += 8;
7982 proto_tree_add_bitmask(ClearVFPortCounters_header_tree, tvb, local_offset,
7983 hf_opa_ClearVFPortCounters_CounterSelectMask, ett_clearvfportcounters_counterselectmask,
7984 _ClearVFPortCounters_CounterSelectMask, ENC_BIG_ENDIAN);
7985 local_offset += 4;
7987 return local_offset;
7990 /* Parse GetVFFocusPorts MAD from the Performance Admin class. */
7991 static int parse_GetVFFocusPorts(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
7993 proto_tree *GetVFFocusPorts_header_tree;
7994 proto_item *GetVFFocusPorts_header_item;
7996 proto_tree *GetVFFocusPorts_Port_tree;
7998 int local_offset = *offset;
7999 unsigned i;
8001 unsigned length = tvb_captured_length_remaining(tvb, local_offset);
8002 unsigned records = (PA_HEADER->AttributeOffset ? length / (PA_HEADER->AttributeOffset * 8) : 0);
8004 if (!parentTree || (!pref_attempt_rmpp_defragment && RMPP->Type == RMPP_DATA && RMPP->SegmentNumber != 1))
8005 return *offset;
8007 if (MAD->Method == METHOD_GET || MAD->Method == METHOD_GETTABLE) {
8008 GetVFFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFFocusPorts, tvb, local_offset, 130, ENC_NA);
8009 GetVFFocusPorts_header_tree = proto_item_add_subtree(GetVFFocusPorts_header_item, ett_getvffocusports);
8011 proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_vfName, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
8012 local_offset += 64;
8013 proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_reserved64, tvb, local_offset, 8, ENC_BIG_ENDIAN);
8014 local_offset += 8;
8015 local_offset = parse_Image(GetVFFocusPorts_header_tree, tvb, &local_offset);
8016 proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_select, tvb, local_offset, 4, ENC_BIG_ENDIAN);
8017 local_offset += 4;
8018 proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_start, tvb, local_offset, 4, ENC_BIG_ENDIAN);
8019 local_offset += 4;
8020 proto_tree_add_item(GetVFFocusPorts_header_tree, hf_opa_GetVFFocusPorts_range, tvb, local_offset, 4, ENC_BIG_ENDIAN);
8021 local_offset += 4;
8022 } else if (MAD->Method == METHOD_GET_RESP || MAD->Method == METHOD_GETTABLE_RESP) {
8023 GetVFFocusPorts_header_item = proto_tree_add_item(parentTree, hf_opa_GetVFFocusPorts, tvb, local_offset, records * PA_HEADER->AttributeOffset * 8, ENC_NA);
8024 GetVFFocusPorts_header_tree = proto_item_add_subtree(GetVFFocusPorts_header_item, ett_getvffocusports);
8025 for (i = 0; i < records; i++) {
8026 GetVFFocusPorts_Port_tree = proto_tree_add_subtree_format(GetVFFocusPorts_header_tree,
8027 tvb, local_offset, PA_HEADER->AttributeOffset * 8, ett_getvffocusportsport, NULL,
8028 "%3u: LID: 0x%04x, Port: %u",
8029 i, tvb_get_ntohl(tvb, local_offset), tvb_get_uint8(tvb, local_offset + 4));
8030 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_nodeLID, tvb, local_offset, 4, ENC_BIG_ENDIAN);
8031 local_offset += 4;
8032 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_portNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
8033 local_offset += 1;
8034 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_rate, tvb, local_offset, 1, ENC_BIG_ENDIAN);
8035 local_offset += 1;
8036 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_mtu, tvb, local_offset, 1, ENC_BIG_ENDIAN);
8037 local_offset += 1;
8038 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_localFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
8039 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborFlags, tvb, local_offset, 1, ENC_BIG_ENDIAN);
8040 local_offset += 1;
8041 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_value, tvb, local_offset, 8, ENC_BIG_ENDIAN);
8042 local_offset += 8;
8043 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_nodeGUID, tvb, local_offset, 8, ENC_BIG_ENDIAN);
8044 local_offset += 8;
8045 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_nodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
8046 local_offset += 64;
8047 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborLid, tvb, local_offset, 4, ENC_BIG_ENDIAN);
8048 local_offset += 4;
8049 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborPortNumber, tvb, local_offset, 1, ENC_BIG_ENDIAN);
8050 local_offset += 1;
8051 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_reserved24, tvb, local_offset, 3, ENC_BIG_ENDIAN);
8052 local_offset += 3;
8053 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborValue, tvb, local_offset, 8, ENC_BIG_ENDIAN);
8054 local_offset += 8;
8055 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborGuid, tvb, local_offset, 8, ENC_BIG_ENDIAN);
8056 local_offset += 8;
8057 proto_tree_add_item(GetVFFocusPorts_Port_tree, hf_opa_GetVFFocusPorts_neighborNodeDesc, tvb, local_offset, 64, ENC_ASCII | ENC_NA);
8058 local_offset += 64;
8062 return local_offset;
8064 static bool parse_PA_Attribute(proto_tree *parentTree, tvbuff_t *tvb, int *offset, MAD_t *MAD, RMPP_t *RMPP, PA_HEADER_t *PA_HEADER)
8066 int local_offset = *offset;
8068 switch (MAD->AttributeID) {
8069 case PA_ATTR_ID_CLASS_PORTINFO:
8070 local_offset = parse_ClassPortInfo(parentTree, tvb, &local_offset, MAD);
8071 break;
8072 case PA_ATTR_ID_GET_GRP_LIST:
8073 local_offset = parse_GetGroupList(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8074 break;
8075 case PA_ATTR_ID_GET_GRP_INFO:
8076 local_offset = parse_GetGroupInfo(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8077 break;
8078 case PA_ATTR_ID_GET_GRP_CFG:
8079 local_offset = parse_GetGroupConfig(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8080 break;
8081 case PA_ATTR_ID_GET_PORT_CTRS:
8082 local_offset = parse_GetPortCounters(parentTree, tvb, &local_offset, MAD);
8083 break;
8084 case PA_ATTR_ID_CLR_PORT_CTRS:
8085 local_offset = parse_ClearPortCounters(parentTree, tvb, &local_offset);
8086 break;
8087 case PA_ATTR_ID_CLR_ALL_PORT_CTRS:
8088 local_offset = parse_ClearAllPortCounters(parentTree, tvb, &local_offset);
8089 break;
8090 case PA_ATTR_ID_GET_PM_CFG:
8091 local_offset = parse_PMConfig(parentTree, tvb, &local_offset);
8092 break;
8093 case PA_ATTR_ID_FREEZE_IMAGE:
8094 local_offset = parse_Image(parentTree, tvb, &local_offset);
8095 break;
8096 case PA_ATTR_ID_RELEASE_IMAGE:
8097 local_offset = parse_Image(parentTree, tvb, &local_offset);
8098 break;
8099 case PA_ATTR_ID_RENEW_IMAGE:
8100 local_offset = parse_Image(parentTree, tvb, &local_offset);
8101 break;
8102 case PA_ATTR_ID_GET_FOCUS_PORTS:
8103 local_offset = parse_GetFocusPorts(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8104 break;
8105 case PA_ATTR_ID_GET_IMAGE_INFO:
8106 local_offset = parse_GetImageInfo(parentTree, tvb, &local_offset);
8107 break;
8108 case PA_ATTR_ID_MOVE_FREEZE_FRAME:
8109 local_offset = parse_MoveFreezeFrame(parentTree, tvb, &local_offset);
8110 break;
8111 case PA_ATTR_ID_GET_VF_LIST:
8112 local_offset = parse_GetVFList(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8113 break;
8114 case PA_ATTR_ID_GET_VF_INFO:
8115 local_offset = parse_GetVFInfo(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8116 break;
8117 case PA_ATTR_ID_GET_VF_CONFIG:
8118 local_offset = parse_GetVFConfig(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8119 break;
8120 case PA_ATTR_ID_GET_VF_PORT_CTRS:
8121 local_offset = parse_GetVFPortCounters(parentTree, tvb, &local_offset, MAD);
8122 break;
8123 case PA_ATTR_ID_CLR_VF_PORT_CTRS:
8124 local_offset = parse_ClearVFPortCounters(parentTree, tvb, &local_offset);
8125 break;
8126 case PA_ATTR_ID_GET_VF_FOCUS_PORTS:
8127 local_offset = parse_GetVFFocusPorts(parentTree, tvb, &local_offset, MAD, RMPP, PA_HEADER);
8128 break;
8129 default:
8130 return false;
8133 *offset = local_offset;
8134 return true;
8137 /* Parse the Method from the MAD Common Header. */
8138 static void label_PA_Method(proto_item *PAItem, MAD_t *MAD, packet_info *pinfo)
8140 const char *label = val_to_str_const(MAD->Method, PA_Methods, "(Unknown Perf Method!)");
8141 proto_item_append_text(PAItem, " %s", label);
8142 col_append_str(pinfo->cinfo, COL_INFO, label);
8145 /* Parse the Attribute from the MAD Common Header */
8146 static void label_PA_Attribute(proto_item *PAItem, MAD_t *MAD, packet_info *pinfo)
8148 const char *label = val_to_str_const(MAD->AttributeID, PA_Attributes, "Attribute (Unknown Perf Attribute!)");
8149 proto_item_append_text(PAItem, "%s", &label[11]);
8150 col_append_str(pinfo->cinfo, COL_INFO, &label[11]);
8152 /* Parse the PA_HEADER
8153 * IN: parentTree to add the dissection to
8154 * IN: tvb - the data buffer from wireshark
8155 * IN/OUT: The current and updated offset */
8156 static bool parse_PA_HEADER(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset, MAD_t *MAD, PA_HEADER_t *PA_HEADER)
8158 int local_offset = *offset;
8159 proto_item *PA_HEADER_header_item;
8160 proto_tree *PA_HEADER_header_tree;
8162 PA_HEADER_header_item = proto_tree_add_item(parentTree, hf_opa_pa, tvb, local_offset, 20, ENC_NA);
8163 PA_HEADER_header_tree = proto_item_add_subtree(PA_HEADER_header_item, ett_pa);
8165 PA_HEADER->SM_Key = tvb_get_ntoh64(tvb, local_offset);
8166 proto_tree_add_item(PA_HEADER_header_tree, hf_opa_pa_sm_key, tvb, local_offset, 8, ENC_BIG_ENDIAN);
8167 local_offset += 8;
8168 PA_HEADER->AttributeOffset = tvb_get_ntohs(tvb, local_offset);
8169 proto_tree_add_item(PA_HEADER_header_tree, hf_opa_pa_attribute_offset, tvb, local_offset, 2, ENC_BIG_ENDIAN);
8170 local_offset += 2;
8171 PA_HEADER->Reserved = tvb_get_ntohs(tvb, local_offset);
8172 proto_tree_add_item(PA_HEADER_header_tree, hf_opa_reserved16, tvb, local_offset, 2, ENC_BIG_ENDIAN);
8173 local_offset += 2;
8174 PA_HEADER->ComponentMask = tvb_get_ntoh64(tvb, local_offset);
8175 proto_tree_add_item(PA_HEADER_header_tree, hf_opa_pa_component_mask, tvb, local_offset, 8, ENC_BIG_ENDIAN);
8176 local_offset += 8;
8178 label_PA_Method(PA_HEADER_header_item, MAD, pinfo);
8179 label_PA_Attribute(PA_HEADER_header_item, MAD, pinfo);
8181 *offset = local_offset;
8182 return true;
8184 /* Parse Performance Administration */
8185 static void parse_PERFADMN(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
8187 MAD_t MAD;
8188 RMPP_t RMPP;
8189 PA_HEADER_t PA_HEADER;
8190 fragment_head *frag_head = NULL;
8191 tvbuff_t *old_tvb = NULL;
8192 int old_offset;
8193 bool parent_was_opa_fe = proto_is_frame_protocol(pinfo->layers, "opa.fe");
8195 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
8196 return;
8198 if (!parse_RMPP(parentTree, pinfo, tvb, offset, &RMPP)) {
8199 return;
8201 if (!parse_PA_HEADER(parentTree, pinfo, tvb, offset, &MAD, &PA_HEADER)) {
8202 return;
8204 if ((!pref_parse_on_mad_status_error && MAD.Status) ||
8205 RMPP.Type == RMPP_ACK) {
8206 *offset += tvb_captured_length_remaining(tvb, *offset);
8207 return;
8210 if (!parent_was_opa_fe && pref_attempt_rmpp_defragment
8211 && (RMPP.resptime_flags & RMPP_FLAG_ACTIVE_MASK) && (RMPP.Type == RMPP_DATA)
8212 && !((RMPP.resptime_flags & RMPP_FLAG_FIRST_MASK)
8213 && (RMPP.resptime_flags & RMPP_FLAG_LAST_MASK))) {
8215 frag_head = fragment_add_seq_check(&opa_mad_rmpp_reassembly_table,
8216 tvb, *offset, pinfo, (uint32_t)MAD.TransactionID, NULL, RMPP.SegmentNumber - 1,
8217 ((RMPP.resptime_flags & RMPP_FLAG_LAST_MASK) ?
8218 RMPP.PayloadLength - 20 : (uint32_t)tvb_captured_length_remaining(tvb, *offset)),
8219 (bool)!(RMPP.resptime_flags & RMPP_FLAG_LAST_MASK));
8220 /* Back up tvb & offset */
8221 old_tvb = tvb;
8222 old_offset = *offset;
8223 /* Create new tvb from reassembled data */
8224 tvb = process_reassembled_data(old_tvb, old_offset, pinfo, "Reassembled RMPP Packet",
8225 frag_head, &opa_rmpp_frag_items, NULL, parentTree);
8226 if (tvb == NULL) {
8227 return;
8229 *offset = 0;
8231 if (!parse_PA_Attribute(parentTree, tvb, offset, &MAD, &RMPP, &PA_HEADER)) {
8232 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
8233 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
8234 *offset += tvb_captured_length_remaining(tvb, *offset);
8235 return;
8238 /* Parse Vendor Specific Management Packets */
8239 /* TBD: Replace with dissector table to call other possible dissectors */
8240 static void parse_VENDOR_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
8242 MAD_t MAD;
8243 RMPP_t RMPP;
8245 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
8246 return;
8248 if (value_is_in_range(global_mad_vendor_class, MAD.MgmtClass)) {
8249 /* Vendor MAD 0x09 to 0x0F does NOT have an RMPP header */
8251 } else if (value_is_in_range(global_mad_vendor_rmpp_class, MAD.MgmtClass)) {
8252 /* Vendor MAD 0x30 to 0x4F has an RMPP header */
8253 if (!parse_RMPP(parentTree, pinfo, tvb, offset, &RMPP)) {
8254 return;
8257 if (!pref_parse_on_mad_status_error && MAD.Status) {
8258 *offset += tvb_captured_length_remaining(tvb, *offset);
8259 return;
8261 proto_tree_add_item(parentTree, hf_opa_vendor, tvb, *offset, -1, ENC_NA);
8263 col_append_str(pinfo->cinfo, COL_INFO, "Vendor: (Dissector Not Implemented)");
8265 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
8266 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
8268 *offset += tvb_captured_length_remaining(tvb, *offset);
8269 return;
8272 /* Parse Application Specific Management Packets */
8273 /* TBD: Replace with dissector table to call other possible dissectors */
8274 static void parse_APPLICATION_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
8276 MAD_t MAD;
8278 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
8279 return;
8281 if (!pref_parse_on_mad_status_error && MAD.Status) {
8282 *offset += tvb_captured_length_remaining(tvb, *offset);
8283 return;
8285 proto_tree_add_item(parentTree, hf_opa_application, tvb, *offset, -1, ENC_NA);
8287 col_append_str(pinfo->cinfo, COL_INFO, "Application: (Dissector Not Implemented)");
8289 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
8290 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
8292 *offset += tvb_captured_length_remaining(tvb, *offset);
8293 return;
8296 /* Parse Reserved Management Packets --- ERROR */
8297 static void parse_RESERVED_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
8299 MAD_t MAD;
8301 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
8302 return;
8304 if (!pref_parse_on_mad_status_error && MAD.Status) {
8305 *offset += tvb_captured_length_remaining(tvb, *offset);
8306 return;
8308 proto_tree_add_item(parentTree, hf_opa_reservedmclass, tvb, *offset, -1, ENC_NA);
8310 col_append_str(pinfo->cinfo, COL_INFO, "Reserved: (Dissector Not Implemented)");
8312 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
8313 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
8315 *offset += tvb_captured_length_remaining(tvb, *offset);
8316 return;
8319 /* Parse Unknown Management Packets --- WARNING */
8320 /* TBD: Replace with dissector table to call other possible dissectors */
8321 static void parse_UNKNOWN_MANAGEMENT(proto_tree *parentTree, packet_info *pinfo, tvbuff_t *tvb, int *offset)
8323 MAD_t MAD;
8325 if (!parse_MAD_Common(parentTree, pinfo, tvb, offset, &MAD)) {
8326 return;
8328 if (!pref_parse_on_mad_status_error && MAD.Status) {
8329 *offset += tvb_captured_length_remaining(tvb, *offset);
8330 return;
8332 proto_tree_add_item(parentTree, hf_opa_unknown, tvb, *offset, -1, ENC_NA);
8334 col_append_str(pinfo->cinfo, COL_INFO, "Unknown: (Dissector Not Implemented)");
8336 expert_add_info_format(pinfo, NULL, &ei_opa_mad_no_attribute_dissector,
8337 "Attribute Dissector Not Implemented (0x%x)", MAD.AttributeID);
8339 *offset += tvb_captured_length_remaining(tvb, *offset);
8340 return;
8343 /* Main OPA MAD dissector */
8344 static int dissect_opa_mad(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
8346 int offset = 0; /* Current Offset */
8347 uint8_t management_class;
8348 uint16_t etype, reserved;
8349 dissector_handle_t dissector_found = NULL;
8350 bool parent_was_opa_fe = proto_is_frame_protocol(pinfo->layers, "opa.fe");
8352 col_set_str(pinfo->cinfo, COL_PROTOCOL, "Omni-Path");
8353 col_clear_fence(pinfo->cinfo, COL_INFO);
8355 /* management datagrams are determined by the source/destination QPs */
8356 if (pinfo->srcport == 0 || pinfo->srcport == 1 || pinfo->destport == 0
8357 || pinfo->destport == 1 || parent_was_opa_fe) {
8358 management_class = tvb_get_uint8(tvb, offset + 1);
8359 if (value_is_in_range(global_mad_vendor_class, management_class) ||
8360 value_is_in_range(global_mad_vendor_rmpp_class, management_class)) {
8361 /* parse vendor specific */
8362 parse_VENDOR_MANAGEMENT(tree, pinfo, tvb, &offset);
8363 } else if (value_is_in_range(global_mad_application_class, management_class)) {
8364 /* parse application specific */
8365 parse_APPLICATION_MANAGEMENT(tree, pinfo, tvb, &offset);
8366 } else if (value_is_in_range(global_mad_reserved_class, management_class)) {
8367 /* parse reserved classes */
8368 parse_RESERVED_MANAGEMENT(tree, pinfo, tvb, &offset);
8369 } else if (value_is_in_range(global_mad_opa_class, management_class)) {
8370 switch (management_class) {
8371 case SUBN_LID_ROUTED: /* parse subn man lid routed */
8372 parse_SUBN_LID_ROUTED(tree, pinfo, tvb, &offset);
8373 break;
8374 case SUBN_DIRECTED_ROUTE: /* parse subn directed route */
8375 parse_SUBN_DIRECTED_ROUTE(tree, pinfo, tvb, &offset);
8376 break;
8377 case SUBNADMN: /* parse sub admin */
8378 parse_SUBNADMN(tree, pinfo, tvb, &offset);
8379 break;
8380 case PERFADMN:
8381 parse_PERFADMN(tree, pinfo, tvb, &offset);
8382 break;
8383 case PERF: /* parse performance */
8384 parse_PERF(tree, pinfo, tvb, &offset);
8385 break;
8386 default:
8387 parse_UNKNOWN_MANAGEMENT(tree, pinfo, tvb, &offset);
8388 break;
8390 } else {
8391 /* parse Unknown classes */
8392 parse_UNKNOWN_MANAGEMENT(tree, pinfo, tvb, &offset);
8394 } else { /* Normal Data Packet - Parse as such */
8395 etype = tvb_get_ntohs(tvb, offset);
8396 reserved = tvb_get_ntohs(tvb, offset + 2);
8397 dissector_found = dissector_get_uint_handle(ethertype_dissector_table, etype);
8398 if (dissector_found != NULL && (reserved == 0)) {
8399 proto_tree_add_item(tree, hf_opa_etype, tvb, offset, 2, ENC_BIG_ENDIAN);
8400 offset += 2;
8401 proto_tree_add_item(tree, hf_opa_etype_reserved16, tvb, offset, 2, ENC_BIG_ENDIAN);
8402 offset += 2;
8404 call_dissector(dissector_found, tvb_new_subset_remaining(tvb, offset), pinfo, tree);
8407 return tvb_captured_length(tvb);
8410 static void opa_mad_init(void)
8412 reassembly_table_init(&opa_mad_rmpp_reassembly_table,
8413 &addresses_ports_reassembly_table_functions);
8415 static void opa_mad_cleanup(void)
8417 reassembly_table_destroy(&opa_mad_rmpp_reassembly_table);
8419 void proto_register_opa_mad(void)
8421 module_t *opa_mad_module;
8422 expert_module_t *expert_opa_mad;
8424 static hf_register_info hf[] = {
8425 { &hf_opa_reserved64, {
8426 "Reserved (64 bits)", "opa.reserved64",
8427 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8429 { &hf_opa_reserved32, {
8430 "Reserved (32 bits)", "opa.reserved",
8431 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8433 { &hf_opa_reserved24, {
8434 "Reserved (24 bits)", "opa.reserved",
8435 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
8437 { &hf_opa_reserved16, {
8438 "Reserved (16 bits)", "opa.reserved",
8439 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8441 { &hf_opa_reserved8, {
8442 "Reserved (8 bits)", "opa.reserved",
8443 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8445 /* Omni-Path*/
8446 { &hf_opa_etype, {
8447 "Ethertype", "opa.etype",
8448 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8450 { &hf_opa_etype_reserved16, {
8451 "Reserved (16 bits)", "opa.etype.reserved",
8452 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8455 /* SM - Lid Routed*/
8456 { &hf_opa_sm_lid, {
8457 "Subnet Management (LID Routed)", "opa.sm.lid",
8458 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8460 { &hf_opa_sm_m_key, {
8461 "M_Key", "opa.sm.lid.mkey",
8462 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8465 /* SM - Directed Route */
8466 { &hf_opa_sm_dr, {
8467 "Subnet Management (Directed Route)", "opa.sm.dr",
8468 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8470 { &hf_opa_sm_dr_slid, {
8471 "DrSLID", "opa.sm.dr.slid",
8472 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8474 { &hf_opa_sm_dr_dlid, {
8475 "DrDLID", "opa.sm.dr.dlid",
8476 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8478 { &hf_opa_sm_dr_initial_path, {
8479 "Initial Path", "opa.sm.dr.initialpath",
8480 FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
8482 { &hf_opa_sm_dr_return_path, {
8483 "Return Path", "opa.sm.dr.returnpath",
8484 FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
8486 { &hf_opa_sm_dr_reserved64, {
8487 "Reserved (64 bits)", "opa.sm.dr.reserved",
8488 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8491 /* SA MAD Header */
8492 { &hf_opa_sa, {
8493 "Subnet Administration Header", "opa.sa",
8494 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8496 { &hf_opa_sa_sm_key, {
8497 "SM_Key (Verification Key)", "opa.sa.smkey",
8498 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8500 { &hf_opa_sa_attribute_offset, {
8501 "Attribute Offset", "opa.sa.attributeoffset",
8502 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8504 { &hf_opa_sa_component_mask, {
8505 "Component Mask", "opa.sa.componentmask",
8506 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8509 /* PM MAD Header */
8510 { &hf_opa_pm, {
8511 "Performance Management", "opa.pm",
8512 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8515 /* PA MAD Header */
8516 { &hf_opa_pa, {
8517 "Performance Administration Header", "opa.pa",
8518 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8520 { &hf_opa_pa_sm_key, {
8521 "SM_Key (Verification Key)", "opa.pa.smkey",
8522 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8524 { &hf_opa_pa_attribute_offset, {
8525 "Attribute Offset", "opa.pa.attributeoffset",
8526 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8528 { &hf_opa_pa_component_mask, {
8529 "Component Mask", "opa.pa.componentmask",
8530 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8533 /* Other MAD Headers */
8534 { &hf_opa_vendor, {
8535 "Vendor MAD Header", "opa.vendor",
8536 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8538 { &hf_opa_application, {
8539 "Application MAD Header", "opa.application",
8540 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8542 { &hf_opa_reservedmclass, {
8543 "Reserved MAD Header", "opa.reservedmclass",
8544 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8546 { &hf_opa_unknown, {
8547 "Unknown MAD Header", "opa.unknown",
8548 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8551 /* MAD Header */
8552 { &hf_opa_mad, {
8553 "MAD Header - Common Management Datagram", "opa.mad.header",
8554 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8556 { &hf_opa_mad_base_version, {
8557 "Base Version", "opa.mad.baseversion",
8558 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8560 { &hf_opa_mad_mgmt_class, {
8561 "Management Class", "opa.mad.mgmtclass",
8562 FT_UINT8, BASE_HEX | BASE_EXT_STRING, &MAD_mgmt_names_ext, 0x0, NULL, HFILL }
8564 { &hf_opa_mad_class_version, {
8565 "Class Version", "opa.mad.classversion",
8566 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8568 { &hf_opa_mad_method, {
8569 "Method", "opa.mad.method",
8570 FT_UINT8, BASE_HEX, VALS(Methods), 0x0, NULL, HFILL }
8572 { &hf_opa_mad_status, {
8573 "Status", "opa.mad.status",
8574 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8576 { &hf_opa_mad_status_DR_D, {
8577 "Direction", "opa.mad.dr.direction",
8578 FT_UINT16, BASE_HEX, NULL, 0x8000, NULL, HFILL }
8580 { &hf_opa_mad_status_DR_status, {
8581 "Status", "opa.mad.status",
8582 FT_UINT16, BASE_HEX, NULL, 0x7FFF, NULL, HFILL }
8584 { &hf_opa_mad_status_DR_Hop_Pointer, {
8585 "Hop Pointer", "opa.mad.dr.hoppointer",
8586 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8588 { &hf_opa_mad_status_DR_Hop_Count, {
8589 "Hop Counter", "opa.mad.dr.hopcounter",
8590 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8592 { &hf_opa_mad_status_NM_ClassSpecific, {
8593 "Class Specific", "opa.mad.status.classspecific",
8594 FT_UINT16, BASE_HEX, NULL, 0xFF00, NULL, HFILL }
8596 { &hf_opa_mad_status_NM_reserved1, {
8597 "Reserved (3 Bits)", "opa.mad.status.reserved",
8598 FT_UINT16, BASE_HEX, NULL, 0x00E0, NULL, HFILL }
8600 { &hf_opa_mad_status_NM_InvalidField, {
8601 "Invalid Field", "opa.mad.status.invalidfield",
8602 FT_UINT16, BASE_HEX, VALS(MAD_Status_InvalidField), 0x001C, NULL, HFILL }
8604 { &hf_opa_mad_status_NM_RedirectRqrd, {
8605 "Redirect Required", "opa.mad.status.redirectrqrd",
8606 FT_BOOLEAN, 16, TFS(&tfs_redirect_no_redirect), 0x0002, NULL, HFILL }
8608 { &hf_opa_mad_status_NM_Busy, {
8609 "Busy", "opa.mad.status.busy",
8610 FT_BOOLEAN, 16, TFS(&tfs_busy_not_busy), 0x0001, NULL, HFILL }
8612 { &hf_opa_mad_transaction_id, {
8613 "Transaction ID", "opa.mad.transactionid",
8614 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8616 { &hf_opa_mad_attribute_id, {
8617 "Attribute ID", "opa.mad.attributeid",
8618 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8620 /* MAD Header - Attribute Modifier */
8621 { &hf_opa_attribute_modifier, {
8622 "Attribute Modifier", "opa.mad.attributemodifier",
8623 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8625 { &hf_opa_attribute_modifier_A, {
8626 "All", "opa.mad.attributemodifier.a",
8627 FT_BOOLEAN, 32, NULL, 0x00000100, NULL, HFILL }
8629 { &hf_opa_attribute_modifier_A2, {
8630 "All Ingress Ports", "opa.mad.attributemodifier.a2",
8631 FT_BOOLEAN, 32, NULL, 0x00020000, NULL, HFILL }
8633 { &hf_opa_attribute_modifier_A3, {
8634 "All", "opa.mad.attributemodifier.a3",
8635 FT_BOOLEAN, 32, NULL, 0x00040000, NULL, HFILL }
8637 { &hf_opa_attribute_modifier_A4, {
8638 "All", "opa.mad.attributemodifier.a4",
8639 FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
8641 { &hf_opa_attribute_modifier_A5, {
8642 "Starting Address", "opa.mad.attributemodifier.a5",
8643 FT_UINT32, BASE_HEX, NULL, 0x7FF80000, NULL, HFILL }
8645 { &hf_opa_attribute_modifier_A6, {
8646 "All", "opa.mad.attributemodifier.a6",
8647 FT_BOOLEAN, 32, NULL, 0x00000020, NULL, HFILL }
8649 { &hf_opa_attribute_modifier_B, {
8650 "Block Number", "opa.mad.attributemodifier.b",
8651 FT_UINT32, BASE_DEC, NULL, 0x000007FF, NULL, HFILL }
8653 { &hf_opa_attribute_modifier_B2, {
8654 "All Egress Ports", "opa.mad.attributemodifier.b2",
8655 FT_BOOLEAN, 32, NULL, 0x00010000, NULL, HFILL }
8657 { &hf_opa_attribute_modifier_B3, {
8658 "Block Number", "opa.mad.attributemodifier.b3",
8659 FT_UINT32, BASE_DEC, NULL, 0x0003FFFF, NULL, HFILL }
8661 { &hf_opa_attribute_modifier_B4, {
8662 "Block Number", "opa.mad.attributemodifier.b4",
8663 FT_UINT32, BASE_DEC, NULL, 0x000FFFFF, NULL, HFILL }
8665 { &hf_opa_attribute_modifier_B5, {
8666 "Block Number", "opa.mad.attributemodifier.b5",
8667 FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
8669 { &hf_opa_attribute_modifier_E, {
8670 "Egress Ports", "opa.mad.attributemodifier.e",
8671 FT_UINT32, BASE_DEC, NULL, 0x000000FF, NULL, HFILL }
8673 { &hf_opa_attribute_modifier_I, {
8674 "Ingress Ports", "opa.mad.attributemodifier.i",
8675 FT_UINT32, BASE_DEC, NULL, 0x0000FF00, NULL, HFILL }
8677 { &hf_opa_attribute_modifier_L, {
8678 "Length", "opa.mad.attributemodifier.l",
8679 FT_UINT32, BASE_DEC, NULL, 0x0007E000, NULL, HFILL }
8681 { &hf_opa_attribute_modifier_NP, {
8682 "Number of Ports", "opa.mad.attributemodifier.n",
8683 FT_UINT32, BASE_DEC, NULL, 0xFF000000, NULL, HFILL }
8685 { &hf_opa_attribute_modifier_NB, {
8686 "Number of Blocks", "opa.mad.attributemodifier.n",
8687 FT_UINT32, BASE_DEC, NULL, 0xFF000000, NULL, HFILL }
8689 { &hf_opa_attribute_modifier_N2, {
8690 "Number of aggregated Attributes", "opa.mad.attributemodifier.n",
8691 FT_UINT32, BASE_DEC, NULL, 0x000000FF, NULL, HFILL }
8693 { &hf_opa_attribute_modifier_P, {
8694 "Port Number", "opa.mad.attributemodifier.p",
8695 FT_UINT32, BASE_DEC, NULL, 0x000000FF, NULL, HFILL }
8697 { &hf_opa_attribute_modifier_P2, {
8698 "Port Number", "opa.mad.attributemodifier.p",
8699 FT_UINT32, BASE_DEC, NULL, 0x00FF0000, NULL, HFILL }
8701 { &hf_opa_attribute_modifier_P3, {
8702 "Position", "opa.mad.attributemodifier.p",
8703 FT_UINT32, BASE_DEC, NULL, 0x00C00000, NULL, HFILL }
8705 { &hf_opa_attribute_modifier_S, {
8706 "Section of Table", "opa.mad.attributemodifier.s",
8707 FT_UINT32, BASE_DEC, VALS(MADAttrModSectionVLarb), 0x00FF0000, NULL, HFILL }
8709 { &hf_opa_attribute_modifier_S2, {
8710 "Start of SM Configuration", "opa.mad.attributemodifier.s2",
8711 FT_BOOLEAN, 32, NULL, 0x00000200, NULL, HFILL }
8713 { &hf_opa_attribute_modifier_Y, {
8714 "Asynchronous update", "opa.mad.attributemodifier.y",
8715 FT_BOOLEAN, 32, NULL, 0x00001000, NULL, HFILL }
8718 /* RMPP Header */
8719 { &hf_opa_rmpp, {
8720 "RMPP - Reliable Multi-Packet Transaction Protocol", "opa.rmpp",
8721 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8723 { &hf_opa_rmpp_version, {
8724 "RMPP Version", "opa.rmpp.rmppversion",
8725 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8727 { &hf_opa_rmpp_type, {
8728 "RMPP Type", "opa.rmpp.rmpptype",
8729 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8731 { &hf_opa_rmpp_r_resp_time, {
8732 "R Resp Time", "opa.rmpp.rresptime",
8733 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
8735 { &hf_opa_rmpp_flags_last, {
8736 "Last", "opa.rmpp.flags.last",
8737 FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }
8739 { &hf_opa_rmpp_flags_first, {
8740 "First", "opa.rmpp.flags.first",
8741 FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }
8743 { &hf_opa_rmpp_flags_active, {
8744 "Active", "opa.rmpp.flags.active",
8745 FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }
8747 { &hf_opa_rmpp_status, {
8748 "RMPP Status", "opa.rmpp.rmppstatus",
8749 FT_UINT8, BASE_HEX, VALS(RMPP_Status), 0x0, NULL, HFILL }
8751 { &hf_opa_rmpp_data1, {
8752 "RMPP Data 1", "opa.rmpp.data1",
8753 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8755 { &hf_opa_rmpp_data2, {
8756 "RMPP Data 2", "opa.rmpp.data2",
8757 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8759 /* RMPP Data */
8760 { &hf_opa_rmpp_segment_number, {
8761 "Segment Number", "opa.rmpp.segmentnumber",
8762 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8764 { &hf_opa_rmpp_payload_length32, {
8765 "Payload Length", "opa.rmpp.payloadlength",
8766 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8768 /* RMPP ACK */
8769 { &hf_opa_rmpp_new_window_last, {
8770 "New Window Last", "opa.rmpp.newwindowlast",
8771 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8773 /* Fragments */
8774 { &hf_opa_rmpp_fragments, {
8775 "Message fragments", "opa.fragments",
8776 FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
8778 { &hf_opa_rmpp_fragment, {
8779 "Message fragment", "opa.fragment",
8780 FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
8782 { &hf_opa_rmpp_fragment_overlap, {
8783 "Message fragment overlap", "opa.fragment.overlap",
8784 FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL }
8786 { &hf_opa_rmpp_fragment_overlap_conflicts, {
8787 "Message fragment overlapping with conflicting data", "opa.fragment.overlap.conflicts",
8788 FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL }
8790 { &hf_opa_rmpp_fragment_multiple_tails, {
8791 "Message has multiple tail fragments", "opa.fragment.multiple_tails",
8792 FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL }
8794 { &hf_opa_rmpp_fragment_too_long_fragment, {
8795 "Message fragment too long", "opa.fragment.too_long_fragment",
8796 FT_BOOLEAN, BASE_NONE, NULL, 0x00, NULL, HFILL }
8798 { &hf_opa_rmpp_fragment_error, {
8799 "Message defragmentation error", "opa.fragment.error",
8800 FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
8802 { &hf_opa_rmpp_fragment_count, {
8803 "Message fragment count", "opa.fragment.count",
8804 FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
8806 { &hf_opa_rmpp_reassembled_in, {
8807 "Reassembled in", "opa.reassembled.in",
8808 FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
8810 { &hf_opa_rmpp_reassembled_length, {
8811 "Reassembled length", "opa.reassembled.length",
8812 FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
8815 /* SA Packet */
8816 /* SA RID */
8817 { &hf_opa_sa_Lid, {
8818 "LID", "opa.sa.lid",
8819 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8821 { &hf_opa_sa_Port, {
8822 "Port", "opa.sa.port",
8823 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8825 { &hf_opa_sa_EndportLID, {
8826 "EndportLID", "opa.sa.endportlid",
8827 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8829 { &hf_opa_sa_PortNum, {
8830 "PortNum", "opa.sa.portnum",
8831 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8833 { &hf_opa_sa_InputPortNum, {
8834 "InputPortNum", "opa.sa.inputportnum",
8835 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8837 { &hf_opa_sa_OutputPortNum, {
8838 "OutputPortNum", "opa.sa.outputportnum",
8839 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8841 { &hf_opa_sa_reserved14, {
8842 "Reserved (14 bits)", "opa.sa.reserved",
8843 FT_UINT32, BASE_HEX, NULL, 0xFFFC0000, NULL, HFILL }
8845 { &hf_opa_sa_BlockNum_18b, {
8846 "BlockNum", "opa.sa.blocknum",
8847 FT_UINT32, BASE_HEX, NULL, 0x0003FFFF, NULL, HFILL }
8849 { &hf_opa_sa_Position, {
8850 "Position", "opa.sa.position",
8851 FT_UINT32, BASE_HEX, NULL, 0xC0000000, NULL, HFILL }
8853 { &hf_opa_sa_Position_16b, {
8854 "Position", "opa.sa.position",
8855 FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
8857 { &hf_opa_sa_reserved9, {
8858 "Reserved (9 bits)", "opa.sa.reserved",
8859 FT_UINT32, BASE_HEX, NULL, 0x3FE00000, NULL, HFILL }
8861 { &hf_opa_sa_reserved9_16b, {
8862 "Reserved (9 bits)", "opa.sa.reserved",
8863 FT_UINT16, BASE_HEX, NULL, 0x3FE0, NULL, HFILL }
8865 { &hf_opa_sa_BlockNum_21b, {
8866 "BlockNum", "opa.sa.blocknum",
8867 FT_UINT32, BASE_HEX, NULL, 0x001FFFFF, NULL, HFILL }
8869 { &hf_opa_sa_BlockNum_8b, {
8870 "BlockNum", "opa.sa.blocknum",
8871 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8873 { &hf_opa_sa_BlockNum_16b, {
8874 "BlockNum", "opa.sa.blocknum",
8875 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8877 { &hf_opa_sa_BlockNum_5b, {
8878 "BlockNum", "opa.sa.blocknum",
8879 FT_UINT16, BASE_HEX, NULL, 0x001F, NULL, HFILL }
8881 { &hf_opa_sa_SubscriberLID, {
8882 "SubscriberGID", "opa.sa.subscribergid",
8883 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8885 { &hf_opa_sa_Enum, {
8886 "Enum", "opa.sa.enum",
8887 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8889 { &hf_opa_sa_FromLID, {
8890 "FromLID", "opa.sa.fromlid",
8891 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8893 { &hf_opa_sa_FromPort, {
8894 "FromPort", "opa.sa.fromport",
8895 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8897 { &hf_opa_sa_ServiceID, {
8898 "ServiceID", "opa.sa.serviceid",
8899 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
8901 { &hf_opa_sa_ServiceLID, {
8902 "ServiceLID", "opa.sa.servicelid",
8903 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8905 { &hf_opa_sa_ServiceP_Key, {
8906 "ServiceP_Key", "opa.sa.servicep_key",
8907 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8909 { &hf_opa_sa_ServiceGID, {
8910 "ServiceGID", "opa.sa.servicegid",
8911 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
8913 { &hf_opa_sa_MGID, {
8914 "MGID", "opa.sa.mgid",
8915 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
8917 { &hf_opa_sa_PortGID, {
8918 "PortGID", "opa.sa.portgid",
8919 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
8922 /* Notice */
8923 { &hf_opa_Notice, {
8924 "Notice", "opa.notice",
8925 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8927 { &hf_opa_Notice_IsGeneric, {
8928 "IsGeneric", "opa.notice.isgeneric",
8929 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
8931 { &hf_opa_Notice_Type, {
8932 "Type", "opa.notice.type",
8933 FT_UINT8, BASE_HEX, VALS(NoticeType), 0x7F, NULL, HFILL }
8935 { &hf_opa_Notice_ProducerType, {
8936 "ProducerType", "opa.notice.producertype",
8937 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
8939 { &hf_opa_Notice_TrapNumber, {
8940 "TrapNumber", "opa.notice.trapnumber",
8941 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8943 { &hf_opa_Notice_VendorID, {
8944 "VendorID", "opa.notice.vendorid",
8945 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
8947 { &hf_opa_Notice_DeviceID, {
8948 "DeviceID", "opa.notice.deviceid",
8949 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8951 { &hf_opa_Notice_Toggle, {
8952 "Toggle", "opa.notice.toggle",
8953 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
8955 { &hf_opa_Notice_Count, {
8956 "Count", "opa.notice.count",
8957 FT_UINT16, BASE_HEX, NULL, 0x7FFF, NULL, HFILL }
8959 { &hf_opa_Notice_IssuerLID, {
8960 "IssuerLID", "opa.notice.issuerlid",
8961 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8963 { &hf_opa_Notice_IssuerGID, {
8964 "IssuerGID", "opa.notice.issuergid",
8965 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
8967 { &hf_opa_Notice_ClassDataDetails, {
8968 "ClassDataDetails", "opa.notice.classdatadetails",
8969 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8972 /* Trap */
8973 { &hf_opa_Trap, {
8974 "Trap", "opa.trap",
8975 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8978 /* Traps 64,65,66,67 */
8979 { &hf_opa_Trap_GID, {
8980 "GID", "opa.trap.gid",
8981 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
8983 /* Traps 68,69 */
8985 /* Trap 128 */
8986 { &hf_opa_Trap_LID, {
8987 "LIDADDR", "opa.trap.lidaddr",
8988 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8991 /* Trap 129, 130, 131 */
8992 { &hf_opa_Trap_PORTNO, {
8993 "PORTNO", "opa.trap.portno",
8994 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8997 /* Trap 144 */
8998 { &hf_opa_Trap_CAPABILITYMASK, {
8999 "CapabilityMask", "opa.trap.capabilitymask",
9000 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9002 { &hf_opa_Trap_CAPABILITYMASK3, {
9003 "CapabilityMask3", "opa.trap.capabilitymask3",
9004 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9006 { &hf_opa_Trap_144_reserved, {
9007 "Reserved (4 bits)", "opa.trap.144.reserved",
9008 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
9010 { &hf_opa_Trap_LinkWidthDowngradeEnabledChange, {
9011 "LinkWidthDowngradeEnabledChange", "opa.trap.linkwidthdowngradeenabledchange",
9012 FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
9014 { &hf_opa_Trap_LinkSpeecEnabledChange, {
9015 "LinkSpeecEnabledChange", "opa.trap.linkspeecenabledchange",
9016 FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }
9018 { &hf_opa_Trap_LinkWidthEnabledChange, {
9019 "LinkWidthEnabledChange", "opa.trap.linkwidthenabledchange",
9020 FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }
9022 { &hf_opa_Trap_NodeDescriptionChange, {
9023 "NodeDescriptionChange", "opa.trap.nodedescriptionchange",
9024 FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }
9027 /* Trap 145 */
9028 { &hf_opa_Trap_SystemImageGUID, {
9029 "SystemImageGUID", "opa.trap.systemimageguid",
9030 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9033 /* Trap 256 */
9034 { &hf_opa_Trap_DRSLID, {
9035 "DR SLID", "opa.trap.drslid",
9036 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9038 { &hf_opa_Trap_Method, {
9039 "Method", "opa.trap.method",
9040 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9042 { &hf_opa_Trap_AttributeID, {
9043 "AttributeID", "opa.trap.attributeid",
9044 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9046 { &hf_opa_Trap_AttributeModifier, {
9047 "AttributeModifier", "opa.trap.attributemodifier",
9048 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9050 { &hf_opa_Trap_MKey, {
9051 "MKey", "opa.trap.mkey",
9052 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9054 { &hf_opa_Trap_DRNotice, {
9055 "DRNotice", "opa.trap.drnotice",
9056 FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
9058 { &hf_opa_Trap_DRPathTruncated, {
9059 "DRPathTruncated", "opa.trap.drpathtruncated",
9060 FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }
9062 { &hf_opa_Trap_DRHopCount, {
9063 "DRHopCount", "opa.trap.drhopcount",
9064 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
9066 { &hf_opa_Trap_DRNoticeReturnPath, {
9067 "DRNoticeReturnPath", "opa.trap.drnoticereturnpath",
9068 FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
9071 /* Trap 257, 258 */
9072 { &hf_opa_Trap_Key, {
9073 "Key", "opa.trap.key",
9074 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9076 { &hf_opa_Trap_SL, {
9077 "SL", "opa.trap.sl",
9078 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
9080 { &hf_opa_Trap_SL_reserved, {
9081 "Reserved (3 bits)", "opa.trap.sl.reserved",
9082 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
9084 { &hf_opa_Trap_QP, {
9085 "QP", "opa.trap.qp",
9086 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
9089 /* Trap 259 */
9090 { &hf_opa_Trap_DataValid, {
9091 "DataValid", "opa.trap.datavalid",
9092 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9094 { &hf_opa_Trap_DataValid_Lid1, {
9095 "Lid1", "opa.trap.datavalid.lid1",
9096 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x8000, NULL, HFILL }
9098 { &hf_opa_Trap_DataValid_Lid2, {
9099 "Lid2", "opa.trap.datavalid.lid2",
9100 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x4000, NULL, HFILL }
9102 { &hf_opa_Trap_DataValid_PKey, {
9103 "PKey", "opa.trap.datavalid.pkey",
9104 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x2000, NULL, HFILL }
9106 { &hf_opa_Trap_DataValid_SL, {
9107 "SL", "opa.trap.datavalid.sl",
9108 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x1000, NULL, HFILL }
9110 { &hf_opa_Trap_DataValid_QP1, {
9111 "QP1", "opa.trap.datavalid.qp1",
9112 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0800, NULL, HFILL }
9114 { &hf_opa_Trap_DataValid_QP2, {
9115 "QP2", "opa.trap.datavalid.qp2",
9116 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0400, NULL, HFILL }
9118 { &hf_opa_Trap_DataValid_Gid1, {
9119 "Gid1", "opa.trap.datavalid.gid1",
9120 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0200, NULL, HFILL }
9122 { &hf_opa_Trap_DataValid_Gid2, {
9123 "Gid2", "opa.trap.datavalid.gid2",
9124 FT_BOOLEAN, 16, TFS(&tfs_valid_invalid), 0x0100, NULL, HFILL }
9126 { &hf_opa_Trap_DataValid_Reserved, {
9127 "DataValid", "opa.trap.datavalid.reserved",
9128 FT_UINT16, BASE_HEX, NULL, 0x00FF, NULL, HFILL }
9131 { &hf_opa_Trap_PKey, {
9132 "PKey", "opa.trap.pkey",
9133 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9136 /* ClassPortInfo in Performance class */
9137 { &hf_opa_ClassPortInfo, {
9138 "ClassPortInfo", "opa.classportinfo",
9139 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
9141 { &hf_opa_ClassPortInfo_BaseVersion, {
9142 "BaseVersion", "opa.clasportinfo.baseversion",
9143 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9145 { &hf_opa_ClassPortInfo_ClassVersion, {
9146 "ClassVersion", "opa.clasportinfo.classversion",
9147 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9149 { &hf_opa_ClassPortInfo_CapMask, {
9150 "CapMask", "opa.clasportinfo.capmask",
9151 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9153 { &hf_opa_ClassPortInfo_CapMask2, {
9154 "CapMask2", "opa.clasportinfo.capmask2",
9155 FT_UINT32, BASE_HEX, NULL, 0xFFFFFFE0, NULL, HFILL }
9157 { &hf_opa_ClassPortInfo_RespTimeValue, {
9158 "RespTimeValue", "opa.clasportinfo.resptimevalue",
9159 FT_UINT32, BASE_HEX, NULL, 0x0000001F, NULL, HFILL }
9161 { &hf_opa_ClassPortInfo_Redirect_GID, {
9162 "GID", "opa.clasportinfo.redirect.gid",
9163 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
9165 { &hf_opa_ClassPortInfo_Redirect_TClass, {
9166 "TClass", "opa.clasportinfo.redirect.tclass",
9167 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
9169 { &hf_opa_ClassPortInfo_Redirect_reserved, {
9170 "Reserved (4 bits)", "opa.clasportinfo.redirect.reserved",
9171 FT_UINT24, BASE_HEX, NULL, 0xF00000, NULL, HFILL }
9173 { &hf_opa_ClassPortInfo_Redirect_FlowLabel, {
9174 "FlowLabel", "opa.clasportinfo.redirect.flowlabel",
9175 FT_UINT24, BASE_HEX, NULL, 0x0FFFFF, NULL, HFILL }
9177 { &hf_opa_ClassPortInfo_Redirect_LID, {
9178 "LID", "opa.clasportinfo.redirect.lid",
9179 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9181 { &hf_opa_ClassPortInfo_Redirect_SL, {
9182 "SL", "opa.clasportinfo.redirect.sl",
9183 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
9185 { &hf_opa_ClassPortInfo_Redirect_reserved2, {
9186 "Reserved (3 bits)", "opa.clasportinfo.redirect.reserved",
9187 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
9189 { &hf_opa_ClassPortInfo_Redirect_QP, {
9190 "QP", "opa.clasportinfo.redirect.qp",
9191 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
9193 { &hf_opa_ClassPortInfo_Redirect_Q_Key, {
9194 "Q_Key", "opa.clasportinfo.redirect.q_key",
9195 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9197 { &hf_opa_ClassPortInfo_Trap_GID, {
9198 "GID", "opa.clasportinfo.trap.gid",
9199 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
9201 { &hf_opa_ClassPortInfo_Trap_TClass, {
9202 "TClass", "opa.clasportinfo.trap.tclass",
9203 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
9205 { &hf_opa_ClassPortInfo_Trap_reserved, {
9206 "Reserved (4 bits)", "opa.clasportinfo.trap.reserved",
9207 FT_UINT24, BASE_HEX, NULL, 0xF00000, NULL, HFILL }
9209 { &hf_opa_ClassPortInfo_Trap_FlowLabel, {
9210 "FlowLabel", "opa.clasportinfo.trap.flowlabel",
9211 FT_UINT24, BASE_HEX, NULL, 0x0FFFFF, NULL, HFILL }
9213 { &hf_opa_ClassPortInfo_Trap_LID, {
9214 "LID", "opa.clasportinfo.trap.lid",
9215 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9217 { &hf_opa_ClassPortInfo_Trap_HopLimit, {
9218 "HopLimit", "opa.clasportinfo.trap.hoplimit",
9219 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9221 { &hf_opa_ClassPortInfo_Trap_QP, {
9222 "QP", "opa.clasportinfo.trap.qp",
9223 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
9225 { &hf_opa_ClassPortInfo_Trap_Q_Key, {
9226 "Q_Key", "opa.clasportinfo.trap.q_key",
9227 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9229 { &hf_opa_ClassPortInfo_Trap_P_Key, {
9230 "P_Key", "opa.clasportinfo.trap.p_key",
9231 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9233 { &hf_opa_ClassPortInfo_Redirect_P_Key, {
9234 "P_Key", "opa.clasportinfo.redirect.p_key",
9235 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9237 { &hf_opa_ClassPortInfo_Trap_SL, {
9238 "SL", "opa.clasportinfo.trap.sl",
9239 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
9241 { &hf_opa_ClassPortInfo_Trap_reserved2, {
9242 "Reserved (3 bits)", "opa.clasportinfo.trap.reserved",
9243 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
9245 /*******************
9246 * NodeDescription *
9247 *******************/
9249 { &hf_opa_NodeDescription, {
9250 "NodeDescription", "opa.nodedescription",
9251 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
9253 { &hf_opa_NodeDescription_NodeString, {
9254 "NodeString", "opa.nodedescription.nodestring",
9255 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
9258 /************
9259 * NodeInfo *
9260 ************/
9261 { &hf_opa_NodeInfo, {
9262 "Node Info", "opa.nodeinfo",
9263 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
9265 { &hf_opa_NodeInfo_BaseVersion, {
9266 "Base Version", "opa.nodeinfo.baseversion",
9267 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9269 { &hf_opa_NodeInfo_ClassVersion, {
9270 "Class Version", "opa.nodeinfo.classversion",
9271 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9273 { &hf_opa_NodeInfo_NodeType, {
9274 "Node Type", "opa.nodeinfo.nodetype",
9275 FT_UINT8, BASE_HEX, VALS(NodeType), 0x0, NULL, HFILL }
9277 { &hf_opa_NodeInfo_NumPorts, {
9278 "Num Ports", "opa.nodeinfo.numports",
9279 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
9281 { &hf_opa_NodeInfo_SystemImageGUID, {
9282 "System Image GUID", "opa.nodeinfo.systemimageguid",
9283 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9285 { &hf_opa_NodeInfo_NodeGUID, {
9286 "Node GUID", "opa.nodeinfo.nodeguid",
9287 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9289 { &hf_opa_NodeInfo_PortGUID, {
9290 "Port GUID", "opa.nodeinfo.portguid",
9291 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9293 { &hf_opa_NodeInfo_PartitionCap, {
9294 "Partition Cap", "opa.nodeinfo.partitioncap",
9295 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9297 { &hf_opa_NodeInfo_DeviceID, {
9298 "Device ID", "opa.nodeinfo.deviceid",
9299 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9301 { &hf_opa_NodeInfo_Revision, {
9302 "Revision", "opa.nodeinfo.revision",
9303 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9305 { &hf_opa_NodeInfo_LocalPortNum, {
9306 "Local Port Num", "opa.nodeinfo.localportnum",
9307 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
9309 { &hf_opa_NodeInfo_VendorID, {
9310 "Vendor ID", "opa.nodeinfo.vendorid",
9311 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
9314 /**************
9315 * SwitchInfo *
9316 **************/
9318 { &hf_opa_SwitchInfo, {
9319 "Switch Info", "opa.switchinfo",
9320 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
9322 { &hf_opa_SwitchInfo_LinearFDBCap, {
9323 "Linear FDB Cap", "opa.switchinfo.linearfdbcap",
9324 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9326 { &hf_opa_SwitchInfo_MulticastFDBCap, {
9327 "Multicast FDB Cap", "opa.switchinfo.multicastfdbcap",
9328 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9330 { &hf_opa_SwitchInfo_LinearFDBTop, {
9331 "Linear FDB Top", "opa.switchinfo.linearfdbtop",
9332 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9334 { &hf_opa_SwitchInfo_MulticastFDBTop, {
9335 "Multicast FDB Top", "opa.switchinfo.multicastfdbtop",
9336 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9338 { &hf_opa_SwitchInfo_CollectiveCap, {
9339 "Collective Cap", "opa.switchinfo.collectivecap",
9340 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9342 { &hf_opa_SwitchInfo_CollectiveTop, {
9343 "Collective Top", "opa.switchinfo.collectivetop",
9344 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9346 { &hf_opa_SwitchInfo_IPAddrIPv6, {
9347 "IP Addr IPv6", "opa.switchinfo.ipaddripv6",
9348 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
9350 { &hf_opa_SwitchInfo_IPAddrIPv4, {
9351 "IP Addr IPv4", "opa.switchinfo.ipaddripv4",
9352 FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
9354 { &hf_opa_SwitchInfo_LifeTimeValue, {
9355 "Life Time Value", "opa.switchinfo.lifetimevalue",
9356 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
9358 { &hf_opa_SwitchInfo_PortStateChange, {
9359 "Port State Change", "opa.switchinfo.portstatechange",
9360 FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }
9362 { &hf_opa_SwitchInfo_reserved2, {
9363 "Reserved (2 bits)", "opa.switchinfo.reserved2",
9364 FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
9366 { &hf_opa_SwitchInfo_PartitionEnforcementCap, {
9367 "Partition Enforcement Cap", "opa.switchinfo.partitionenforcementcap",
9368 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9370 { &hf_opa_SwitchInfo_PortGroupCap, {
9371 "Port Group Cap", "opa.switchinfo.portgroupcap",
9372 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9374 { &hf_opa_SwitchInfo_PortGroupTop, {
9375 "Port Group Top", "opa.switchinfo.portgrouptop",
9376 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9378 { &hf_opa_SwitchInfo_SupportedRoutingMode, {
9379 "Supported Routing Mode", "opa.switchinfo.supportedroutingmode",
9380 FT_UINT8, BASE_HEX, VALS(RoutingMode), 0x0, NULL, HFILL }
9382 { &hf_opa_SwitchInfo_EnabledRoutingMode, {
9383 "Enabled Routing Mode", "opa.switchinfo.enabledroutingmode",
9384 FT_UINT8, BASE_HEX, VALS(RoutingMode), 0x0, NULL, HFILL }
9386 { &hf_opa_SwitchInfo_reserved3, {
9387 "Reserved (4 bits)", "opa.switchinfo.reserved3",
9388 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
9390 { &hf_opa_SwitchInfo_EnhancedPortZero, {
9391 "Enhanced Port Zero", "opa.switchinfo.enhancedportzero",
9392 FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
9394 { &hf_opa_SwitchInfo_reserved4, {
9395 "Reserved (3 bits)", "opa.switchinfo.reserved4",
9396 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
9398 { &hf_opa_SwitchInfo_reserved5, {
9399 "Reserved (2 bits)", "opa.switchinfo.reserved5",
9400 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
9402 { &hf_opa_SwitchInfo_CollectiveMask, {
9403 "Collective Mask", "opa.switchinfo.collectivemask",
9404 FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
9406 { &hf_opa_SwitchInfo_MulticastMask, {
9407 "Multicast Mask", "opa.switchinfo.multicastmask",
9408 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
9410 { &hf_opa_SwitchInfo_AdaptiveRoutingEnable, {
9411 "Adaptive Routing Enable", "opa.switchinfo.adaptiveroutingenable",
9412 FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }
9414 { &hf_opa_SwitchInfo_AdaptiveRoutingPause, {
9415 "Adaptive Routing Pause", "opa.switchinfo.adaptiveroutingpause",
9416 FT_BOOLEAN, 16, NULL, 0x4000, NULL, HFILL }
9418 { &hf_opa_SwitchInfo_AdaptiveRoutingAlgorithm, {
9419 "Adaptive Routing Algorithm", "opa.switchinfo.adaptiveroutingalgorithm",
9420 FT_UINT16, BASE_HEX, VALS(AdaptiveRoutingAlgorithm), 0x3800, NULL, HFILL }
9422 { &hf_opa_SwitchInfo_AdaptiveRoutingFrequency, {
9423 "Adaptive Routing Frequency", "opa.switchinfo.adaptiveroutingfrequency",
9424 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_swinfo_ar_frequency), 0x0700, NULL, HFILL }
9426 { &hf_opa_SwitchInfo_AdaptiveRoutingLostRoutesOnly, {
9427 "Adaptive Routing Lost Routes Only", "opa.switchinfo.adaptiveroutinglostroutesonly",
9428 FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL }
9430 { &hf_opa_SwitchInfo_AdaptiveRoutingThreshold, {
9431 "Adaptive Routing Threshold", "opa.switchinfo.adaptiveroutingthreshold",
9432 FT_UINT16, BASE_HEX, VALS(AdaptiveRoutingThreshold), 0x0070, NULL, HFILL }
9434 { &hf_opa_SwitchInfo_reserved6, {
9435 "Reserved (4 bits)", "opa.switchinfo.reserved6",
9436 FT_UINT16, BASE_HEX, NULL, 0x000F, NULL, HFILL }
9438 { &hf_opa_SwitchInfo_SwitchCapabilityMask, {
9439 "Switch Capability Mask", "opa.switchinfo.switchcapabilitymask",
9440 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9442 { &hf_opa_SwitchInfo_SwitchCapabilityMask_reserved, {
9443 "Reserved (13 bits)", "opa.switchinfo.switchcapabilitymask.reserved",
9444 FT_UINT16, BASE_HEX, NULL, 0xFFF8, NULL, HFILL }
9446 { &hf_opa_SwitchInfo_SwitchCapabilityMask_IsAddrRangeConfigSupported, {
9447 "IsAddrRangeConfigSupported", "opa.switchinfo.switchcapabilitymask.isaddrrangeconfigsupported",
9448 FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL }
9450 { &hf_opa_SwitchInfo_SwitchCapabilityMask_reserved2, {
9451 "Reserved (1 bit)", "opa.switchinfo.switchcapabilitymask.reserved",
9452 FT_UINT16, BASE_HEX, NULL, 0x0002, NULL, HFILL }
9454 { &hf_opa_SwitchInfo_SwitchCapabilityMask_IsAdaptiveRoutingSupported, {
9455 "IsAdaptiveRoutingSupported", "opa.switchinfo.switchcapabilitymask.isadaptiveroutingsupported",
9456 FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL }
9458 { &hf_opa_SwitchInfo_CapabilityMaskCollectives, {
9459 "Capability Mask Collectives", "opa.switchinfo.capabilitymaskcollectives",
9460 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9463 /************
9464 * PortInfo *
9465 ************/
9466 { &hf_opa_PortInfo, {
9467 "Port Info", "opa.portinfo",
9468 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
9470 { &hf_opa_PortInfo_LID, {
9471 "LID", "opa.portinfo.lid",
9472 FT_UINT32, BASE_HEX, NULL, 0x0, "Base LID of this node", HFILL }
9474 { &hf_opa_PortInfo_FlowControlMask, {
9475 "Flow Control Mask", "opa.portinfo.flowcontrolmask",
9476 FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, "Flow control enabled on all VLs except VL15", HFILL }
9478 { &hf_opa_PortInfo_VL_PreemptCap, {
9479 "PreemptCap", "opa.portinfo.vl.preemptcap",
9480 FT_UINT8, BASE_DEC, NULL, 0x0, "Size of Preempting VL Arbitration table", HFILL }
9482 { &hf_opa_PortInfo_VL_reserved, {
9483 "Reserved (3 bits)", "opa.portinfo.vl.reserved",
9484 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
9486 { &hf_opa_PortInfo_VL_Cap, {
9487 "VL Cap", "opa.portinfo.vl.cap",
9488 FT_UINT8, BASE_DEC, NULL, 0x1F, "Virtual Lanes supported on this port", HFILL }
9490 { &hf_opa_PortInfo_VL_HighLimit, {
9491 "HighLimit", "opa.portinfo.vl.highlimit",
9492 FT_UINT16, BASE_DEC, NULL, 0x0, "Limit of high priority component of VL Arbitration table", HFILL }
9494 { &hf_opa_PortInfo_VL_PreemptingLimit, {
9495 "PreemptingLimit", "opa.portinfo.vl.preemptinglimit",
9496 FT_UINT16, BASE_DEC, NULL, 0x0, "Limit of preempt component of VL Arbitration table", HFILL }
9498 { &hf_opa_PortInfo_VL_ArbitrationHighCap, {
9499 "ArbitrationHighCap", "opa.portinfo.vl.arbitrationhighcap",
9500 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
9502 { &hf_opa_PortInfo_VL_ArbitrationLowCap, {
9503 "ArbitrationLowCap", "opa.portinfo.vl.arbitrationlowcap",
9504 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
9507 { &hf_opa_PortInfo_PortPhysConfig_reserved, {
9508 "Reserved (4 bits)", "opa.portinfo.portphysconfig.reserved",
9509 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
9511 { &hf_opa_PortInfo_PortPhysConfig_PortType, {
9512 "PortPhysConfig PortType", "opa.portinfo.portphysconfig.porttype",
9513 FT_UINT8, BASE_HEX, VALS(PortType), 0x0F, NULL, HFILL }
9515 { &hf_opa_PortInfo_MultiCollectMask_reserved, {
9516 "Reserved (2 bits)", "opa.portinfo.multicollectmask.reserved",
9517 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
9519 { &hf_opa_PortInfo_MultiCollectMask_CollectiveMask, {
9520 "MultiCollectMask CollectiveMask", "opa.portinfo.multicollectmask.collectivemask",
9521 FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
9523 { &hf_opa_PortInfo_MultiCollectMask_MulticastMask, {
9524 "MultiCollectMask MulticastMask", "opa.portinfo.multicollectmask.multicastmask",
9525 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
9527 { &hf_opa_PortInfo_M_KeyProtectBits, {
9528 "M_KeyProtectBits", "opa.portinfo.mkeyprotectbits",
9529 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
9531 { &hf_opa_PortInfo_S1_reserved, {
9532 "Reserved (2 bits)", "opa.portinfo.s1.reserved",
9533 FT_UINT8, BASE_HEX, NULL, 0x30, NULL, HFILL }
9535 { &hf_opa_PortInfo_LMC, {
9536 "LMC", "opa.portinfo.lmc",
9537 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
9539 { &hf_opa_PortInfo_S2_reserved, {
9540 "Reserved (3 bits)", "opa.portinfo.s2.reserved",
9541 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
9543 { &hf_opa_PortInfo_MasterSMSL, {
9544 "MasterSMSL", "opa.portinfo.mastersml",
9545 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
9547 { &hf_opa_PortInfo_LinkInitReason, {
9548 "LinkInitReason", "opa.portinfo.linkinitreason",
9549 FT_UINT8, BASE_HEX, VALS(LinkInitReason), 0xF0, NULL, HFILL }
9551 { &hf_opa_PortInfo_PartitionEnforcementInbound, {
9552 "PartitionEnforcementInbound", "opa.portinfo.partitionenforcementinbound",
9553 FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }
9555 { &hf_opa_PortInfo_PartitionEnforcementOutbound, {
9556 "PartitionEnforcementOutbound", "opa.portinfo.partitionenforcementoutbound",
9557 FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
9559 { &hf_opa_PortInfo_S3_reserved2, {
9560 "Reserved (2 bits)", "opa.portinfo.s3.reserved2",
9561 FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
9563 { &hf_opa_PortInfo_S4_reserved, {
9564 "Reserved (3 bits)", "opa.portinfo.s4.reserved",
9565 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
9567 { &hf_opa_PortInfo_OperationalVL, {
9568 "OperationalVL", "opa.portinfo.operationalvl",
9569 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
9571 /* P_Keys */
9572 { &hf_opa_PortInfo_P_Keys_P_Key_8B, {
9573 "P_Keys P_Key_8B", "opa.portinfo.pkey8",
9574 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9576 { &hf_opa_PortInfo_P_Keys_P_Key_10B, {
9577 "P_Keys P_Key_10B", "opa.portinfo.pkey10",
9578 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9581 { &hf_opa_PortInfo_M_KeyViolations, {
9582 "M_KeyViolations", "opa.portinfo.m_keyviolations",
9583 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9585 { &hf_opa_PortInfo_P_KeyViolations, {
9586 "P_KeyViolations", "opa.portinfo.p_keyviolations",
9587 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9589 { &hf_opa_PortInfo_Q_KeyViolations, {
9590 "Q_KeyViolations", "opa.portinfo.q_keyviolations",
9591 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9594 { &hf_opa_PortInfo_TrapQueuePair_reserved, {
9595 "TrapQueuePair Reserved (8 bits)", "opa.portinfo.trapqpair.reserved",
9596 FT_UINT32, BASE_HEX, NULL, 0xFF000000, NULL, HFILL }
9598 { &hf_opa_PortInfo_TrapQueuePair, {
9599 "TrapQueuePair", "opa.portinfo.trapqpair",
9600 FT_UINT32, BASE_HEX, NULL, 0x00FFFFFF, NULL, HFILL }
9602 { &hf_opa_PortInfo_SAQueuePair_reserved, {
9603 "SAQueuePair Reserved (8 bits)", "opa.portinfo.saqpair.reserved",
9604 FT_UINT32, BASE_HEX, NULL, 0xFF000000, NULL, HFILL }
9606 { &hf_opa_PortInfo_SAQueuePair, {
9607 "SAQueuePair", "opa.portinfo.saqpair",
9608 FT_UINT32, BASE_HEX, NULL, 0x00FFFFFF, NULL, HFILL }
9610 { &hf_opa_PortInfo_NeighborPortNum, {
9611 "NeighborPortNum", "opa.portinfo.neighborportnum",
9612 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
9614 { &hf_opa_PortInfo_LinkDownReason, {
9615 "LinkDownReason", "opa.portinfo.linkdownreason",
9616 FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
9618 { &hf_opa_PortInfo_NeighborLinkDownReason, {
9619 "NeighborLinkDownReason", "opa.portinfo.neighborlinkdownreason",
9620 FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
9623 { &hf_opa_PortInfo_ClientReregister, {
9624 "Subnet ClientReregister", "opa.portinfo.clientreregister",
9625 FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
9627 { &hf_opa_PortInfo_MulticastPKeyTrapSuppressEnabled, {
9628 "Subnet Multicast PKey Trap Enabled", "opa.portinfo.multicastpkeytrapenabled",
9629 FT_UINT8, BASE_HEX, NULL, 0x60, NULL, HFILL }
9631 { &hf_opa_PortInfo_Timeout, {
9632 "Subnet Timeout", "opa.portinfo.timeout",
9633 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
9635 { &hf_opa_PortInfo_LinkSpeedSupported, {
9636 "LinkSpeedSupported", "opa.portinfo.linkspeedsupported",
9637 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkspeed), 0x0, NULL, HFILL }
9639 { &hf_opa_PortInfo_LinkSpeedEnabled, {
9640 "LinkSpeedEnabled", "opa.portinfo.linkspeedenabled",
9641 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkspeed), 0x0, NULL, HFILL }
9643 { &hf_opa_PortInfo_LinkSpeedActive, {
9644 "LinkSpeedActive", "opa.portinfo.linkspeedactive",
9645 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkspeed), 0x0, NULL, HFILL }
9648 { &hf_opa_PortInfo_LinkWidthSupported, {
9649 "LinkWidthSupported", "opa.portinfo.linkwidthsupported",
9650 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
9652 { &hf_opa_PortInfo_LinkWidthEnabled, {
9653 "LinkWidthEnabled", "opa.portinfo.linkwidthenabled",
9654 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
9656 { &hf_opa_PortInfo_LinkWidthActive, {
9657 "LinkWidthActive", "opa.portinfo.linkwidthactive",
9658 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
9661 { &hf_opa_PortInfo_LinkWidthDowngrade_Supported, {
9662 "LinkWidthDowngrade Supported", "opa.portinfo.linkwidthdowngradesupported",
9663 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
9665 { &hf_opa_PortInfo_LinkWidthDowngrade_Enabled, {
9666 "LinkWidthDowngrade Enabled", "opa.portinfo.linkwidthdowngradeenabled",
9667 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
9669 { &hf_opa_PortInfo_LinkWidthDowngrade_TxActive, {
9670 "LinkWidthDowngrade TxActive", "opa.portinfo.linkwidthdowngradetxactive",
9671 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
9673 { &hf_opa_PortInfo_LinkWidthDowngrade_RxActive, {
9674 "LinkWidthDowngrade RxActive", "opa.portinfo.linkwidthdowngraderxactive",
9675 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
9677 /* PortLinkMode */
9678 { &hf_opa_PortInfo_PortLinkMode_reserved, {
9679 "PortLinkMode Reserved (1 bit)", "opa.portinfo.portlinkmode.reserved",
9680 FT_UINT16, BASE_HEX, NULL, 0x8000, NULL, HFILL }
9682 { &hf_opa_PortInfo_PortLinkMode_Supported, {
9683 "PortLinkMode Supported", "opa.portinfo.portlinkmode.supported",
9684 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portlinkmode), 0x7C00, NULL, HFILL }
9686 { &hf_opa_PortInfo_PortLinkMode_Enabled, {
9687 "PortLinkMode Enabled", "opa.portinfo.portlinkmode.enabled",
9688 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portlinkmode), 0x03E0, NULL, HFILL }
9690 { &hf_opa_PortInfo_PortLinkMode_Active, {
9691 "PortLinkMode Active", "opa.portinfo.portlinkmode.active",
9692 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portlinkmode), 0x001F, NULL, HFILL }
9695 /* PortLTPCRCMode */
9696 { &hf_opa_PortInfo_PortLTPCRCMode_reserved, {
9697 "PortLTPCRCMode Reserved (4 bits)", "opa.portinfo.portltpcrc.reserved",
9698 FT_UINT16, BASE_HEX, NULL, 0xF000, NULL, HFILL }
9700 { &hf_opa_PortInfo_PortLTPCRCMode_Supported, {
9701 "PortLTPCRCMode Supported", "opa.portinfo.portltpcrc.supported",
9702 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portltpcrcmode), 0x0F00, NULL, HFILL }
9704 { &hf_opa_PortInfo_PortLTPCRCMode_Enabled, {
9705 "PortLTPCRCMode Enabled", "opa.portinfo.portltpcrc.enabled",
9706 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portltpcrcmode), 0x00F0, NULL, HFILL }
9708 { &hf_opa_PortInfo_PortLTPCRCMode_Active, {
9709 "PortLTPCRCMode Active", "opa.portinfo.portltpcrc.active",
9710 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_portltpcrcmode), 0x000F, NULL, HFILL }
9713 /* PortMode */
9714 { &hf_opa_PortInfo_PortMode, {
9715 "PortMode", "opa.portinfo.portmode",
9716 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9718 { &hf_opa_PortInfo_PortMode_reserved, {
9719 "Reserved (9 bits)", "opa.portinfo.portmode.reserved",
9720 FT_UINT16, BASE_HEX, NULL, 0xFF80, NULL, HFILL }
9722 { &hf_opa_PortInfo_PortMode_IsActiveOptimizeEnabled, {
9723 "IsActiveOptimizeEnabled", "opa.portinfo.portmode.isactiveoptimizeenabled",
9724 FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL }
9726 { &hf_opa_PortInfo_PortMode_IsPassThroughEnabled, {
9727 "IsPassThroughEnabled", "opa.portinfo.portmode.ispassthroughenabled",
9728 FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL }
9730 { &hf_opa_PortInfo_PortMode_IsVLMarkerEnabled, {
9731 "IsVLMarkerEnabled", "opa.portinfo.portmode.isvlmarkerenabled",
9732 FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL }
9734 { &hf_opa_PortInfo_PortMode_reserved2, {
9735 "Reserved (2 bits)", "opa.portinfo.portmode.reserved2",
9736 FT_UINT16, BASE_HEX, NULL, 0x000C, NULL, HFILL }
9738 { &hf_opa_PortInfo_PortMode_Is16BTrapQueryEnabled, {
9739 "Is16BTrapQueryEnabled", "opa.portinfo.portmode.is16btrapqueryenabled",
9740 FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL }
9742 { &hf_opa_PortInfo_PortMode_reserved3, {
9743 "Reserved (1 bit)", "opa.portinfo.portmode.reserved3",
9744 FT_UINT16, BASE_HEX, NULL, 0x0001, NULL, HFILL }
9747 /*PortPacketFormats*/
9748 { &hf_opa_PortInfo_PortPacketFormats_Supported, {
9749 "PortPacketFormats Supported", "opa.portinfo.portpacketformats.supported",
9750 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_packetformat), 0x0, NULL, HFILL }
9752 { &hf_opa_PortInfo_PortPacketFormats_Enabled, {
9753 "PortPacketFormats Enabled", "opa.portinfo.portpacketformats.enabled",
9754 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_packetformat), 0x0, NULL, HFILL }
9756 /* Flit Control*/
9757 { &hf_opa_PortInfo_FlitControl_Interleave_reserved, {
9758 "Interleave Reserved (2 bits)", "opa.portinfo.flitcontrol.interleave.reserved",
9759 FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
9761 { &hf_opa_PortInfo_FlitControl_Interleave_DistanceSupported, {
9762 "Interleave DistanceSupported", "opa.portinfo.flitcontrol.interleave.distancesupported",
9763 FT_UINT16, BASE_HEX, VALS(PortFlitDistanceMode), 0x3000, NULL, HFILL }
9765 { &hf_opa_PortInfo_FlitControl_Interleave_DistanceEnabled, {
9766 "Interleave DistanceEnabled", "opa.portinfo.flitcontrol.interleave.distanceenabled",
9767 FT_UINT16, BASE_HEX, VALS(PortFlitDistanceMode), 0x0C00, NULL, HFILL }
9769 { &hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelTxEnabled, {
9770 "Interleave MaxNestLevelTxEnabled", "opa.portinfo.flitcontrol.interleave.maxnestleveltxenabled",
9771 FT_UINT16, BASE_HEX, NULL, 0x03E0, NULL, HFILL }
9773 { &hf_opa_PortInfo_FlitControl_Interleave_MaxNestLevelRxSupported, {
9774 "Interleave MaxNestLevelRxEnabled", "opa.portinfo.flitcontrol.interleave.maxnestlevelrxenabled",
9775 FT_UINT16, BASE_HEX, NULL, 0x001F, NULL, HFILL }
9777 { &hf_opa_PortInfo_FlitControl_Preemption_MinInitial, {
9778 "Preemption MinInitial", "opa.portinfo.flitcontrol.preemption.mininitial",
9779 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9781 { &hf_opa_PortInfo_FlitControl_Preemption_MinTail, {
9782 "Preemption Mintail", "opa.portinfo.flitcontrol.preemption.mintail",
9783 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9785 { &hf_opa_PortInfo_FlitControl_Preemption_LargePacketLimit, {
9786 "Preemption LargePacketLimit", "opa.portinfo.flitcontrol.preemption.largepacketlimit",
9787 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9789 { &hf_opa_PortInfo_FlitControl_Preemption_SmallPacketLimit, {
9790 "Preemption SmallPacketLimit", "opa.portinfo.flitcontrol.preemption.smallpacketlimit",
9791 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9793 { &hf_opa_PortInfo_FlitControl_Preemption_MaxSmallPacketLimit, {
9794 "Preemption MaxSmallPacketLimit", "opa.portinfo.flitcontrol.preemption.maxsmallpacketlimit",
9795 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9797 { &hf_opa_PortInfo_FlitControl_Preemption_PreemptionLimit, {
9798 "Preemption PreemptionLimit", "opa.portinfo.flitcontrol.preemption.preemptionlimit",
9799 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9802 /* PortErrorAction */
9803 { &hf_opa_PortInfo_PortErrorAction, {
9804 "PortErrorAction", "opa.portinfo.porterroraction",
9805 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9807 { &hf_opa_PortInfo_PortErrorAction_ExcessiveBufferOverrun, {
9808 "ExcessiveBufferOverrun", "opa.portinfo.porterroraction.excessivebufferoverrun",
9809 FT_BOOLEAN, 32, NULL, 0x80000000, NULL, HFILL }
9811 { &hf_opa_PortInfo_PortErrorAction_reserved, {
9812 "Reserved (7 bits)", "opa.portinfo.porterroraction.reserved",
9813 FT_UINT32, BASE_HEX, NULL, 0x7F000000, NULL, HFILL }
9815 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorExceedMulticastLimit, {
9816 "FMConfigErrorExceedMulticastLimit", "opa.portinfo.porterroraction.fmconfigerrorexceedmulticastlimit",
9817 FT_BOOLEAN, 32, NULL, 0x00800000, NULL, HFILL }
9819 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadControlFlit, {
9820 "FmConfigErrorBadControlFlit", "opa.portinfo.porterroraction.fmconfigerrorbadcontrolflit",
9821 FT_BOOLEAN, 32, NULL, 0x00400000, NULL, HFILL }
9823 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadPreempt, {
9824 "FmConfigErrorBadPreempt", "opa.portinfo.porterroraction.fmconfigerrorbadpreempt",
9825 FT_BOOLEAN, 32, NULL, 0x00200000, NULL, HFILL }
9827 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadVLMarker, {
9828 "FmConfigErrorBadVLMarker", "opa.portinfo.porterroraction.fmconfigerrorbadvlmarker",
9829 FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
9831 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCrdtAck, {
9832 "FmConfigErrorBadCrdtAck", "opa.portinfo.porterroraction.fmconfigerrorbadcrdtack",
9833 FT_BOOLEAN, 32, NULL, 0x00080000, NULL, HFILL }
9835 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadCtrlDist, {
9836 "FmConfigErrorBadCtrlDist", "opa.portinfo.porterroraction.fmconfigerrorbadctrldist",
9837 FT_BOOLEAN, 32, NULL, 0x00040000, NULL, HFILL }
9839 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadTailDist, {
9840 "FmConfigErrorBadTailDist", "opa.portinfo.porterroraction.fmconfigerrorbadtaildist",
9841 FT_BOOLEAN, 32, NULL, 0x00020000, NULL, HFILL }
9843 { &hf_opa_PortInfo_PortErrorAction_FmConfigErrorBadHeadDist, {
9844 "FmConfigErrorBadHeadDist", "opa.portinfo.porterroraction.fmconfigerrorbadheaddist",
9845 FT_BOOLEAN, 32, NULL, 0x00010000, NULL, HFILL }
9847 { &hf_opa_PortInfo_PortErrorAction_reserved2, {
9848 "Reserved (2 bits)", "opa.portinfo.porterroraction.reserved2",
9849 FT_UINT32, BASE_HEX, NULL, 0x0000C000, NULL, HFILL }
9851 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadVLMarker, {
9852 "PortRcvErrorBadVLMarker", "opa.portinfo.porterroraction.portrcverrorbadvlmarker",
9853 FT_BOOLEAN, 32, NULL, 0x00002000, NULL, HFILL }
9855 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptVL15, {
9856 "PortRcvErrorPreemptVL15", "opa.portinfo.porterroraction.portrcverrorpreemptvl15",
9857 FT_BOOLEAN, 32, NULL, 0x00001000, NULL, HFILL }
9859 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPreemptError, {
9860 "PortRcvErrorPreemptError", "opa.portinfo.porterroraction.portrcverrorpreempterror",
9861 FT_BOOLEAN, 32, NULL, 0x00000800, NULL, HFILL }
9863 { &hf_opa_PortInfo_PortErrorAction_reserved3, {
9864 "Reserved (1 bit)", "opa.portinfo.porterroraction.reserved3",
9865 FT_UINT32, BASE_HEX, NULL, 0x00000400, NULL, HFILL }
9867 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadMidTail, {
9868 "PortRcvErrorBadMidTail", "opa.portinfo.porterroraction.portrcverrorbadmidtail",
9869 FT_BOOLEAN, 32, NULL, 0x00000200, NULL, HFILL }
9871 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorReserved, {
9872 "PortRcvErrorReserved", "opa.portinfo.porterroraction.portrcverrorreserved",
9873 FT_UINT32, BASE_HEX, NULL, 0x00000100, NULL, HFILL }
9875 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSC, {
9876 "PortRcvErrorBadSC", "opa.portinfo.porterroraction.portrcverrorbadsc",
9877 FT_BOOLEAN, 32, NULL, 0x00000080, NULL, HFILL }
9879 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadL2, {
9880 "PortRcvErrorBadL2", "opa.portinfo.porterroraction.portrcverrorbadl2",
9881 FT_BOOLEAN, 32, NULL, 0x00000040, NULL, HFILL }
9883 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadDLID, {
9884 "PortRcvErrorBadDLID", "opa.portinfo.porterroraction.portrcverrorbaddlid",
9885 FT_BOOLEAN, 32, NULL, 0x00000020, NULL, HFILL }
9887 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadSLID, {
9888 "PortRcvErrorBadSLID", "opa.portinfo.porterroraction.portrcverrorbadslid",
9889 FT_BOOLEAN, 32, NULL, 0x00000010, NULL, HFILL }
9891 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooShort, {
9892 "PortRcvErrorPktLenTooShort", "opa.portinfo.porterroraction.portrcverrorpktlentooshort",
9893 FT_BOOLEAN, 32, NULL, 0x00000008, NULL, HFILL }
9895 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorPktLenTooLong, {
9896 "PortRcvErrorPktLenTooLong", "opa.portinfo.porterroraction.portrcverrorpktlentoolong",
9897 FT_BOOLEAN, 32, NULL, 0x00000004, NULL, HFILL }
9899 { &hf_opa_PortInfo_PortErrorAction_PortRcvErrorBadPktLen, {
9900 "PortRcvErrorBadPktLen", "opa.portinfo.porterroraction.portrcverrorbadpktlen",
9901 FT_BOOLEAN, 32, NULL, 0x00000002, NULL, HFILL }
9903 { &hf_opa_PortInfo_PortErrorAction_reserved4, {
9904 "Reserved (1 bit)", "opa.portinfo.porterroraction.reserved4",
9905 FT_UINT32, BASE_HEX, NULL, 0x00000001, NULL, HFILL }
9907 /* PassThroughControl */
9908 { &hf_opa_PortInfo_PassThroughControl_EgressPort, {
9909 "PassThroughControl EgressPort", "opa.portinfo.passthroughcontrol.egressport",
9910 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
9913 { &hf_opa_PortInfo_PassThroughControl_reserved, {
9914 "Reserved (7 Bits)", "opa.portinfo.passthroughcontrol.reserved",
9915 FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL }
9917 { &hf_opa_PortInfo_PassThroughControl_DRControl, {
9918 "PassThroughControl DRControl", "opa.portinfo.passthroughcontrol.drcontrol",
9919 FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }
9921 { &hf_opa_PortInfo_M_KeyLeasePeriod, {
9922 "M_KeyLeasePeriod", "opa.portinfo.m_keyleaseperiod",
9923 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
9925 { &hf_opa_PortInfo_BufferUnits_reserved, {
9926 "BufferUnits Reserved (9 bits)", "opa.portinfo.bufferunits.reserved",
9927 FT_UINT32, BASE_HEX, NULL, 0xFF800000, NULL, HFILL }
9929 { &hf_opa_PortInfo_BufferUnits_VL15Init, {
9930 "BufferUnits VL15Init", "opa.portinfo.bufferunits.vl15init",
9931 FT_UINT32, BASE_HEX, NULL, 0x007FF800, NULL, HFILL }
9933 { &hf_opa_PortInfo_BufferUnits_VL15CreditRate, {
9934 "BufferUnits VL15Credit", "opa.portinfo.bufferunits.vl15credit",
9935 FT_UINT32, BASE_HEX, NULL, 0x000007C0, NULL, HFILL }
9937 { &hf_opa_PortInfo_BufferUnits_CreditAck, {
9938 "BufferUnits CreditAck", "opa.portinfo.bufferunits.creditack",
9939 FT_UINT32, BASE_HEX, NULL, 0x00000038, NULL, HFILL }
9941 { &hf_opa_PortInfo_BufferUnits_BufferAlloc, {
9942 "BufferUnits BufferAlloc", "opa.portinfo.bufferunits.bufferalloc",
9943 FT_UINT32, BASE_HEX, NULL, 0x00000007, NULL, HFILL }
9946 { &hf_opa_PortInfo_MasterSMLID, {
9947 "MasterSMLID", "opa.portinfo.mastersmlid",
9948 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9950 { &hf_opa_PortInfo_M_Key, {
9951 "MKey", "opa.portinfo.mkey",
9952 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9954 { &hf_opa_PortInfo_SubnetPrefix, {
9955 "SubnetPrefix", "opa.portinfo.subnetprefix",
9956 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9958 { &hf_opa_PortInfo_VL1, {
9959 "VL", "opa.portinfo.vl1",
9960 FT_UINT8, BASE_HEX, VALS(MTU), 0xF0, NULL, HFILL }
9962 { &hf_opa_PortInfo_VL2, {
9963 "VL", "opa.portinfo.vl2",
9964 FT_UINT8, BASE_HEX, VALS(MTU), 0x0F, NULL, HFILL }
9966 /* XmitQ */
9967 { &hf_opa_PortInfo_XmitQ_VLStallCount, {
9968 "VLStallCount", "opa.portinfo.xmitq.vlstallcount",
9969 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
9971 { &hf_opa_PortInfo_XmitQ_HOQLife, {
9972 "HOQLife", "opa.portinfo.xmitq.hoqlife",
9973 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
9976 { &hf_opa_PortInfo_IPAddrIPv6, {
9977 "IPAddr IPv6", "opa.portinfo.ipaddripv6",
9978 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
9980 { &hf_opa_PortInfo_IPAddrIPv4, {
9981 "IPAddr IPv4", "opa.portinfo.ipaddripv4",
9982 FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
9984 { &hf_opa_PortInfo_NeighborNodeGUID, {
9985 "NeighborNodeGUID", "opa.portinfo.neighbornodeguid",
9986 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
9989 /* Capability Mask Flags */
9990 { &hf_opa_PortInfo_CapabilityMask, {
9991 "CapabilityMask", "opa.portinfo.capabilitymask",
9992 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
9994 { &hf_opa_PortInfo_CapabilityMask_reserved, {
9995 "Reserved (9 bits)", "opa.portinfo.capabilitymask.reserved",
9996 FT_UINT32, BASE_HEX, NULL, 0xFF800000, NULL, HFILL }
9998 { &hf_opa_PortInfo_CapabilityMask_IsCapabilityMaskNoticeSupported, {
9999 "IsCapabilityMaskNoticeSupported", "opa.portinfo.capabilitymask.iscapabilitymasknoticesupported",
10000 FT_BOOLEAN, 32, NULL, 0x00400000, NULL, HFILL }
10002 { &hf_opa_PortInfo_CapabilityMask_reserved2, {
10003 "Reserved (1 bit)", "opa.portinfo.capabilitymask.reserved2",
10004 FT_UINT32, BASE_HEX, NULL, 0x00200000, NULL, HFILL }
10006 { &hf_opa_PortInfo_CapabilityMask_IsVendorClassSupported, {
10007 "IsVendorClassSupported", "opa.portinfo.capabilitymask.isvendorclasssupported",
10008 FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
10010 { &hf_opa_PortInfo_CapabilityMask_IsDeviceManagementSupported, {
10011 "IsDeviceManagementSupported", "opa.portinfo.capabilitymask.isdevicemanagementsupported",
10012 FT_BOOLEAN, 32, NULL, 0x00080000, NULL, HFILL }
10014 { &hf_opa_PortInfo_CapabilityMask_reserved3, {
10015 "Reserved (2 bits)", "opa.portinfo.capabilitymask.reserved3",
10016 FT_UINT32, BASE_HEX, NULL, 0x00060000, NULL, HFILL }
10018 { &hf_opa_PortInfo_CapabilityMask_IsConnectionManagementSupported, {
10019 "IsConnectionManagementSupported", "opa.portinfo.capabilitymask.isconnectionmanagementsupported",
10020 FT_BOOLEAN, 32, NULL, 0x00010000, NULL, HFILL }
10022 { &hf_opa_PortInfo_CapabilityMask_reserved4, {
10023 "Reserved (10 bits)", "opa.portinfo.capabilitymask.reserved4",
10024 FT_UINT32, BASE_HEX, NULL, 0x0000FFC0, NULL, HFILL }
10026 { &hf_opa_PortInfo_CapabilityMask_IsAutomaticMigrationSupported, {
10027 "IsAutomaticMigrationSupported", "opa.portinfo.capabilitymask.isautomaticmigrationsupported",
10028 FT_BOOLEAN, 32, NULL, 0x00000020, NULL, HFILL }
10030 { &hf_opa_PortInfo_CapabilityMask_reserved5, {
10031 "Reserved (3 bits)", "opa.portinfo.capabilitymask.reserved5",
10032 FT_UINT32, BASE_HEX, NULL, 0x0000001C, NULL, HFILL }
10034 { &hf_opa_PortInfo_CapabilityMask_IsSM, {
10035 "IsSM", "opa.portinfo.capabilitymask.issm",
10036 FT_BOOLEAN, 32, NULL, 0x00000002, NULL, HFILL }
10038 { &hf_opa_PortInfo_CapabilityMask_reserved6, {
10039 "Reserved (1 bit)", "opa.portinfo.capabilitymask.reserved6",
10040 FT_UINT32, BASE_HEX, NULL, 0x00000001, NULL, HFILL }
10042 /* End Capability Mask Flags */
10044 /* Capability Mask 3 */
10045 { &hf_opa_PortInfo_CapabilityMask3, {
10046 "CapabilityMask3", "opa.portinfo.capabilitymask3",
10047 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10049 { &hf_opa_PortInfo_CapabilityMask3_reserved, {
10050 "Reserved (8 bits)", "opa.portinfo.capabilitymask3.reserved",
10051 FT_UINT16, BASE_HEX, NULL, 0xFF00, NULL, HFILL }
10053 { &hf_opa_PortInfo_CapabilityMask3_IsSnoopSupported, {
10054 "IsSnoopSupported", "opa.portinfo.capabilitymask3.issnoopsupported",
10055 FT_BOOLEAN, 16, NULL, 0x0080, NULL, HFILL }
10057 { &hf_opa_PortInfo_CapabilityMask3_IsAsyncSCtoVLSupported, {
10058 "IsAsyncSCtoVLSupported", "opa.portinfo.capabilitymask3.isasyncsc2vlsupported",
10059 FT_BOOLEAN, 16, NULL, 0x0040, NULL, HFILL }
10061 { &hf_opa_PortInfo_CapabilityMask3_IsAddrRangeConfigSupported, {
10062 "IsAddrRangeConfigSupported", "opa.portinfo.capabilitymask3.isaddrrangeconfigsupported",
10063 FT_BOOLEAN, 16, NULL, 0x0020, NULL, HFILL }
10065 { &hf_opa_PortInfo_CapabilityMask3_IsPassThroughSupported, {
10066 "IsPassThroughSupported", "opa.portinfo.capabilitymask3.ispassthroughsupported",
10067 FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL }
10069 { &hf_opa_PortInfo_CapabilityMask3_IsSharedSpaceSupported, {
10070 "IsSharedSpaceSupported", "opa.portinfo.capabilitymask3.issharedspacesupported",
10071 FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL }
10073 { &hf_opa_PortInfo_CapabilityMask3_reserved2, {
10074 "IsVLMarkerSupported", "opa.portinfo.capabilitymask3.reserved2",
10075 FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL }
10077 { &hf_opa_PortInfo_CapabilityMask3_IsVLMarkerSupported, {
10078 "IsVLMarkerSupported", "opa.portinfo.capabilitymask3.isvlmarkersupported",
10079 FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL }
10081 { &hf_opa_PortInfo_CapabilityMask3_IsVLrSupported, {
10082 "IsVLrSupported", "opa.portinfo.capabilitymask3.isvlrsupported",
10083 FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL }
10085 /* End Capability Mask3 Flags */
10087 { &hf_opa_PortInfo_OverallBufferSpace, {
10088 "OverallBufferSpace", "opa.portinfo.overallbufferspace",
10089 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10091 { &hf_opa_PortInfo_DiagCode, {
10092 "DiagCode", "opa.portinfo.diagcode",
10093 FT_UINT16, BASE_HEX, VALS(DiagCode), 0x0, NULL, HFILL }
10095 { &hf_opa_PortInfo_ReplayDepth_BufferDepth, {
10096 "Replay BufferDepth", "opa.portinfo.replaydepth.bufferdepth",
10097 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10099 { &hf_opa_PortInfo_ReplayDepth_WireDepth, {
10100 "Replay WireDepth", "opa.portinfo.replaydepth.wiredepth",
10101 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10104 /* PortNeighborNode*/
10105 { &hf_opa_PortInfo_PortNeighborMode_reserved, {
10106 "PortNeighborMode Reserved (4 bits)", "opa.portinfo.portneighbormode.reserved",
10107 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
10109 { &hf_opa_PortInfo_PortNeighborMode_MgmtAllowed, {
10110 "PortNeighborMode MgmtAllowed", "opa.portinfo.portneighbormode.mgmtallowed",
10111 FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }
10113 { &hf_opa_PortInfo_PortNeighborMode_NeighborFWAuthenBypass, {
10114 "PortNeighborMode NeighborFWAuthenBypass", "opa.portinfo.portneighbormode.neighborfwauthenbypass",
10115 FT_BOOLEAN, 8, TFS(&tfs_NeighborFWAuthenBypass), 0x04, NULL, HFILL }
10117 { &hf_opa_PortInfo_PortNeighborMode_NeighborNodeType, {
10118 "PortNeighborMode NeighborNodeType", "opa.portinfo.portneighbormode.neighbornodetype",
10119 FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
10122 /* MTU*/
10123 { &hf_opa_PortInfo_MTU_reserved, {
10124 "MTU Reserved (4 bits)", "opa.portinfo.mtu.reserved",
10125 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
10127 { &hf_opa_PortInfo_MTU_Cap, {
10128 "MTU Cap", "opa.portinfo.mtu.cap",
10129 FT_UINT8, BASE_HEX, VALS(MTU), 0x0F, NULL, HFILL }
10131 { &hf_opa_PortInfo_Resp_reserved, {
10132 "Resp Reserved (3 bits)", "opa.portinfo.resp.reserved",
10133 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
10135 { &hf_opa_PortInfo_Resp_TimeValue, {
10136 "Resp TimeValue", "opa.portinfo.resp.timevalue",
10137 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
10139 { &hf_opa_PortInfo_LocalPortNum, {
10140 "LocalPortNum", "opa.portinfo.localportnum",
10141 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10144 /*******************
10145 * Port State Info *
10146 *******************/
10148 { &hf_opa_PortStates, {
10149 "PortStates", "opa.portstates",
10150 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10152 { &hf_opa_PortStates_reserved, {
10153 "Reserved (10 bits)", "opa.portstates.reserved",
10154 FT_UINT32, BASE_HEX, NULL, 0xFF800000, NULL, HFILL }
10156 { &hf_opa_PortStates_LEDEnabled, {
10157 "LEDEnabled", "opa.portstates.ledenabled",
10158 FT_BOOLEAN, 32, NULL, 0x00400000, NULL, HFILL }
10160 { &hf_opa_PortStates_IsSMConfigurationStarted, {
10161 "IsSMConfigurationStarted", "opa.portstates.issmconfigurationstarted",
10162 FT_BOOLEAN, 32, NULL, 0x00200000, NULL, HFILL }
10164 { &hf_opa_PortStates_NeighborNormal, {
10165 "NeighborNormal", "opa.portstates.neighbornormal",
10166 FT_BOOLEAN, 32, NULL, 0x00100000, NULL, HFILL }
10168 { &hf_opa_PortStates_OfflineDisabledReason, {
10169 "OfflineDisabledReason", "opa.portstates.offlinedisabledreason",
10170 FT_UINT32, BASE_HEX, VALS(OfflineDisabledReason), 0x000F0000, NULL, HFILL }
10172 { &hf_opa_PortStates_PortUnsleepState, {
10173 "PortUnsleepState", "opa.portstates.portunsleepstates",
10174 FT_UINT32, BASE_HEX, VALS(PortPhysicalState), 0x0000F000, NULL, HFILL }
10176 { &hf_opa_PortStates_DownDefaultState, {
10177 "DownDefaultState", "opa.portstates.downdefaultstate",
10178 FT_UINT32, BASE_HEX, VALS(PortPhysicalState), 0x00000F00, NULL, HFILL }
10180 { &hf_opa_PortStates_PortPhysicalState, {
10181 "PortPhysicalState", "opa.portstates.portphysicalstate",
10182 FT_UINT32, BASE_HEX, VALS(PortPhysicalState), 0x000000F0, NULL, HFILL }
10184 { &hf_opa_PortStates_PortState, {
10185 "PortState", "opa.portstates.portstate",
10186 FT_UINT32, BASE_HEX, VALS(PortState), 0x0000000F, NULL, HFILL }
10188 { &hf_opa_PortStates_LinkWidthDowngradeTxActive, {
10189 "LinkWidthDowngrade TxActive", "opa.portstates.linkwidthdowngradetxactive",
10190 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
10192 { &hf_opa_PortStates_LinkWidthDowngradeRxActive, {
10193 "LinkWidthDowngrade RxActive", "opa.portstates.linkwidthdowngraderxactive",
10194 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_linkwidth), 0x0, NULL, HFILL }
10197 /*****************
10198 * P_KeyTable *
10199 *****************/
10201 { &hf_opa_P_KeyTable, {
10202 "P_Key Table", "opa.p_keytable",
10203 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10205 { &hf_opa_P_KeyTable_MembershipType, {
10206 "Membership Type", "opa.p_keytable.membershiptype",
10207 FT_BOOLEAN, 16, TFS(&tfs_PKeyMembershipType), 0x8000, NULL, HFILL }
10209 { &hf_opa_P_KeyTable_P_KeyBase, {
10210 "P_Key Base", "opa.p_keytable.p_keybase",
10211 FT_UINT16, BASE_HEX, NULL, 0x7FFF, NULL, HFILL }
10214 /**************************
10215 * SLtoSC Mapping Table *
10216 **************************/
10218 { &hf_opa_SLtoSCMappingTable, {
10219 "SL to SC Mapping Table", "opa.sltoscmappingtable",
10220 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10222 { &hf_opa_SLtoSCMappingTable_SLtoSC_HighBits, {
10223 "Reserved (3 bits)", "opa.sltoscmappingtable.sltoschighbits",
10224 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
10226 { &hf_opa_SLtoSCMappingTable_SLtoSC_LowBits, {
10227 "SC", "opa.sltoscmappingtable.sltosclowbits",
10228 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
10231 /**************************
10232 * SCtoSC Mapping Table *
10233 **************************/
10235 { &hf_opa_SCtoSCMappingTable, {
10236 "SC to SC Mapping Table", "opa.sctoscmappingtable",
10237 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10239 { &hf_opa_SCtoSCMappingTable_SCtoSC_HighBits, {
10240 "Reserved (3 bits)", "opa.sctoscmappingtable.sctoschighbits",
10241 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
10243 { &hf_opa_SCtoSCMappingTable_SCtoSC_LowBits, {
10244 "SC", "opa.sctoscmappingtable.sctosclowbits",
10245 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
10248 /**************************
10249 * SCtoSL Mapping Table *
10250 **************************/
10252 { &hf_opa_SCtoSLMappingTable, {
10253 "SC to SL Mapping Table", "opa.sctoslmappingtable",
10254 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10256 { &hf_opa_SCtoSLMappingTable_SCtoSL_HighBits, {
10257 "Reserved (3 bits)", "opa.sctoslmappingtable.sctoslhighbits",
10258 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
10260 { &hf_opa_SCtoSLMappingTable_SCtoSL_LowBits, {
10261 "SL", "opa.sctoslmappingtable.sctosllowbits",
10262 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
10265 /**************************
10266 * SCtoVLx Mapping Table *
10267 **************************/
10269 { &hf_opa_SCtoVLxMappingTable, {
10270 "SC to VLx Mapping Table", "opa.sctovlxmappingtable",
10271 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10273 { &hf_opa_SCtoVLxMappingTable_SCtoVLx_HighBits, {
10274 "Reserved (3 bits)", "opa.sctovlxmappingtable.sctovlxhighbits",
10275 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
10277 { &hf_opa_SCtoVLxMappingTable_SCtoVLx_LowBits, {
10278 "VL", "opa.sctovlxmappingtable.sctovlxlowbits",
10279 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
10282 /**************************
10283 * VLArbitrationTable *
10284 **************************/
10285 { &hf_opa_VLArbitrationTable, {
10286 "VL Arbitration Table", "opa.vlarbitrationtable",
10287 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10289 { &hf_opa_VLArbitrationTable_reserved, {
10290 "Reserved (3 bits)", "opa.vlarbitrationtable.reserved",
10291 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
10293 { &hf_opa_VLArbitrationTable_VL, {
10294 "VL", "opa.vlarbitrationtable.vl",
10295 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
10297 { &hf_opa_VLArbitrationTable_Weight, {
10298 "Weight", "opa.vlarbitrationtable.weight",
10299 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10301 { &hf_opa_VLArbitrationTable_Matrix, {
10302 "Element", "opa.vlarbitrationtable.matrix",
10303 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10306 /*************************
10307 * LinearForwardingTable *
10308 *************************/
10310 { &hf_opa_LinearForwardingTable, {
10311 "Linear Forwarding Table", "opa.linearforwardingtable",
10312 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10314 { &hf_opa_LinearForwardingTable_Port, {
10315 "Port", "opa.linearforwardingtable.port",
10316 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10319 /****************************
10320 * MulticastForwardingTable *
10321 ****************************/
10323 { &hf_opa_MulticastForwardingTable, {
10324 "Multicast Forwarding Table", "opa.multicastforwardingtable",
10325 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10327 { &hf_opa_MulticastForwardingTable_PortMask, {
10328 "Port Mask", "opa.multicastforwardingtable.portmask",
10329 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
10332 /****************************
10333 * PortGroupForwardingTable *
10334 ****************************/
10336 { &hf_opa_PortGroupForwardingTable, {
10337 "Port Group Forwarding Table", "opa.portgroupforwardingtable",
10338 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10340 { &hf_opa_PortGroupForwardingTable_Port, {
10341 "Port", "opa.portgroupforwardingtable.port",
10342 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10345 /******************
10346 * PortGroupTable *
10347 ******************/
10349 { &hf_opa_PortGroupTable, {
10350 "Port Group Table", "opa.portgrouptable",
10351 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10353 { &hf_opa_PortGroupTable_PortMask, {
10354 "Port Mask", "opa.portgrouptable.portmask",
10355 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
10358 /**********
10359 * SMInfo *
10360 **********/
10362 { &hf_opa_SMInfo, {
10363 "SM Info", "opa.sminfo",
10364 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10366 { &hf_opa_SMInfo_GUID, {
10367 "GUID", "opa.sminfo.guid",
10368 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
10370 { &hf_opa_SMInfo_SM_Key, {
10371 "SM_Key", "opa.sminfo.sm_key",
10372 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
10374 { &hf_opa_SMInfo_ActCount, {
10375 "ActCount", "opa.sminfo.actcount",
10376 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10378 { &hf_opa_SMInfo_ElapsedTime, {
10379 "ElapsedTime", "opa.sminfo.elapsedtime",
10380 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10382 { &hf_opa_SMInfo_Priority, {
10383 "Priority", "opa.sminfo.priority",
10384 FT_UINT16, BASE_HEX, NULL, 0xF000, NULL, HFILL }
10386 { &hf_opa_SMInfo_ElevatedPriority, {
10387 "ElevatedPriority", "opa.sminfo.elevatedpriority",
10388 FT_UINT16, BASE_HEX, NULL, 0x0F00, NULL, HFILL }
10390 { &hf_opa_SMInfo_InitialPriority, {
10391 "InitialPriority", "opa.sminfo.initialpriority",
10392 FT_UINT16, BASE_HEX, NULL, 0x00F0, NULL, HFILL }
10394 { &hf_opa_SMInfo_SMState, {
10395 "SMState", "opa.sminfo.smstate",
10396 FT_UINT16, BASE_HEX, NULL, 0x000F, NULL, HFILL }
10399 /***********
10400 * LedInfo *
10401 ***********/
10403 { &hf_opa_LedInfo, {
10404 "Led Info", "opa.ledinfo",
10405 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10407 { &hf_opa_LedInfo_LedMask, {
10408 "LedMask", "opa.ledinfo.ledmask",
10409 FT_BOOLEAN, 32, NULL, 0x80000000, NULL, HFILL }
10411 { &hf_opa_LedInfo_reserved, {
10412 "Reserved (31 bits)", "opa.ledinfo.reserved",
10413 FT_UINT32, BASE_HEX, NULL, 0x7FFFFFFF, NULL, HFILL }
10416 /************
10417 * CableInfo *
10418 *************/
10420 { &hf_opa_CableInfo, {
10421 "Cable Info", "opa.cableinfo",
10422 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10424 { &hf_opa_CableInfo_Data, {
10425 "Data", "opa.cableinfo.data",
10426 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10428 { &hf_opa_CableInfo_DataStream, {
10429 "Data", "opa.cableinfo.datastream",
10430 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
10433 /************
10434 * Aggregate *
10435 *************/
10437 { &hf_opa_Aggregate, {
10438 "Aggregate", "opa.aggregate",
10439 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10441 { &hf_opa_Aggregate_AttributeID, {
10442 "Attribute ID", "opa.aggregate.attrid",
10443 FT_UINT16, BASE_HEX, VALS(SUBM_Attributes), 0x0, NULL, HFILL }
10445 { &hf_opa_Aggregate_Error, {
10446 "Error", "opa.aggregate.error",
10447 FT_BOOLEAN, 16, NULL, 0x8000, NULL, HFILL }
10449 { &hf_opa_Aggregate_RequestLength, {
10450 "Request Length", "opa.aggregate.requestlength",
10451 FT_UINT16, BASE_DEC, NULL, 0x007F, NULL, HFILL }
10454 /*********************
10455 * BufferControlTable *
10456 **********************/
10458 { &hf_opa_BufferControlTable, {
10459 "Buffer Control Table", "opa.buffercontroltable",
10460 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10462 { &hf_opa_BufferControlTable_TxOverallSharedLimit, {
10463 "Tx Overall Shared Limit", "opa.buffercontroltable.txoverallsharedlimit",
10464 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10466 { &hf_opa_BufferControlTable_TxDedicatedLimit, {
10467 "Tx Dedicated Limit", "opa.buffercontroltable.txdedicatedlimit",
10468 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10470 { &hf_opa_BufferControlTable_TxSharedLimit, {
10471 "Tx Shared Limit", "opa.buffercontroltable.txsharedlimit",
10472 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10474 /*******************
10475 * FabricInfoRecord *
10476 ********************/
10478 { &hf_opa_FabricInfoRecord, {
10479 "Fabric Info Record", "opa.fabricinforecord",
10480 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10482 { &hf_opa_FabricInfoRecord_NumHFIs, {
10483 "Num HFIs", "opa.fabricinforecord.numhfis",
10484 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10486 { &hf_opa_FabricInfoRecord_NumSwitches, {
10487 "Num Switches", "opa.fabricinforecord.numswitches",
10488 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10490 { &hf_opa_FabricInfoRecord_NumInternalHFILinks, {
10491 "Num Internal HFI Links", "opa.fabricinforecord.numinternalhfilinks",
10492 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10494 { &hf_opa_FabricInfoRecord_NumExternalHFILinks, {
10495 "Num External HFI Links", "opa.fabricinforecord.numexternalhfilinks",
10496 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10498 { &hf_opa_FabricInfoRecord_NumInternalISLs, {
10499 "Num Internal ISLs", "opa.fabricinforecord.numinternalisls",
10500 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10502 { &hf_opa_FabricInfoRecord_NumExternalISLs, {
10503 "Num External ISLs", "opa.fabricinforecord.numexternalisls",
10504 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10506 { &hf_opa_FabricInfoRecord_NumDegradedHFILinks, {
10507 "Num Degraded HFI Links", "opa.fabricinforecord.numdegradedhfilinks",
10508 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10510 { &hf_opa_FabricInfoRecord_NumDegradedISLs, {
10511 "Num Degraded ISLs", "opa.fabricinforecord.numdegradedisls",
10512 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10514 { &hf_opa_FabricInfoRecord_NumOmittedHFILinks, {
10515 "Num Omitted HFI Links", "opa.fabricinforecord.numomittedhfilinks",
10516 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10518 { &hf_opa_FabricInfoRecord_NumOmittedISLs, {
10519 "Num Omitted ISLs", "opa.fabricinforecord.numomittedisls",
10520 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10522 { &hf_opa_FabricInfoRecord_Reserved, {
10523 "Reserved (92 Bytes)", "opa.fabricinforecord.reserved",
10524 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
10527 /*****************
10528 * CongestionInfo *
10529 ******************/
10531 { &hf_opa_CongestionInfo, {
10532 "Congestion Info", "opa.congestioninfo",
10533 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10535 { &hf_opa_CongestionInfo_CongestionInfo, {
10536 "Congestion Info", "opa.congestioninfo.congestioninfo",
10537 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10539 { &hf_opa_CongestionInfo_ControlTableCap, {
10540 "Control Table Cap", "opa.congestioninfo.controltablecap",
10541 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10543 { &hf_opa_CongestionInfo_CongestionLogLength, {
10544 "Congestion Log Length", "opa.congestioninfo.congestionloglength",
10545 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10548 /***********************
10549 * SwitchCongestionLog *
10550 ***********************/
10552 { &hf_opa_SwitchCongestionLog, {
10553 "Switch Congestion Log", "opa.switchcongestionlog",
10554 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10556 { &hf_opa_SwitchCongestionLog_LogType, {
10557 "Log Type", "opa.switchcongestionlog.logtype",
10558 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10560 { &hf_opa_SwitchCongestionLog_CongestionFlags, {
10561 "Congestion Flags", "opa.switchcongestionlog.congestionflags",
10562 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10564 { &hf_opa_SwitchCongestionLog_LogEventsCounter, {
10565 "Log Events Counter", "opa.switchcongestionlog.logeventscounter",
10566 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10568 { &hf_opa_SwitchCongestionLog_CurrentTimeStamp, {
10569 "Current Time Stamp", "opa.switchcongestionlog.currenttimestamp",
10570 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10572 { &hf_opa_SwitchCongestionLog_PortMap, {
10573 "Port Map", "opa.switchcongestionlog.portmap",
10574 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
10576 { &hf_opa_SwitchCongestionLog_SLID, {
10577 "SLID", "opa.switchcongestionlog.slid",
10578 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10580 { &hf_opa_SwitchCongestionLog_DLID, {
10581 "DLID", "opa.switchcongestionlog.dlid",
10582 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10584 { &hf_opa_SwitchCongestionLog_SC, {
10585 "SC", "opa.switchcongestionlog.sc",
10586 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
10588 { &hf_opa_SwitchCongestionLog_reserved, {
10589 "Reserved (3 bits)", "opa.switchcongestionlog.reserved",
10590 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
10592 { &hf_opa_SwitchCongestionLog_TimeStamp, {
10593 "Time Stamp", "opa.switchcongestionlog.timestamp",
10594 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10597 /***************************
10598 * SwitchCongestionSetting *
10599 ***************************/
10601 { &hf_opa_SwitchCongestionSetting, {
10602 "Switch Congestion Setting", "opa.switchcongestionsetting",
10603 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10605 { &hf_opa_SwitchCongestionSetting_Control_Map, {
10606 "Control Map", "opa.switchcongestionsetting.controlmap",
10607 FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_swcongestionsetting_controlmap), 0x0, NULL, HFILL }
10609 { &hf_opa_SwitchCongestionSetting_Victim_Mask, {
10610 "Victim Mask", "opa.switchcongestionsetting.victimmask",
10611 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
10613 { &hf_opa_SwitchCongestionSetting_Credit_Mask, {
10614 "Credit Mask", "opa.switchcongestionsetting.creditmask",
10615 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
10617 { &hf_opa_SwitchCongestionSetting_Threshold, {
10618 "Threshold", "opa.switchcongestionsetting.threshold",
10619 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
10621 { &hf_opa_SwitchCongestionSetting_reserved1, {
10622 "Reserved (4 bits)", "opa.switchcongestionsetting.reserved1",
10623 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
10625 { &hf_opa_SwitchCongestionSetting_Packet_Size, {
10626 "Packet Size", "opa.switchcongestionsetting.packetsize",
10627 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10629 { &hf_opa_SwitchCongestionSetting_CS_Threshold, {
10630 "CS Threshold", "opa.switchcongestionsetting.csthreshold",
10631 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
10633 { &hf_opa_SwitchCongestionSetting_reserved2, {
10634 "Reserved (4 bits)", "opa.switchcongestionsetting.reserved2",
10635 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
10637 { &hf_opa_SwitchCongestionSetting_CS_ReturnDelay, {
10638 "CS ReturnDelay", "opa.switchcongestionsetting.csreturndelay",
10639 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10641 { &hf_opa_SwitchCongestionSetting_Marking_Rate, {
10642 "Marking Rate", "opa.switchcongestionsetting.markingrate",
10643 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10646 /*******************************
10647 * SwitchPortCongestionSetting *
10648 *******************************/
10650 { &hf_opa_SwitchPortCongestionSetting, {
10651 "Switch Port Congestion Setting", "opa.switchportcongestionsetting",
10652 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10654 { &hf_opa_SwitchPortCongestionSetting_Valid, {
10655 "Valid", "opa.switchportcongestionsetting.valid",
10656 FT_BOOLEAN, 8, TFS(&tfs_valid_invalid), 0x80, NULL, HFILL }
10658 { &hf_opa_SwitchPortCongestionSetting_Control_Type, {
10659 "Control Type", "opa.switchportcongestionsetting.controltype",
10660 FT_BOOLEAN, 8, TFS(&tfs_SwPortCongSetting_CtrlType), 0x40, NULL, HFILL }
10662 { &hf_opa_SwitchPortCongestionSetting_reserved, {
10663 "Reserved (2 bits)", "opa.switchportcongestionsetting.reserved",
10664 FT_UINT8, BASE_HEX, NULL, 0x30, NULL, HFILL }
10666 { &hf_opa_SwitchPortCongestionSetting_Threshold, {
10667 "Threshold", "opa.switchportcongestionsetting.threshold",
10668 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
10670 { &hf_opa_SwitchPortCongestionSetting_Packet_Size, {
10671 "Packet Size", "opa.switchportcongestionsetting.packetsize",
10672 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10674 { &hf_opa_SwitchPortCongestionSetting_Marking_Rate, {
10675 "Marking Rate", "opa.switchportcongestionsetting.markingrate",
10676 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10679 /********************
10680 * HFICongestionLog *
10681 ********************/
10683 { &hf_opa_HFICongestionLog, {
10684 "HFI Congestion Log", "opa.hficongestionlog",
10685 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10687 { &hf_opa_HFICongestionLog_LogType, {
10688 "Log Type", "opa.hficongestionsetting.logtype",
10689 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10691 { &hf_opa_HFICongestionLog_CongestionFlags, {
10692 "Congestion Flags", "opa.hficongestionsetting.congestionflags",
10693 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10695 { &hf_opa_HFICongestionLog_ThresholdEventCounter, {
10696 "Threshold Event Counter", "opa.hficongestionsetting.thresholdeventcounter",
10697 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10699 { &hf_opa_HFICongestionLog_CurrentTimeStamp, {
10700 "Current Time Stamp", "opa.hficongestionsetting.currenttimestamp",
10701 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10703 { &hf_opa_HFICongestionLog_ThresholdCongestionEventMap, {
10704 "Threshold Congestion Event Map", "opa.hficongestionsetting.thresholdcongestioneventmap",
10705 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10707 { &hf_opa_HFICongestionLog_Local_QP_CN_Entry, {
10708 "Local QP CN Entry", "opa.hficongestionsetting.localqpcnentry",
10709 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
10711 { &hf_opa_HFICongestionLog_Remote_QP_Number_CN_Entry, {
10712 "Remote QP Number CN Entry", "opa.hficongestionsetting.remoteqpnumbercnentry",
10713 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
10715 { &hf_opa_HFICongestionLog_SL_CN_Entry, {
10716 "Threshold Congestion Event Map", "opa.hficongestionsetting.thresholdcongestioneventmap",
10717 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }
10719 { &hf_opa_HFICongestionLog_Service_Type_CN_Entry, {
10720 "Service Type CN Entry", "opa.hficongestionsetting.servicetypecnentry",
10721 FT_UINT8, BASE_HEX, NULL, 0x0E, NULL, HFILL }
10723 { &hf_opa_HFICongestionLog_Remote_LID_CN_Entry, {
10724 "LID CN Entry", "opa.hficongestionsetting.lidcnentry",
10725 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10727 { &hf_opa_HFICongestionLog_TimeStamp_CN_Entry, {
10728 "TimeStamp CN Entry", "opa.hficongestionsetting.timestampcnentry",
10729 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10732 /************************
10733 * HFICongestionSetting *
10734 ************************/
10736 { &hf_opa_HFICongestionSetting, {
10737 "HFI Congestion Setting", "opa.hficongestionsetting",
10738 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10740 { &hf_opa_HFICongestionSetting_Control_Map, {
10741 "Control Map", "opa.hficongestionsetting.controlmap",
10742 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10744 { &hf_opa_HFICongestionSetting_Port_Control, {
10745 "Port Control", "opa.hficongestionsetting.portcontrol",
10746 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10748 { &hf_opa_HFICongestionSetting_CCTI_Increase, {
10749 "CCTI Increase", "opa.hficongestionsetting.cctiincrease",
10750 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10752 { &hf_opa_HFICongestionSetting_CCTI_Timer, {
10753 "CCTI Timer", "opa.hficongestionsetting.cctitimer",
10754 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10756 { &hf_opa_HFICongestionSetting_TriggerThreshold, {
10757 "Trigger Threshold", "opa.hficongestionsetting.triggerthreshold",
10758 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10760 { &hf_opa_HFICongestionSetting_CCTI_Min, {
10761 "CCTI Min", "opa.hficongestionsetting.cctimin",
10762 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10765 /*****************************
10766 * HFICongestionControlTable *
10767 *****************************/
10769 { &hf_opa_HFICongestionControlTable, {
10770 "HFI Congestion Control Table", "opa.hficongestioncontroltable",
10771 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10773 { &hf_opa_HFICongestionControlTable_CCTI_Limit, {
10774 "CCTI Limit", "opa.hficongestioncontroltable.cctilimit",
10775 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10777 { &hf_opa_HFICongestionControlTable_CCT_Shift, {
10778 "CCT Shift", "opa.hficongestioncontroltable.cctshift",
10779 FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
10781 { &hf_opa_HFICongestionControlTable_CCT_Multiplier, {
10782 "CCT Multiplier", "opa.hficongestioncontroltable.cctmultiplier",
10783 FT_UINT16, BASE_HEX, NULL, 0x3FFF, NULL, HFILL }
10786 /* SA */
10787 { &hf_opa_PortInfoRecord_LinkDownReason_NeighborLinkDownReason, {
10788 "Neighbor Link Down Reason", "opa.portinforecord.linkdownreason.neighborlinkdownreason",
10789 FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
10791 { &hf_opa_PortInfoRecord_LinkDownReason_LinkDownReason, {
10792 "Link Down Reason", "opa.portinforecord.linkdownreason.linkdownreason",
10793 FT_UINT8, BASE_HEX, VALS(LinkDownReason), 0x0, NULL, HFILL }
10795 { &hf_opa_PortInfoRecord_LinkDownReason_Timestamp, {
10796 "Time Stamp", "opa.portinforecord.linkdownreason.timestamp",
10797 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
10800 /* InformInfoRecord */
10801 /* InformInfo */
10802 { &hf_opa_InformInfo, {
10803 "Inform Info", "opa.informinfo",
10804 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10806 { &hf_opa_InformInfo_GID, {
10807 "GID", "opa.informinfo.gid",
10808 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
10810 { &hf_opa_InformInfo_LIDRangeBegin, {
10811 "LID Range Begin", "opa.informinfo.lidrangebegin",
10812 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10814 { &hf_opa_InformInfo_LIDRangeEnd, {
10815 "LID Range End", "opa.informinfo.lidrangeend",
10816 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10818 { &hf_opa_InformInfo_IsGeneric, {
10819 "Is Generic", "opa.informinfo.isgeneric",
10820 FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }
10822 { &hf_opa_InformInfo_Subscribe, {
10823 "Subscribe", "opa.informinfo.subscribe",
10824 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10826 { &hf_opa_InformInfo_Type, {
10827 "Type", "opa.informinfo.type",
10828 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10830 { &hf_opa_InformInfo_TrapNumber, {
10831 "Trap Number", "opa.informinfo.trapnumber",
10832 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10834 { &hf_opa_InformInfo_DeviceID, {
10835 "Device ID", "opa.informinfo.deviceid",
10836 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10838 { &hf_opa_InformInfo_QPN, {
10839 "QPN", "opa.informinfo.qpn",
10840 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
10842 { &hf_opa_InformInfo_reserved, {
10843 "Reserved (3 bits)", "opa.informinfo.reserved",
10844 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL }
10846 { &hf_opa_InformInfo_RespTimeValue, {
10847 "Resp Time Value", "opa.informinfo.resptimevalue",
10848 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
10850 { &hf_opa_InformInfo_ProducerType, {
10851 "Producer Type", "opa.informinfo.producertype",
10852 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
10854 { &hf_opa_InformInfo_VendorID, {
10855 "Vendor ID", "opa.informinfo.vendorid",
10856 FT_UINT24, BASE_HEX, NULL, 0x0, NULL, HFILL }
10859 /* LinkRecord */
10860 { &hf_opa_LinkRecord, {
10861 "Link Record", "opa.linkrecord",
10862 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10864 { &hf_opa_LinkRecord_ToPort, {
10865 "To Port", "opa.linkrecord.toport",
10866 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10868 { &hf_opa_LinkRecord_ToLID, {
10869 "To LID", "opa.linkrecord.tolid",
10870 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10873 /* ServiceRecord */
10874 { &hf_opa_ServiceRecord, {
10875 "Service Record", "opa.servicerecord",
10876 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10878 { &hf_opa_ServiceRecord_ServiceLease, {
10879 "ServiceLease", "opa.servicerecord.servicelease",
10880 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
10882 { &hf_opa_ServiceRecord_ServiceKey, {
10883 "ServiceKey", "opa.servicerecord.servicekey",
10884 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
10886 { &hf_opa_ServiceRecord_ServiceName, {
10887 "ServiceName", "opa.servicerecord.servicename",
10888 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
10890 { &hf_opa_ServiceRecord_ServiceData, {
10891 "ServiceData", "opa.servicerecord.servicedata",
10892 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
10895 /* ServiceAssociationRecord */
10896 { &hf_opa_ServiceAssociationRecord_ServiceKey, {
10897 "ServiceKey", "opa.serviceassociationrecord.servicekey",
10898 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
10900 { &hf_opa_ServiceAssociationRecord_ServiceName, {
10901 "ServiceName", "opa.serviceassociationrecord.servicename",
10902 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
10905 /**************
10906 * PathRecord *
10907 **************/
10908 { &hf_opa_PathRecord, {
10909 "Path Record", "opa.pathrecord",
10910 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
10912 { &hf_opa_PathRecord_DGID, {
10913 "DGID", "opa.pathrecord.dgid",
10914 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
10916 { &hf_opa_PathRecord_SGID, {
10917 "SGID", "opa.pathrecord.sgid",
10918 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
10920 { &hf_opa_PathRecord_DLID, {
10921 "DLID", "opa.pathrecord.dlid",
10922 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10924 { &hf_opa_PathRecord_SLID, {
10925 "SLID", "opa.pathrecord.slid",
10926 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10928 { &hf_opa_PathRecord_RawTraffic, {
10929 "Raw Traffic", "opa.pathrecord.rawtraffic",
10930 FT_UINT32, BASE_HEX, NULL, 0x80000000, NULL, HFILL }
10932 { &hf_opa_PathRecord_reserved, {
10933 "Reserved (3 bits)", "opa.pathrecord.reserved",
10934 FT_UINT32, BASE_HEX, NULL, 0x70000000, NULL, HFILL }
10936 { &hf_opa_PathRecord_FlowLabel, {
10937 "Flow Label", "opa.pathrecord.flowlabel",
10938 FT_UINT32, BASE_HEX, NULL, 0x0FFFFF00, NULL, HFILL }
10940 { &hf_opa_PathRecord_HopLimit, {
10941 "Hop Limit", "opa.pathrecord.hoplimit",
10942 FT_UINT32, BASE_HEX, NULL, 0x000000FF, NULL, HFILL }
10944 { &hf_opa_PathRecord_TClass, {
10945 "T Class", "opa.pathrecord.tclass",
10946 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
10948 { &hf_opa_PathRecord_Reversible, {
10949 "Reversible", "opa.pathrecord.reversible",
10950 FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
10952 { &hf_opa_PathRecord_NumbPath, {
10953 "Numb Path", "opa.pathrecord.numbpath",
10954 FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
10956 { &hf_opa_PathRecord_P_Key, {
10957 "P_Key", "opa.pathrecord.p_key",
10958 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
10960 { &hf_opa_PathRecord_QosType, {
10961 "Qos Type", "opa.pathrecord.qostype",
10962 FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
10964 { &hf_opa_PathRecord_reserved2, {
10965 "Reserved (2 bits)", "opa.pathrecord.reserved2",
10966 FT_UINT16, BASE_HEX, NULL, 0x3000, NULL, HFILL }
10968 { &hf_opa_PathRecord_QosPriority, {
10969 "Qos Priority", "opa.pathrecord.qospriority",
10970 FT_UINT16, BASE_HEX, NULL, 0x0FF0, NULL, HFILL }
10972 { &hf_opa_PathRecord_SL, {
10973 "SL", "opa.pathrecord.sl",
10974 FT_UINT16, BASE_HEX, NULL, 0x000F, NULL, HFILL }
10976 { &hf_opa_PathRecord_MTUSelector, {
10977 "MTU Selector", "opa.pathrecord.mtuselector",
10978 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
10980 { &hf_opa_PathRecord_MTU, {
10981 "MTU", "opa.pathrecord.mtu",
10982 FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
10984 { &hf_opa_PathRecord_RateSelector, {
10985 "Rate Selector", "opa.pathrecord.rateselector",
10986 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
10988 { &hf_opa_PathRecord_Rate, {
10989 "Rate", "opa.pathrecord.rate",
10990 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
10992 { &hf_opa_PathRecord_PacketLifeTimeSelector, {
10993 "Packet Life Time Selector", "opa.pathrecord.packetlifetimeselector",
10994 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
10996 { &hf_opa_PathRecord_PacketLifeTime, {
10997 "Packet Life Time", "opa.pathrecord.packetlifetime",
10998 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
11000 { &hf_opa_PathRecord_Preference, {
11001 "Preference", "opa.pathrecord.preference",
11002 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
11005 /******************
11006 * MCMemberRecord *
11007 ******************/
11009 { &hf_opa_MCMemberRecord, {
11010 "MC Member Record", "opa.mcmemberrecord",
11011 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11013 { &hf_opa_MCMemberRecord_Q_Key, {
11014 "Q_Key", "opa.mcmemberrecord.q_key",
11015 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
11017 { &hf_opa_MCMemberRecord_MLID, {
11018 "MLID", "opa.mcmemberrecord.mlid",
11019 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
11021 { &hf_opa_MCMemberRecord_MTUSelector, {
11022 "MTU Selector", "opa.mcmemberrecord.mtuselector",
11023 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
11025 { &hf_opa_MCMemberRecord_MTU, {
11026 "MTU", "opa.mcmemberrecord.mtu",
11027 FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
11029 { &hf_opa_MCMemberRecord_TClass, {
11030 "T Class", "opa.mcmemberrecord.tclass",
11031 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
11033 { &hf_opa_MCMemberRecord_P_Key, {
11034 "P_Key", "opa.mcmemberrecord.p_key",
11035 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
11037 { &hf_opa_MCMemberRecord_RateSelector, {
11038 "Rate Selector", "opa.mcmemberrecord.rateselector",
11039 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
11041 { &hf_opa_MCMemberRecord_Rate, {
11042 "Rate", "opa.mcmemberrecord.rate",
11043 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
11045 { &hf_opa_MCMemberRecord_PacketLifeTimeSelector, {
11046 "Packet Life Time Selector", "opa.mcmemberrecord.packetlifetimeselector",
11047 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
11049 { &hf_opa_MCMemberRecord_PacketLifeTime, {
11050 "Packet Life Time", "opa.mcmemberrecord.packetlifetime",
11051 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
11053 { &hf_opa_MCMemberRecord_SL, {
11054 "SL", "opa.mcmemberrecord.sl",
11055 FT_UINT32, BASE_HEX, NULL, 0xF8000000, NULL, HFILL }
11057 { &hf_opa_MCMemberRecord_reserved, {
11058 "Reserved (19 bits)", "opa.mcmemberrecord.reserved",
11059 FT_UINT32, BASE_HEX, NULL, 0x07FFFF00, NULL, HFILL }
11061 { &hf_opa_MCMemberRecord_HopLimit, {
11062 "Hop Limit", "opa.mcmemberrecord.hoplimit",
11063 FT_UINT32, BASE_HEX, NULL, 0x000000FF, NULL, HFILL }
11065 { &hf_opa_MCMemberRecord_Scope, {
11066 "Scope", "opa.mcmemberrecord.scope",
11067 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }
11069 { &hf_opa_MCMemberRecord_reserved2, {
11070 "Reserved (1 bit)", "opa.mcmemberrecord.reserved2",
11071 FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }
11073 { &hf_opa_MCMemberRecord_JoinSendOnlyMember, {
11074 "Join Send Only Member", "opa.mcmemberrecord.joinsendonlymember",
11075 FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
11077 { &hf_opa_MCMemberRecord_JoinNonMember, {
11078 "Join Non Member", "opa.mcmemberrecord.joinnonmember",
11079 FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
11081 { &hf_opa_MCMemberRecord_JoinFullMember, {
11082 "Join Full Member", "opa.mcmemberrecord.joinfullmember",
11083 FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL }
11085 { &hf_opa_MCMemberRecord_ProxyJoin, {
11086 "Proxy Join", "opa.mcmemberrecord.proxyjoin",
11087 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
11089 { &hf_opa_MCMemberRecord_reserved3, {
11090 "Reserved (7 bits)", "opa.mcmemberrecord.reserved3",
11091 FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
11094 /* TraceRecord */
11095 { &hf_opa_TraceRecord, {
11096 "Trace Record", "opa.tracerecord",
11097 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11099 { &hf_opa_TraceRecord_IDGeneration, {
11100 "ID Generation", "opa.tracerecord.idgeneration",
11101 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
11103 { &hf_opa_TraceRecord_NodeType, {
11104 "Node Type", "opa.tracerecord.nodetype",
11105 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
11107 { &hf_opa_TraceRecord_NodeID, {
11108 "Node ID", "opa.tracerecord.nodeid",
11109 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11111 { &hf_opa_TraceRecord_ChassisID, {
11112 "Chassis ID", "opa.tracerecord.chassisid",
11113 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11115 { &hf_opa_TraceRecord_EntryPortID, {
11116 "Entry Port ID", "opa.tracerecord.entryportid",
11117 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11119 { &hf_opa_TraceRecord_ExitPortID, {
11120 "Exit Port ID", "opa.tracerecord.exitportid",
11121 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11123 { &hf_opa_TraceRecord_EntryPort, {
11124 "Entry Port", "opa.tracerecord.entryport",
11125 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
11127 { &hf_opa_TraceRecord_ExitPort, {
11128 "Exit Port", "opa.tracerecord.exitport",
11129 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
11132 /*******************
11133 * MultiPathRecord *
11134 *******************/
11136 { &hf_opa_MultiPathRecord, {
11137 "Multi Path Record", "opa.multipathrecord",
11138 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11140 { &hf_opa_MultiPathRecord_reserved, {
11141 "Reserved (4 bits)", "opa.multipathrecord.reserved",
11142 FT_UINT32, BASE_HEX, NULL, 0xF0000000, NULL, HFILL }
11144 { &hf_opa_MultiPathRecord_FlowLabel, {
11145 "Flow Label", "opa.multipathrecord.flowlabel",
11146 FT_UINT32, BASE_HEX, NULL, 0x0FFFFF00, NULL, HFILL }
11148 { &hf_opa_MultiPathRecord_HopLimit, {
11149 "Hop Limit", "opa.multipathrecord.hoplimit",
11150 FT_UINT32, BASE_HEX, NULL, 0x000000FF, NULL, HFILL }
11152 { &hf_opa_MultiPathRecord_TClass, {
11153 "T Class", "opa.multipathrecord.tclass",
11154 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
11156 { &hf_opa_MultiPathRecord_Reversible, {
11157 "Reversible", "opa.multipathrecord.reversible",
11158 FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
11160 { &hf_opa_MultiPathRecord_NumbPath, {
11161 "Numb Path", "opa.multipathrecord.numbpath",
11162 FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
11164 { &hf_opa_MultiPathRecord_P_Key, {
11165 "P_Key", "opa.multipathrecord.p_key",
11166 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
11168 { &hf_opa_MultiPathRecord_QoSType, {
11169 "QoS Type", "opa.multipathrecord.qostype",
11170 FT_UINT16, BASE_HEX, NULL, 0xC000, NULL, HFILL }
11172 { &hf_opa_MultiPathRecord_QoSPriority, {
11173 "QoS Priority", "opa.multipathrecord.qospriority",
11174 FT_UINT16, BASE_HEX, NULL, 0x3FC0, NULL, HFILL }
11176 { &hf_opa_MultiPathRecord_reserved2, {
11177 "Reserved (1 bit)", "opa.multipathrecord.reserved2",
11178 FT_UINT16, BASE_HEX, NULL, 0x0020, NULL, HFILL }
11180 { &hf_opa_MultiPathRecord_SL, {
11181 "SL", "opa.multipathrecord.sl",
11182 FT_UINT16, BASE_HEX, NULL, 0x001F, NULL, HFILL }
11184 { &hf_opa_MultiPathRecord_MTUSelector, {
11185 "MTU Selector", "opa.multipathrecord.mtuselector",
11186 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
11188 { &hf_opa_MultiPathRecord_MTU, {
11189 "MTU", "opa.multipathrecord.mtu",
11190 FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
11192 { &hf_opa_MultiPathRecord_RateSelector, {
11193 "Rate Selector", "opa.multipathrecord.rateselector",
11194 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
11196 { &hf_opa_MultiPathRecord_Rate, {
11197 "Rate", "opa.multipathrecord.rate",
11198 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
11200 { &hf_opa_MultiPathRecord_PacketLifeTimeSelector, {
11201 "Packet Life Time Selector", "opa.multipathrecord.packetlifetimeselector",
11202 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
11204 { &hf_opa_MultiPathRecord_PacketLifeTime, {
11205 "Packet Life Time", "opa.multipathrecord.packetlifetime",
11206 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
11208 { &hf_opa_MultiPathRecord_IndependenceSelector, {
11209 "Independence Selector", "opa.multipathrecord.independenceselector",
11210 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
11212 { &hf_opa_MultiPathRecord_SGIDScope, {
11213 "SGID Scope", "opa.multipathrecord.sgidscope",
11214 FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
11216 { &hf_opa_MultiPathRecord_DGIDScope, {
11217 "DGID Scope", "opa.multipathrecord.dgidscope",
11218 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
11220 { &hf_opa_MultiPathRecord_SGIDCount, {
11221 "SGID Count", "opa.multipathrecord.sgidcount",
11222 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11224 { &hf_opa_MultiPathRecord_DGIDCount, {
11225 "DGID Count", "opa.multipathrecord.dgidcount",
11226 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11228 { &hf_opa_MultiPathRecord_SGID, {
11229 "Source GID", "opa.multipathrecord.sgid",
11230 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
11232 { &hf_opa_MultiPathRecord_DGID, {
11233 "Dest GID", "opa.multipathrecord.dgid",
11234 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
11236 { &hf_opa_MultiPathRecord_L2_8B, {
11237 "8B Support", "opa.multipathrecord.l2_8b",
11238 FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
11240 { &hf_opa_MultiPathRecord_L2_10B, {
11241 "10B Support", "opa.multipathrecord.l2_10b",
11242 FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }
11244 { &hf_opa_MultiPathRecord_L2_9B, {
11245 "9B Support", "opa.multipathrecord.l2_9b",
11246 FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }
11248 { &hf_opa_MultiPathRecord_L2_16B, {
11249 "16B Support", "opa.multipathrecord.l2_16b",
11250 FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }
11252 { &hf_opa_MultiPathRecord_reserved3, {
11253 "Reserved (4 bits)", "opa.multipathrecord.reserved3",
11254 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
11257 /* GUID */
11258 { &hf_opa_MultiPathRecord_ServiceID, {
11259 "Service ID", "opa.multipathrecord.serviceid",
11260 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11262 { &hf_opa_MultiPathRecord_SubnetPrefix, {
11263 "SubnetPrefix", "opa.multipathrecord.subnetprefix",
11264 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11266 { &hf_opa_MultiPathRecord_SGUIDScope, {
11267 "SGUIDScope", "opa.multipathrecord.sguidscope",
11268 FT_UINT8, BASE_HEX, NULL, 0x38, NULL, HFILL }
11270 { &hf_opa_MultiPathRecord_DGUIDScope, {
11271 "DGUIDScope", "opa.multipathrecord.dguidscope",
11272 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
11274 { &hf_opa_MultiPathRecord_SGUIDCount, {
11275 "SGUIDCount", "opa.multipathrecord.sguidcount",
11276 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
11278 { &hf_opa_MultiPathRecord_DGUIDCount, {
11279 "DGUIDCount", "opa.multipathrecord.dguidcount",
11280 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
11282 { &hf_opa_MultiPathRecord_SGUID, {
11283 "Source GUID", "opa.multipathrecord.sguid",
11284 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11286 { &hf_opa_MultiPathRecord_DGUID, {
11287 "Dest GUID", "opa.multipathrecord.dguid",
11288 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11290 /* LID */
11291 { &hf_opa_MultiPathRecord_SLIDCount, {
11292 "SLIDCount", "opa.multipathrecord.slidcount",
11293 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
11295 { &hf_opa_MultiPathRecord_DLIDCount, {
11296 "DLIDCount", "opa.multipathrecord.dlidcount",
11297 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
11299 { &hf_opa_MultiPathRecord_SLID, {
11300 "Source LID", "opa.multipathrecord.slid",
11301 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
11303 { &hf_opa_MultiPathRecord_DLID, {
11304 "Dest LID", "opa.multipathrecord.dlid",
11305 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
11308 /*******************
11309 * CableInfoRecord *
11310 *******************/
11312 { &hf_opa_CableInfoRecord, {
11313 "Cable Info Record", "opa.cableinforecord",
11314 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11316 { &hf_opa_CableInfoRecord_Lid, {
11317 "LID", "opa.cableinforecord.lid",
11318 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
11320 { &hf_opa_CableInfoRecord_Port, {
11321 "Port", "opa.cableinforecord.port",
11322 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11324 { &hf_opa_CableInfoRecord_Length, {
11325 "Length", "opa.cableinforecord.length",
11326 FT_UINT8, BASE_DEC, NULL, 0xFE, NULL, HFILL }
11328 { &hf_opa_CableInfoRecord_reserved, {
11329 "Reserved (1 bit)", "opa.cableinforecord.reserved",
11330 FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }
11332 { &hf_opa_CableInfoRecord_Address, {
11333 "Address", "opa.cableinforecord.address",
11334 FT_UINT16, BASE_HEX, NULL, 0xFFF0, NULL, HFILL }
11336 { &hf_opa_CableInfoRecord_PortType, {
11337 "PortType", "opa.cableinforecord.porttype",
11338 FT_UINT16, BASE_HEX, VALS(PortType), 0x000F, NULL, HFILL }
11340 { &hf_opa_CableInfoRecord_Data, {
11341 "Data", "opa.cableinforecord.data",
11342 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
11345 /**************
11346 * PortStatus *
11347 **************/
11349 { &hf_opa_PortStatus, {
11350 "Port Status", "opa.pm.portstatus",
11351 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11353 { &hf_opa_PortStatus_PortNumber, {
11354 "Port Number", "opa.pm.portstatus.portnumber",
11355 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11357 { &hf_opa_PortStatus_VLSelectMask, {
11358 "VL Select Mask", "opa.pm.portstatus.vlselectmask",
11359 FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, NULL, HFILL }
11361 { &hf_opa_PortStatus_PortXmitData, {
11362 "PortXmitData", "opa.pm.portstatus.portxmitdata",
11363 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11365 { &hf_opa_PortStatus_PortRcvData, {
11366 "PortRcvData", "opa.pm.portstatus.portrcvdata",
11367 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11369 { &hf_opa_PortStatus_PortXmitPkts, {
11370 "PortXmitPkts", "opa.pm.portstatus.portxmitpkts",
11371 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11373 { &hf_opa_PortStatus_PortRcvPkts, {
11374 "PortRcvPkts", "opa.pm.portstatus.portrcvpkts",
11375 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11377 { &hf_opa_PortStatus_PortMulticastXmitPkts, {
11378 "PortMulticastXmitPkts", "opa.pm.portstatus.portmulticastxmitpkts",
11379 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11381 { &hf_opa_PortStatus_PortMulticastRcvPkts, {
11382 "PortMulticastRcvPkts", "opa.pm.portstatus.portmulticastrcvpkts",
11383 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11385 { &hf_opa_PortStatus_PortXmitWait, {
11386 "PortXmitWait", "opa.pm.portstatus.portxmitwait",
11387 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11389 { &hf_opa_PortStatus_SwPortCongestion, {
11390 "SwPortCongestion", "opa.pm.portstatus.swportcongestion",
11391 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11393 { &hf_opa_PortStatus_PortRcvFECN, {
11394 "PortRcvFECN", "opa.pm.portstatus.portrecvfecn",
11395 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11397 { &hf_opa_PortStatus_PortRcvBECN, {
11398 "PortRcvBECN", "opa.pm.portstatus.portrecvbecn",
11399 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11401 { &hf_opa_PortStatus_PortXmitTimeCong, {
11402 "PortXmitTimeCong", "opa.pm.portstatus.portxmittimecong",
11403 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11405 { &hf_opa_PortStatus_PortXmitWastedBW, {
11406 "PortXmitWastedBW", "opa.pm.portstatus.portxmitwastedbw",
11407 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11409 { &hf_opa_PortStatus_PortXmitWaitData, {
11410 "PortXmitWaitData", "opa.pm.portstatus.portxmitwaitdata",
11411 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11413 { &hf_opa_PortStatus_PortRcvBubble, {
11414 "PortRcvBubble", "opa.pm.portstatus.portrcvbubble",
11415 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11417 { &hf_opa_PortStatus_PortMarkFECN, {
11418 "PortMarkFECN", "opa.pm.portstatus.portmarkfecn",
11419 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11421 { &hf_opa_PortStatus_PortRcvConstraintErrors, {
11422 "PortRcvConstraintErrors", "opa.pm.portstatus.portrcvconstrainterrors",
11423 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11425 { &hf_opa_PortStatus_PortRcvSwitchRelayErrors, {
11426 "PortRcvSwitchRelayErrors", "opa.pm.portstatus.portrcvswitchrelayerrors",
11427 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11429 { &hf_opa_PortStatus_PortXmitDiscards, {
11430 "PortXmitDiscards", "opa.pm.portstatus.portxmitdiscards",
11431 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11433 { &hf_opa_PortStatus_PortXmitConstraintErrors, {
11434 "PortXmitConstraintErrors", "opa.pm.portstatus.portxmitconstrainterrors",
11435 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11437 { &hf_opa_PortStatus_PortRcvRemotePhysicalErrors, {
11438 "PortRcvRemotePhysicalErrors", "opa.pm.portstatus.portrcvremotephysicalerrors",
11439 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11441 { &hf_opa_PortStatus_LocalLinkIntegrityErrors, {
11442 "LocalLinkIntegrityErrors", "opa.pm.portstatus.locallinkintegrityerrors",
11443 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11445 { &hf_opa_PortStatus_PortRcvErrors, {
11446 "PortRcvErrors", "opa.pm.portstatus.portrcverrors",
11447 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11449 { &hf_opa_PortStatus_ExcessiveBufferOverruns, {
11450 "ExcessiveBufferOverruns", "opa.pm.portstatus.excessivebufferoverruns",
11451 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11453 { &hf_opa_PortStatus_FMConfigErrors, {
11454 "FMConfigErrors", "opa.pm.portstatus.fmconfigerrors",
11455 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11457 { &hf_opa_PortStatus_LinkErrorRecovery, {
11458 "LinkErrorRecovery", "opa.pm.portstatus.linkerrorrecovery",
11459 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
11461 { &hf_opa_PortStatus_LinkDowned, {
11462 "LinkDowned", "opa.pm.portstatus.linkdowned",
11463 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
11465 { &hf_opa_PortStatus_UncorrectableErrors, {
11466 "UncorrectableErrors", "opa.pm.portstatus.uncorrectableerrors",
11467 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11469 { &hf_opa_PortStatus_reserved, {
11470 "Reserved", "opa.pm.portstatus.reserved",
11471 FT_UINT8, BASE_DEC, NULL, 0xF8, NULL, HFILL }
11473 { &hf_opa_PortStatus_LinkQualityIndicator, {
11474 "LinkQualityIndicator", "opa.pm.portstatus.linkqualityindicator",
11475 FT_UINT8, BASE_DEC, VALS(LinkQualityIndicator), 0x07, NULL, HFILL }
11477 { &hf_opa_PortStatus_PortVLXmitData, {
11478 "PortVLXmitData", "opa.pm.portstatus.vl.xmitdata",
11479 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11481 { &hf_opa_PortStatus_PortVLRcvData, {
11482 "PortVLRcvData", "opa.pm.portstatus.vl.rcvdata",
11483 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11485 { &hf_opa_PortStatus_PortVLXmitPkts, {
11486 "PortVLXmitPkts", "opa.pm.portstatus.vl.xmitpkts",
11487 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11489 { &hf_opa_PortStatus_PortVLRcvPkts, {
11490 "PortVLRcvPkts", "opa.pm.portstatus.vl.rcvpkts",
11491 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11493 { &hf_opa_PortStatus_PortVLXmitWait, {
11494 "PortVLXmitWait", "opa.pm.portstatus.vl.xmitwait",
11495 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11497 { &hf_opa_PortStatus_SwPortVLCongestion, {
11498 "SwPortVLCongestion", "opa.pm.portstatus.vl.swcongestion",
11499 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11501 { &hf_opa_PortStatus_PortVLRcvFECN, {
11502 "PortVLRcvFECN", "opa.pm.portstatus.vl.rcvfecn",
11503 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11505 { &hf_opa_PortStatus_PortVLRcvBECN, {
11506 "PortVLRcvBECN", "opa.pm.portstatus.vl.rcvbecn",
11507 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11509 { &hf_opa_PortStatus_PortVLXmitTimeCong, {
11510 "PortVLXmitTimeCong", "opa.pm.portstatus.vl.xmittimecong",
11511 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11513 { &hf_opa_PortStatus_PortVLXmitWastedBW, {
11514 "PortVLXmitWastedBW", "opa.pm.portstatus.vl.xmitwastedbw",
11515 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11517 { &hf_opa_PortStatus_PortVLXmitWaitData, {
11518 "PortVLXmitWaitData", "opa.pm.portstatus.vl.xmitwaitdata",
11519 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11521 { &hf_opa_PortStatus_PortVLRcvBubble, {
11522 "PortVLRcvBubble", "opa.pm.portstatus.vl.rcvbubble",
11523 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11525 { &hf_opa_PortStatus_PortVLMarkFECN, {
11526 "PortVLMarkFECN", "opa.pm.portstatus.vl.markfecn",
11527 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11529 { &hf_opa_PortStatus_PortVLXmitDiscards, {
11530 "PortVLXmitDiscards", "opa.pm.portstatus.vl.xmitdiscards",
11531 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11534 /*******************
11535 * ClearPortStatus *
11536 *******************/
11538 { &hf_opa_ClearPortStatus, {
11539 "Clear Port Status", "opa.pm.clearportstatus",
11540 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11542 { &hf_opa_ClearPortStatus_PortSelectMask, {
11543 "Port Select Mask", "opa.pm.clearportstatus.portselectmask",
11544 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11546 { &hf_opa_ClearPortStatus_CounterSelectMask, {
11547 "CounterSelectMask", "opa.pm.clearportstatus.counterselectmask",
11548 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
11550 { &hf_opa_ClearPortStatus_PortXmitData, {
11551 "PortXmitData", "opa.pm.clearportstatus.portxmitdata",
11552 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
11554 { &hf_opa_ClearPortStatus_PortRcvData, {
11555 "PortRcvData", "opa.pm.clearportstatus.portrcvdata",
11556 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
11558 { &hf_opa_ClearPortStatus_PortXmitPkts, {
11559 "PortXmitPkts", "opa.pm.clearportstatus.portxmitpkts",
11560 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
11562 { &hf_opa_ClearPortStatus_PortRcvPkts, {
11563 "PortRcvPkts", "opa.pm.clearportstatus.portrcvpkts",
11564 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
11566 { &hf_opa_ClearPortStatus_PortMulticastXmitPkts, {
11567 "PortMulticastXmitPkts", "opa.pm.clearportstatus.portmulticastxmitpkts",
11568 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
11570 { &hf_opa_ClearPortStatus_PortMulticastRcvPkts, {
11571 "PortMulticastRcvPkts", "opa.pm.clearportstatus.portmulticastrcvpkts",
11572 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
11574 { &hf_opa_ClearPortStatus_PortXmitWait, {
11575 "PortXmitWait", "opa.pm.clearportstatus.portxmitwait",
11576 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
11578 { &hf_opa_ClearPortStatus_SwPortCongestion, {
11579 "SwPortCongestion", "opa.pm.clearportstatus.swportcongestion",
11580 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
11582 { &hf_opa_ClearPortStatus_PortRcvFECN, {
11583 "PortRcvFECN", "opa.pm.clearportstatus.portrecvfecn",
11584 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
11586 { &hf_opa_ClearPortStatus_PortRcvBECN, {
11587 "PortRcvBECN", "opa.pm.clearportstatus.portrecvbecn",
11588 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
11590 { &hf_opa_ClearPortStatus_PortXmitTimeCong, {
11591 "PortXmitTimeCong", "opa.pm.clearportstatus.portxmittimecong",
11592 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
11594 { &hf_opa_ClearPortStatus_PortXmitWastedBW, {
11595 "PortXmitWastedBW", "opa.pm.clearportstatus.portxmitwastedbw",
11596 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
11598 { &hf_opa_ClearPortStatus_PortXmitWaitData, {
11599 "PortXmitWaitData", "opa.pm.clearportstatus.portxmitwaitdata",
11600 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
11602 { &hf_opa_ClearPortStatus_PortRcvBubble, {
11603 "PortRcvBubble", "opa.pm.clearportstatus.portrcvbubble",
11604 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
11606 { &hf_opa_ClearPortStatus_PortMarkFECN, {
11607 "PortMarkFECN", "opa.pm.clearportstatus.portmarkfecn",
11608 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00020000, NULL, HFILL }
11610 { &hf_opa_ClearPortStatus_PortRcvConstraintErrors, {
11611 "PortRcvConstraintErrors", "opa.pm.clearportstatus.portrcvconstrainterrors",
11612 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00010000, NULL, HFILL }
11614 { &hf_opa_ClearPortStatus_PortRcvSwitchRelayErrors, {
11615 "PortRcvSwitchRelayErrors", "opa.pm.clearportstatus.portrcvswitchrelayerrors",
11616 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00008000, NULL, HFILL }
11618 { &hf_opa_ClearPortStatus_PortXmitDiscards, {
11619 "PortXmitDiscards", "opa.pm.clearportstatus.portxmitdiscards",
11620 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00004000, NULL, HFILL }
11622 { &hf_opa_ClearPortStatus_PortXmitConstraintErrors, {
11623 "PortXmitConstraintErrors", "opa.pm.clearportstatus.portxmitconstrainterrors",
11624 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00002000, NULL, HFILL }
11626 { &hf_opa_ClearPortStatus_PortRcvRemotePhysicalErrors, {
11627 "PortRcvRemotePhysicalErrors", "opa.pm.clearportstatus.portrcvremotephysicalerrors",
11628 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00001000, NULL, HFILL }
11630 { &hf_opa_ClearPortStatus_LocalLinkIntegrityErrors, {
11631 "LocalLinkIntegrityErrors", "opa.pm.clearportstatus.locallinkintegrityerrors",
11632 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000800, NULL, HFILL }
11634 { &hf_opa_ClearPortStatus_PortRcvErrors, {
11635 "PortRcvErrors", "opa.pm.clearportstatus.portrcverrors",
11636 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000400, NULL, HFILL }
11638 { &hf_opa_ClearPortStatus_ExcessiveBufferOverruns, {
11639 "ExcessiveBufferOverruns", "opa.pm.clearportstatus.excessivebufferoverruns",
11640 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000200, NULL, HFILL }
11642 { &hf_opa_ClearPortStatus_FMConfigErrors, {
11643 "FMConfigErrors", "opa.pm.clearportstatus.fmconfigerrors",
11644 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000100, NULL, HFILL }
11646 { &hf_opa_ClearPortStatus_LinkErrorRecovery, {
11647 "LinkErrorRecovery", "opa.pm.clearportstatus.linkerrorrecovery",
11648 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000080, NULL, HFILL }
11650 { &hf_opa_ClearPortStatus_LinkDowned, {
11651 "LinkDowned", "opa.pm.clearportstatus.linkdowned",
11652 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000040, NULL, HFILL }
11654 { &hf_opa_ClearPortStatus_UncorrectableErrors, {
11655 "UncorrectableErrors", "opa.pm.clearportstatus.uncorrectableerrors",
11656 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000020, NULL, HFILL }
11658 { &hf_opa_ClearPortStatus_reserved, {
11659 "Reserved (5 bits)", "opa.pm.clearportstatus.reserved",
11660 FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
11663 /* DataPortCounters */
11664 { &hf_opa_DataPortCounters, {
11665 "Data Port Counters", "opa.pm.dataportcounters",
11666 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11668 { &hf_opa_DataPortCounters_PortSelectMask, {
11669 "Port Select Mask", "opa.pm.dataportcounters.portselectmask",
11670 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11672 { &hf_opa_DataPortCounters_VLSelectMask, {
11673 "VL Select Mask", "opa.pm.dataportcounters.vlselectmask",
11674 FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, NULL, HFILL }
11676 { &hf_opa_DataPortCounters_resolution_reserved, {
11677 "Reserved (24 bits)", "opa.pm.dataportcounters.reserved",
11678 FT_UINT32, BASE_HEX, NULL, 0xFFFFFF00, NULL, HFILL }
11680 { &hf_opa_DataPortCounters_LocalLinkIntegrityResolution, {
11681 "Local Link Integrity Resolution", "opa.pm.dataportcounters.locallinkintegrityresolution",
11682 FT_UINT32, BASE_DEC, NULL, 0x000000F0, NULL, HFILL }
11684 { &hf_opa_DataPortCounters_LinkErrorRecoveryResolution, {
11685 "Link Error Recovery Resolution", "opa.pm.dataportcounters.linkerrorrecoveryresolution",
11686 FT_UINT32, BASE_DEC, NULL, 0x0000000F, NULL, HFILL }
11688 { &hf_opa_DataPortCounters_PortNumber, {
11689 "PortNumber", "opa.pm.dataportcounters.portnumber",
11690 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11692 { &hf_opa_DataPortCounters_lqi_reserved, {
11693 "Reserved (29 bits)", "opa.pm.dataportcounters.reserved",
11694 FT_UINT32, BASE_DEC, NULL, 0xFFFFFFF8, NULL, HFILL }
11696 { &hf_opa_DataPortCounters_LinkQualityIndicator, {
11697 "LinkQualityIndicator", "opa.pm.dataportcounters.linkqualityindicator",
11698 FT_UINT32, BASE_DEC, VALS(LinkQualityIndicator), 0x00000007, NULL, HFILL }
11700 { &hf_opa_DataPortCounters_PortXmitData, {
11701 "PortXmitData", "opa.pm.dataportcounters.portxmitdata",
11702 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11704 { &hf_opa_DataPortCounters_PortRcvData, {
11705 "PortRcvData", "opa.pm.dataportcounters.portrcvdata",
11706 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11708 { &hf_opa_DataPortCounters_PortXmitPkts, {
11709 "PortXmitPkts", "opa.pm.dataportcounters.portxmitpkts",
11710 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11712 { &hf_opa_DataPortCounters_PortRcvPkts, {
11713 "PortRcvPkts", "opa.pm.dataportcounters.portrcvpkts",
11714 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11716 { &hf_opa_DataPortCounters_PortMulticastXmitPkts, {
11717 "PortMulticastXmitPkts", "opa.pm.dataportcounters.portmulticastxmitpkts",
11718 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11720 { &hf_opa_DataPortCounters_PortMulticastRcvPkts, {
11721 "PortMulticastRcvPkts", "opa.pm.dataportcounters.portmulticastrcvpkts",
11722 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11724 { &hf_opa_DataPortCounters_PortXmitWait, {
11725 "PortXmitWait", "opa.pm.dataportcounters.portxmitwait",
11726 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11728 { &hf_opa_DataPortCounters_SwPortCongestion, {
11729 "SwPortCongestion", "opa.pm.dataportcounters.swportcongestion",
11730 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11732 { &hf_opa_DataPortCounters_PortRcvFECN, {
11733 "PortRcvFECN", "opa.pm.dataportcounters.portrecvfecn",
11734 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11736 { &hf_opa_DataPortCounters_PortRcvBECN, {
11737 "PortRcvBECN", "opa.pm.dataportcounters.portrecvbecn",
11738 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11740 { &hf_opa_DataPortCounters_PortXmitTimeCong, {
11741 "PortXmitTimeCong", "opa.pm.dataportcounters.portxmittimecong",
11742 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11744 { &hf_opa_DataPortCounters_PortXmitWastedBW, {
11745 "PortXmitWastedBW", "opa.pm.dataportcounters.portxmitwastedbw",
11746 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11748 { &hf_opa_DataPortCounters_PortXmitWaitData, {
11749 "PortXmitWaitData", "opa.pm.dataportcounters.portxmitwaitdata",
11750 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11752 { &hf_opa_DataPortCounters_PortRcvBubble, {
11753 "PortRcvBubble", "opa.pm.dataportcounters.portrcvbubble",
11754 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11756 { &hf_opa_DataPortCounters_PortMarkFECN, {
11757 "PortMarkFECN", "opa.pm.dataportcounters.portmarkfecn",
11758 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11760 { &hf_opa_DataPortCounters_PortErrorCounterSummary, {
11761 "PortErrorCounterSummary", "opa.pm.dataportcounters.porterrorcountersummary",
11762 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11764 { &hf_opa_DataPortCounters_PortVLXmitData, {
11765 "PortVLXmitData", "opa.pm.dataportcounters.vl.xmitdata",
11766 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11768 { &hf_opa_DataPortCounters_PortVLRcvData, {
11769 "PortVLRcvData", "opa.pm.dataportcounters.vl.rcvdata",
11770 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11772 { &hf_opa_DataPortCounters_PortVLXmitPkts, {
11773 "PortVLXmitPkts", "opa.pm.dataportcounters.vl.xmitpkts",
11774 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11776 { &hf_opa_DataPortCounters_PortVLRcvPkts, {
11777 "PortVLRcvPkts", "opa.pm.dataportcounters.vl.rcvpkts",
11778 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11780 { &hf_opa_DataPortCounters_PortVLXmitWait, {
11781 "PortVLXmitWait", "opa.pm.dataportcounters.vl.xmitwait",
11782 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11784 { &hf_opa_DataPortCounters_SwPortVLCongestion, {
11785 "SwPortVLCongestion", "opa.pm.dataportcounters.vl.swcongestion",
11786 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11788 { &hf_opa_DataPortCounters_PortVLRcvFECN, {
11789 "PortVLRcvFECN", "opa.pm.dataportcounters.vl.rcvfecn",
11790 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11792 { &hf_opa_DataPortCounters_PortVLRcvBECN, {
11793 "PortVLRcvBECN", "opa.pm.dataportcounters.vl.rcvbecn",
11794 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11796 { &hf_opa_DataPortCounters_PortVLXmitTimeCong, {
11797 "PortVLXmitTimeCong", "opa.pm.dataportcounters.vl.xmittimecong",
11798 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11800 { &hf_opa_DataPortCounters_PortVLXmitWastedBW, {
11801 "PortVLXmitWastedBW", "opa.pm.dataportcounters.vl.xmitwastedbw",
11802 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11804 { &hf_opa_DataPortCounters_PortVLXmitWaitData, {
11805 "PortVLXmitWaitData", "opa.pm.dataportcounters.vl.xmitwaitdata",
11806 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11808 { &hf_opa_DataPortCounters_PortVLRcvBubble, {
11809 "PortVLRcvBubble", "opa.pm.dataportcounters.vl.rcvbubble",
11810 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11812 { &hf_opa_DataPortCounters_PortVLMarkFECN, {
11813 "PortVLMarkFECN", "opa.pm.dataportcounters.vl.markfecn",
11814 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11817 /* ErrorPortCounters */
11818 { &hf_opa_ErrorPortCounters, {
11819 "Error Port Counters", "opa.pm.errorportcounters",
11820 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11822 { &hf_opa_ErrorPortCounters_PortSelectMask, {
11823 "Port Select Mask", "opa.pm.errorportcounters.portselectmask",
11824 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11826 { &hf_opa_ErrorPortCounters_VLSelectMask, {
11827 "VL Select Mask", "opa.pm.errorportcounters.vlselectmask",
11828 FT_UINT32, BASE_CUSTOM, CF_FUNC(cf_opa_mad_32b_mask), 0x0, NULL, HFILL }
11830 { &hf_opa_ErrorPortCounters_PortNumber, {
11831 "PortNumber", "opa.pm.errorportcounters.portnumber",
11832 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11834 { &hf_opa_ErrorPortCounters_PortRcvConstraintErrors, {
11835 "PortRcvConstraintErrors", "opa.pm.errorportcounters.portrcvconstrainterrors",
11836 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11838 { &hf_opa_ErrorPortCounters_PortRcvSwitchRelayErrors, {
11839 "PortRcvSwitchRelayErrors", "opa.pm.errorportcounters.portrcvswitchrelayerrors",
11840 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11842 { &hf_opa_ErrorPortCounters_PortXmitDiscards, {
11843 "PortXmitDiscards", "opa.pm.errorportcounters.portxmitdiscards",
11844 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11846 { &hf_opa_ErrorPortCounters_PortXmitConstraintErrors, {
11847 "PortXmitConstraintErrors", "opa.pm.errorportcounters.portxmitconstrainterrors",
11848 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11850 { &hf_opa_ErrorPortCounters_PortRcvRemotePhysicalErrors, {
11851 "PortRcvRemotePhysicalErrors", "opa.pm.errorportcounters.portrcvremotephysicalerrors",
11852 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11854 { &hf_opa_ErrorPortCounters_LocalLinkIntegrityErrors, {
11855 "LocalLinkIntegrityErrors", "opa.pm.errorportcounters.locallinkintegrityerrors",
11856 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11858 { &hf_opa_ErrorPortCounters_PortRcvErrors, {
11859 "PortRcvErrors", "opa.pm.errorportcounters.portrcverrors",
11860 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11862 { &hf_opa_ErrorPortCounters_ExcessiveBufferOverruns, {
11863 "ExcessiveBufferOverruns", "opa.pm.errorportcounters.excessivebufferoverruns",
11864 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11866 { &hf_opa_ErrorPortCounters_FMConfigErrors, {
11867 "FMConfigErrors", "opa.pm.errorportcounters.fmconfigerrors",
11868 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11870 { &hf_opa_ErrorPortCounters_LinkErrorRecovery, {
11871 "LinkErrorRecovery", "opa.pm.errorportcounters.linkerrorrecovery",
11872 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
11874 { &hf_opa_ErrorPortCounters_LinkDowned, {
11875 "LinkDowned", "opa.pm.errorportcounters.linkdowned",
11876 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
11878 { &hf_opa_ErrorPortCounters_UncorrectableErrors, {
11879 "UncorrectableErrors", "opa.pm.errorportcounters.uncorrectableerrors",
11880 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
11882 { &hf_opa_ErrorPortCounters_PortVLXmitDiscards, {
11883 "PortVLXmitDiscards", "opa.pm.errorportcounters.portvlxmitdiscards",
11884 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
11887 /* ErrorPortInfo */
11888 { &hf_opa_ErrorPortInfo, {
11889 "Error Port Info", "opa.pm.errorportinfo",
11890 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11892 { &hf_opa_ErrorPortInfo_PortSelectMask, {
11893 "Port Select Mask", "opa.pm.errorportinfo.portselectmask",
11894 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
11896 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvErrorInfo, {
11897 "Port Rcv Error Info", "opa.pm.errorportinfo.errorinfoselectmask.portrcverrorinfo",
11898 FT_BOOLEAN, 32, NULL, 0x80000000, NULL, HFILL }
11900 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_ExcessiveBufferOverrunInfo, {
11901 "ExcessiveBufferOverrunInfo", "opa.pm.errorportinfo.errorinfoselectmask.excessivebufferoverruninfo",
11902 FT_BOOLEAN, 32, NULL, 0x40000000, NULL, HFILL }
11904 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortXmitConstraintErrorInfo, {
11905 "PortXmitConstraintErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.portxmitconstrainterrorinfo",
11906 FT_BOOLEAN, 32, NULL, 0x20000000, NULL, HFILL }
11908 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvConstraintErrorInfo, {
11909 "PortRcvConstraintErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.portrcvconstrainterrorinfo",
11910 FT_BOOLEAN, 32, NULL, 0x10000000, NULL, HFILL }
11912 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_PortRcvSwitchRelayErrorInfo, {
11913 "PortRcvSwitchRelayErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.portrcvswitchrelayerrorinfo",
11914 FT_BOOLEAN, 32, NULL, 0x08000000, NULL, HFILL }
11916 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_UncorrectableErrorInfo, {
11917 "UncorrectableErrorInfo", "opa.pm.errorportinfo.errorinfoselectmask.uncorrectableerrorinfo",
11918 FT_BOOLEAN, 32, NULL, 0x04000000, NULL, HFILL }
11920 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_FMConfigErrorInfo, {
11921 "Fmconfigerrorinfo", "opa.pm.errorportinfo.errorinfoselectmask.fmconfigerrorinfo",
11922 FT_BOOLEAN, 32, NULL, 0x02000000, NULL, HFILL }
11924 { &hf_opa_ErrorPortInfo_ErrorInfoSelectMask_reserved, {
11925 "Reserved (25 bits)", "opa.pm.errorportinfo.errorinfoselectmask.reserved",
11926 FT_UINT32, BASE_HEX, NULL, 0x01FFFFFF, NULL, HFILL }
11928 { &hf_opa_ErrorPortInfo_PortNumber, {
11929 "Port Number", "opa.pm.errorportinfo.Portnumber",
11930 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
11932 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_Status, {
11933 "Status", "opa.pm.errorportinfo.portrcverrorinfo.status",
11934 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
11936 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved, {
11937 "Reserved", "opa.pm.errorportinfo.portrcverrorinfo.reserved",
11938 FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
11940 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_ErrorCode, {
11941 "ErrorCode", "opa.pm.errorportinfo.portrcverrorinfo.errorcode",
11942 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
11944 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit1, {
11945 "PacketFlit1", "opa.pm.errorportinfo.portrcverrorinfo.packetflit1",
11946 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11948 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketFlit2, {
11949 "PacketFlit2", "opa.pm.errorportinfo.portrcverrorinfo.packetflit2",
11950 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11952 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit1Bits, {
11953 "Flit1Bits", "opa.pm.errorportinfo.portrcverrorinfo.flit1bits",
11954 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
11956 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_Flit2Bits, {
11957 "Flit2Bits", "opa.pm.errorportinfo.portrcverrorinfo.flit2bits",
11958 FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }
11960 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved2, {
11961 "Reserved (4 bits)", "opa.pm.errorportinfo.portrcverrorinfo.reserved2",
11962 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
11964 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_PacketBytes, {
11965 "PacketBytes", "opa.pm.errorportinfo.portrcverrorinfo.packetbytes",
11966 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
11968 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_FlitBits, {
11969 "FlitBits", "opa.pm.errorportinfo.portrcverrorinfo.flitbits",
11970 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
11972 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved3, {
11973 "Reserved (6 bits)", "opa.pm.errorportinfo.portrcverrorinfo.reserved3",
11974 FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
11976 { &hf_opa_ErrorPortInfo_PortRcvErrorInfo_reserved4, {
11977 "Reserved (17 bytes)", "opa.pm.errorportinfo.portrcverrorinfo.reserved4",
11978 FT_BYTES, FT_NONE, NULL, 0x0, NULL, HFILL }
11980 { &hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_Status, {
11981 "Status", "opa.pm.errorportinfo.excessivebufferoverrunerrorinfo.status",
11982 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
11984 { &hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_SC, {
11985 "SC", "opa.pm.errorportinfo.excessivebufferoverrunerrorinfo.sc",
11986 FT_UINT8, BASE_HEX, NULL, 0x7C, NULL, HFILL }
11988 { &hf_opa_ErrorPortInfo_ExcessiveBufferOverrunErrorInfo_reserved, {
11989 "Reserved (2 bits)", "opa.pm.errorportinfo.ExcessiveBufferOverrunErrorInfo.Reserved",
11990 FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }
11992 { &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_Status, {
11993 "Status", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.status",
11994 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
11996 { &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_reserved, {
11997 "Reserved (7 bits)", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.reserved",
11998 FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
12000 { &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_P_Key, {
12001 "P_Key", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.pkey",
12002 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
12004 { &hf_opa_ErrorPortInfo_PortXmitConstraintErrorInfo_SLID, {
12005 "SLID", "opa.pm.errorportinfo.portxmitconstrainterrorinfo.slid",
12006 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12008 { &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_Status, {
12009 "Status", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.status",
12010 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
12012 { &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_reserved, {
12013 "Reserved (7 bits)", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.reserved",
12014 FT_UINT8, BASE_HEX, NULL, 0x7F, NULL, HFILL }
12016 { &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_P_Key, {
12017 "P_Key", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.pkey",
12018 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
12020 { &hf_opa_ErrorPortInfo_PortRcvConstraintErrorInfo_SLID, {
12021 "SLID", "opa.pm.errorportinfo.portrcvconstrainterrorinfo.slid",
12022 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12024 { &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_Status, {
12025 "Status", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.status",
12026 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
12028 { &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_reserved, {
12029 "Reserved (3 bits)", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.reserved",
12030 FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
12032 { &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_ErrorCode, {
12033 "ErrorCode", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.errorcode",
12034 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
12036 { &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_DLID, {
12037 "DLID", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.dlid",
12038 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12040 { &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_EgressPortNum, {
12041 "EgressPortNum", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.egressportnum",
12042 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12044 { &hf_opa_ErrorPortInfo_PortRcvSwitchRelayErrorInfo_SC, {
12045 "SC", "opa.pm.errorportinfo.portrcvswitchrelayerrorinfo.scorsl",
12046 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12048 { &hf_opa_ErrorPortInfo_UncorrectableErrorInfo_Status, {
12049 "Status", "opa.pm.errorportinfo.uncorrectableerrorinfo.status",
12050 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
12052 { &hf_opa_ErrorPortInfo_UncorrectableErrorInfo_reserved, {
12053 "Reserved (3 bits)", "opa.pm.errorportinfo.uncorrectableerrorinfo.reserved",
12054 FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
12056 { &hf_opa_ErrorPortInfo_UncorrectableErrorInfo_ErrorCode, {
12057 "ErrorCode", "opa.pm.errorportinfo.uncorrectableerrorinfo.errorcode",
12058 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
12060 { &hf_opa_ErrorPortInfo_FMConfigErrorInfo_Status, {
12061 "Status", "opa.pm.errorportinfo.fmconfigerrorinfo.status",
12062 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
12064 { &hf_opa_ErrorPortInfo_FMConfigErrorInfo_reserved, {
12065 "Reserved (3 bits)", "opa.pm.errorportinfo.fmconfigerrorinfo.reserved",
12066 FT_UINT8, BASE_HEX, NULL, 0x70, NULL, HFILL }
12068 { &hf_opa_ErrorPortInfo_FMConfigErrorInfo_ErrorCode, {
12069 "ErrorCode", "opa.pm.errorportinfo.fmconfigerrorinfo.errorcode",
12070 FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }
12072 { &hf_opa_ErrorPortInfo_FMConfigErrorInfo_VL, {
12073 "VL", "opa.pm.errorportinfo.fmconfigerrorinfo.vl",
12074 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12076 { &hf_opa_ErrorPortInfo_FMConfigErrorInfo_Distance, {
12077 "Distance", "opa.pm.errorportinfo.fmconfigerrorinfo.distance",
12078 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12080 { &hf_opa_ErrorPortInfo_FMConfigErrorInfo_BadFlitBits, {
12081 "BadFlitBits", "opa.pm.errorportinfo.fmconfigerrorinfo.badflitbits",
12082 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12084 { &hf_opa_ErrorPortInfo_FMConfigErrorInfo_SC, {
12085 "SC", "opa.pm.errorportinfo.fmconfigerrorinfo.sc",
12086 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12089 /* General PA */
12090 { &hf_opa_ImageID_imageNumber, {
12091 "imageNumber", "opa.pa.imageid.imagenumber",
12092 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12094 { &hf_opa_ImageID_imageOffset, {
12095 "imageOffset", "opa.pa.imageid.imageoffset",
12096 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12099 /* GetGroupList */
12100 { &hf_opa_GetGroupList, {
12101 "Group List", "opa.pa.getgrouplist",
12102 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12104 { &hf_opa_GetGroupList_groupName, {
12105 "Group Name", "opa.pa.getgrouplist.groupname",
12106 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12109 /* GetGroupInfo */
12110 { &hf_opa_GetGroupInfo, {
12111 "Group Info", "opa.pa.getgroupinfo",
12112 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12114 { &hf_opa_GetGroupInfo_groupName, {
12115 "Group Name", "opa.pa.getgroupinfo.groupname",
12116 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12118 { &hf_opa_GetGroupInfo_numInternalPorts, {
12119 "numInternalPorts", "opa.pa.getgroupinfo.numinternalports",
12120 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12122 { &hf_opa_GetGroupInfo_numExternalPorts, {
12123 "numExternalPorts", "opa.pa.getgroupinfo.numexternalports",
12124 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12126 { &hf_opa_GetGroupInfo_totalMBps, {
12127 "totalMBps", "opa.pa.getgroupinfo.totalmbps",
12128 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12130 { &hf_opa_GetGroupInfo_totalKPps, {
12131 "totalKPps", "opa.pa.getgroupinfo.totalkpps",
12132 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12134 { &hf_opa_GetGroupInfo_avgMBps, {
12135 "avgMBps", "opa.pa.getgroupinfo.avgmbps",
12136 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12138 { &hf_opa_GetGroupInfo_minMBps, {
12139 "minMBps", "opa.pa.getgroupinfo.minmbps",
12140 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12142 { &hf_opa_GetGroupInfo_maxMBps, {
12143 "maxMBps", "opa.pa.getgroupinfo.maxmbps",
12144 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12146 { &hf_opa_GetGroupInfo_numBWBuckets, {
12147 "numBWBuckets", "opa.pa.getgroupinfo.numbwbuckets",
12148 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12150 { &hf_opa_GetGroupInfo_BWBuckets, {
12151 "BWBuckets", "opa.pa.getgroupinfo.bwbuckets",
12152 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12154 { &hf_opa_GetGroupInfo_avgKPps, {
12155 "avgKPps", "opa.pa.getgroupinfo.avgkpps",
12156 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12158 { &hf_opa_GetGroupInfo_minKPps, {
12159 "minKPps", "opa.pa.getgroupinfo.minkpps",
12160 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12162 { &hf_opa_GetGroupInfo_maxKPps, {
12163 "maxKPps", "opa.pa.getgroupinfo.maxkpps",
12164 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12166 { &hf_opa_GetGroupInfo_pmaFailedPorts, {
12167 "pmaFailedPorts", "opa.pa.getgroupinfo.pmafailedports",
12168 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
12170 { &hf_opa_GetGroupInfo_topoFailedPorts, {
12171 "topoFailedPorts", "opa.pa.getgroupinfo.topofailedports",
12172 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
12174 { &hf_opa_GetGroupInfo_integrityErrors, {
12175 "integrityErrors", "opa.pa.getgroupinfo.integrityerrors",
12176 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
12178 { &hf_opa_GetGroupInfo_congestionErrors, {
12179 "congestionErrors", "opa.pa.getgroupinfo.congestionerrors",
12180 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
12182 { &hf_opa_GetGroupInfo_smaCongestionErrors, {
12183 "smaCongestionErrors", "opa.pa.getgroupinfo.smacongestionerrors",
12184 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
12186 { &hf_opa_GetGroupInfo_bubbleErrors, {
12187 "bubbleErrors", "opa.pa.getgroupinfo.bubbleerrors",
12188 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
12190 { &hf_opa_GetGroupInfo_securityErrors, {
12191 "securityErrors", "opa.pa.getgroupinfo.securityerrors",
12192 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
12194 { &hf_opa_GetGroupInfo_routingErrors, {
12195 "routingErrors", "opa.pa.getgroupinfo.routingerrors",
12196 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
12198 { &hf_opa_GetGroupInfo_utilizationPct10, {
12199 "utilizationPct10", "opa.pa.getgroupinfo.utilizationpct10",
12200 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
12202 { &hf_opa_GetGroupInfo_discardsPct10, {
12203 "discardsPct10", "opa.pa.getgroupinfo.discardspct10",
12204 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
12206 { &hf_opa_GetGroupInfo_maxInternalRate, {
12207 "maxInternalRate", "opa.pa.getgroupinfo.maxinternalrate",
12208 FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
12210 { &hf_opa_GetGroupInfo_minInternalRate, {
12211 "minInternalRate", "opa.pa.getgroupinfo.mininternalrate",
12212 FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
12214 { &hf_opa_GetGroupInfo_maxExternalRate, {
12215 "maxExternalRate", "opa.pa.getgroupinfo.maxexternalrate",
12216 FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
12218 { &hf_opa_GetGroupInfo_minExternalRate, {
12219 "minExternalRate", "opa.pa.getgroupinfo.minexternalrate",
12220 FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
12222 { &hf_opa_GetGroupInfo_maxInternalMBps, {
12223 "maxInternalMBps", "opa.pa.getgroupinfo.maxinternalmbps",
12224 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12226 { &hf_opa_GetGroupInfo_maxExternalMBps, {
12227 "maxExternalMBps", "opa.pa.getgroupinfo.maxexternalmbps",
12228 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12231 /* GetGroupConfig */
12232 { &hf_opa_GetGroupConfig, {
12233 "Group Config", "opa.pa.getgroupconfig",
12234 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12236 { &hf_opa_GetGroupConfig_groupName, {
12237 "Group Name", "opa.pa.getgroupconfig.groupname",
12238 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12240 { &hf_opa_GetGroupConfig_Port_NodeGUID, {
12241 "NodeGUID", "opa.pa.getgroupconfig.port.nodeguid",
12242 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12244 { &hf_opa_GetGroupConfig_Port_nodeDesc, {
12245 "nodeDesc", "opa.pa.getgroupconfig.port.nodedesc",
12246 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12248 { &hf_opa_GetGroupConfig_Port_NodeLID, {
12249 "NodeLID", "opa.pa.getgroupconfig.port.nodelid",
12250 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12252 { &hf_opa_GetGroupConfig_Port_PortNumber, {
12253 "PortNumber", "opa.pa.getgroupconfig.port.portnumber",
12254 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12257 /* GetPortCounters */
12258 { &hf_opa_GetPortCounters, {
12259 "Port Counters", "opa.pa.getportcounters",
12260 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12262 { &hf_opa_GetPortCounters_nodeLID, {
12263 "nodeLID", "opa.pa.getportcounters.nodelid",
12264 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12266 { &hf_opa_GetPortCounters_PortNumber, {
12267 "PortNumber", "opa.pa.getportcounters.portnumber",
12268 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12270 { &hf_opa_GetPortCounters_flags, {
12271 "flags", "opa.pa.getportcounters.flags",
12272 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12274 { &hf_opa_GetPortCounters_PortXmitData, {
12275 "PortXmitData", "opa.pa.getportcounters.portxmitdata",
12276 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12278 { &hf_opa_GetPortCounters_PortRcvData, {
12279 "PortRcvData", "opa.pa.getportcounters.portrcvdata",
12280 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12282 { &hf_opa_GetPortCounters_PortXmitPkts, {
12283 "PortXmitPkts", "opa.pa.getportcounters.portxmitpkts",
12284 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12286 { &hf_opa_GetPortCounters_PortRcvPkts, {
12287 "PortRcvPkts", "opa.pa.getportcounters.portrcvpkts",
12288 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12290 { &hf_opa_GetPortCounters_PortMulticastXmitPkts, {
12291 "PortMulticastXmitPkts", "opa.pa.getportcounters.portmulticastxmitpkts",
12292 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12294 { &hf_opa_GetPortCounters_PortMulticastRcvPkts, {
12295 "PortMulticastRcvPkts", "opa.pa.getportcounters.portmulticastrcvpkts",
12296 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12298 { &hf_opa_GetPortCounters_LocalLinkIntegrityErrors, {
12299 "LocalLinkIntegrityErrors", "opa.pa.getportcounters.locallinkintegrityerrors",
12300 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12302 { &hf_opa_GetPortCounters_FMConfigErrors, {
12303 "FMConfigErrors", "opa.pa.getportcounters.fmconfigerrors",
12304 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12306 { &hf_opa_GetPortCounters_PortRcvErrors, {
12307 "PortRcvErrors", "opa.pa.getportcounters.portrcverrors",
12308 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12310 { &hf_opa_GetPortCounters_ExcessiveBufferOverruns, {
12311 "ExcessiveBufferOverruns", "opa.pa.getportcounters.excessivebufferoverruns",
12312 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12314 { &hf_opa_GetPortCounters_PortRcvConstraintErrors, {
12315 "PortRcvConstraintErrors", "opa.pa.getportcounters.portrcvconstrainterrors",
12316 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12318 { &hf_opa_GetPortCounters_PortRcvSwitchRelayErrors, {
12319 "PortRcvSwitchRelayErrors", "opa.pa.getportcounters.portrcvswitchrelayerrors",
12320 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12322 { &hf_opa_GetPortCounters_PortXmitDiscards, {
12323 "PortXmitDiscards", "opa.pa.getportcounters.portxmitdiscards",
12324 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12326 { &hf_opa_GetPortCounters_PortXmitConstraintErrors, {
12327 "PortXmitConstraintErrors", "opa.pa.getportcounters.portxmitconstrainterrors",
12328 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12330 { &hf_opa_GetPortCounters_PortRcvRemotePhysicalErrors, {
12331 "PortRcvRemotePhysicalErrors", "opa.pa.getportcounters.portrcvremotephysicalerrors",
12332 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12334 { &hf_opa_GetPortCounters_SwPortCongestion, {
12335 "SwPortCongestion", "opa.pa.getportcounters.swportcongestion",
12336 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12338 { &hf_opa_GetPortCounters_PortXmitWait, {
12339 "PortXmitWait", "opa.pa.getportcounters.portxmitwait",
12340 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12342 { &hf_opa_GetPortCounters_PortRcvFECN, {
12343 "PortRcvFECN", "opa.pa.getportcounters.portrcvfecn",
12344 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12346 { &hf_opa_GetPortCounters_PortRcvBECN, {
12347 "PortRcvBECN", "opa.pa.getportcounters.portrcvbecn",
12348 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12350 { &hf_opa_GetPortCounters_PortXmitTimeCong, {
12351 "PortXmitTimeCong", "opa.pa.getportcounters.portxmittimecong",
12352 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12354 { &hf_opa_GetPortCounters_PortXmitWastedBW, {
12355 "PortXmitWastedBW", "opa.pa.getportcounters.portxmitwastedbw",
12356 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12358 { &hf_opa_GetPortCounters_PortXmitWaitData, {
12359 "PortXmitWaitData", "opa.pa.getportcounters.portxmitwaitdata",
12360 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12362 { &hf_opa_GetPortCounters_PortRcvBubble, {
12363 "PortRcvBubble", "opa.pa.getportcounters.portrcvbubble",
12364 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12366 { &hf_opa_GetPortCounters_PortMarkFECN, {
12367 "PortMarkFECN", "opa.pa.getportcounters.portmarkfecn",
12368 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12370 { &hf_opa_GetPortCounters_LinkErrorRecovery, {
12371 "LinkErrorRecovery", "opa.pa.getportcounters.linkerrorrecovery",
12372 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12374 { &hf_opa_GetPortCounters_LinkDowned, {
12375 "LinkDowned", "opa.pa.getportcounters.linkdowned",
12376 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12378 { &hf_opa_GetPortCounters_UncorrectableErrors, {
12379 "UncorrectableErrors", "opa.pa.getportcounters.uncorrectableerrors",
12380 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12382 { &hf_opa_GetPortCounters_NumLanesDown, {
12383 "NumLanesDown", "opa.pa.getportcounters.numlanesdown",
12384 FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL }
12386 { &hf_opa_GetPortCounters_reserved, {
12387 "Reserved", "opa.pa.getportcounters.reserved",
12388 FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }
12390 { &hf_opa_GetPortCounters_LinkQualityIndicator, {
12391 "LinkQualityIndicator", "opa.pa.getportcounters.linkqualityindicator",
12392 FT_UINT8, BASE_DEC, VALS(LinkQualityIndicator), 0x07, NULL, HFILL }
12395 /* ClearPortCounters */
12396 { &hf_opa_ClearPortCounters, {
12397 "Clear User Port Counters", "opa.pa.clearportcounters",
12398 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12400 { &hf_opa_ClearPortCounters_nodeLID, {
12401 "nodeLID", "opa.pa.clearportcounters.nodelid",
12402 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12404 { &hf_opa_ClearPortCounters_PortNumber, {
12405 "PortNumber", "opa.pa.clearportcounters.portnumber",
12406 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
12408 { &hf_opa_ClearPortCounters_CounterSelectMask, {
12409 "CounterSelectMask", "opa.pa.clearportcounters.counterselectmask",
12410 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12412 { &hf_opa_ClearPortCounters_PortXmitData, {
12413 "PortXmitData", "opa.pa.clearportcounters.portxmitdata",
12414 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
12416 { &hf_opa_ClearPortCounters_PortRcvData, {
12417 "PortRcvData", "opa.pa.clearportcounters.portrcvdata",
12418 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
12420 { &hf_opa_ClearPortCounters_PortXmitPkts, {
12421 "PortXmitPkts", "opa.pa.clearportcounters.portxmitpkts",
12422 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
12424 { &hf_opa_ClearPortCounters_PortRcvPkts, {
12425 "PortRcvPkts", "opa.pa.clearportcounters.portrcvpkts",
12426 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
12428 { &hf_opa_ClearPortCounters_PortMulticastXmitPkts, {
12429 "PortMulticastXmitPkts", "opa.pa.clearportcounters.portmulticastxmitpkts",
12430 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
12432 { &hf_opa_ClearPortCounters_PortMulticastRcvPkts, {
12433 "PortMulticastRcvPkts", "opa.pa.clearportcounters.portmulticastrcvpkts",
12434 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
12436 { &hf_opa_ClearPortCounters_PortXmitWait, {
12437 "PortXmitWait", "opa.pa.clearportcounters.portxmitwait",
12438 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
12440 { &hf_opa_ClearPortCounters_SwPortCongestion, {
12441 "SwPortCongestion", "opa.pa.clearportcounters.swportcongestion",
12442 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
12444 { &hf_opa_ClearPortCounters_PortRcvFECN, {
12445 "PortRcvFECN", "opa.pa.clearportcounters.portrecvfecn",
12446 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
12448 { &hf_opa_ClearPortCounters_PortRcvBECN, {
12449 "PortRcvBECN", "opa.pa.clearportcounters.portrecvbecn",
12450 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
12452 { &hf_opa_ClearPortCounters_PortXmitTimeCong, {
12453 "PortXmitTimeCong", "opa.pa.clearportcounters.portxmittimecong",
12454 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
12456 { &hf_opa_ClearPortCounters_PortXmitWastedBW, {
12457 "PortXmitWastedBW", "opa.pa.clearportcounters.portxmitwastedbw",
12458 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
12460 { &hf_opa_ClearPortCounters_PortXmitWaitData, {
12461 "PortXmitWaitData", "opa.pa.clearportcounters.portxmitwaitdata",
12462 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
12464 { &hf_opa_ClearPortCounters_PortRcvBubble, {
12465 "PortRcvBubble", "opa.pa.clearportcounters.portrcvbubble",
12466 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
12468 { &hf_opa_ClearPortCounters_PortMarkFECN, {
12469 "PortMarkFECN", "opa.pa.clearportcounters.portmarkfecn",
12470 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00020000, NULL, HFILL }
12472 { &hf_opa_ClearPortCounters_PortRcvConstraintErrors, {
12473 "PortRcvConstraintErrors", "opa.pa.clearportcounters.portrcvconstrainterrors",
12474 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00010000, NULL, HFILL }
12476 { &hf_opa_ClearPortCounters_PortRcvSwitchRelayErrors, {
12477 "PortRcvSwitchRelayErrors", "opa.pa.clearportcounters.portrcvswitchrelayerrors",
12478 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00008000, NULL, HFILL }
12480 { &hf_opa_ClearPortCounters_PortXmitDiscards, {
12481 "PortXmitDiscards", "opa.pa.clearportcounters.portxmitdiscards",
12482 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00004000, NULL, HFILL }
12484 { &hf_opa_ClearPortCounters_PortXmitConstraintErrors, {
12485 "PortXmitConstraintErrors", "opa.pa.clearportcounters.portxmitconstrainterrors",
12486 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00002000, NULL, HFILL }
12488 { &hf_opa_ClearPortCounters_PortRcvRemotePhysicalErrors, {
12489 "PortRcvRemotePhysicalErrors", "opa.pa.clearportcounters.portrcvremotephysicalerrors",
12490 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00001000, NULL, HFILL }
12492 { &hf_opa_ClearPortCounters_LocalLinkIntegrityErrors, {
12493 "LocalLinkIntegrityErrors", "opa.pa.clearportcounters.locallinkintegrityerrors",
12494 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000800, NULL, HFILL }
12496 { &hf_opa_ClearPortCounters_PortRcvErrors, {
12497 "PortRcvErrors", "opa.pa.clearportcounters.portrcverrors",
12498 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000400, NULL, HFILL }
12500 { &hf_opa_ClearPortCounters_ExcessiveBufferOverruns, {
12501 "ExcessiveBufferOverruns", "opa.pa.clearportcounters.excessivebufferoverruns",
12502 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000200, NULL, HFILL }
12504 { &hf_opa_ClearPortCounters_FMConfigErrors, {
12505 "FMConfigErrors", "opa.pa.clearportcounters.fmconfigerrors",
12506 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000100, NULL, HFILL }
12508 { &hf_opa_ClearPortCounters_LinkErrorRecovery, {
12509 "LinkErrorRecovery", "opa.pa.clearportcounters.linkerrorrecovery",
12510 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000080, NULL, HFILL }
12512 { &hf_opa_ClearPortCounters_LinkDowned, {
12513 "LinkDowned", "opa.pa.clearportcounters.linkdowned",
12514 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000040, NULL, HFILL }
12516 { &hf_opa_ClearPortCounters_UncorrectableErrors, {
12517 "UncorrectableErrors", "opa.pa.clearportcounters.uncorrectableerrors",
12518 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000020, NULL, HFILL }
12520 { &hf_opa_ClearPortCounters_reserved, {
12521 "Reserved (5 bits)", "opa.pa.clearportcounters.reserved",
12522 FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
12525 /* ClearAllPortCounters */
12526 { &hf_opa_ClearAllPortCounters, {
12527 "Clear All User Port Counters", "opa.pa.clearallportcounters",
12528 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12530 { &hf_opa_ClearAllPortCounters_CounterSelectMask, {
12531 "CounterSelectMask", "opa.pa.clearallportcounters.counterselectmask",
12532 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12534 { &hf_opa_ClearAllPortCounters_PortXmitData, {
12535 "PortXmitData", "opa.pa.clearallportcounters.portxmitdata",
12536 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
12538 { &hf_opa_ClearAllPortCounters_PortRcvData, {
12539 "PortRcvData", "opa.pa.clearallportcounters.portrcvdata",
12540 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
12542 { &hf_opa_ClearAllPortCounters_PortXmitPkts, {
12543 "PortXmitPkts", "opa.pa.clearallportcounters.portxmitpkts",
12544 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
12546 { &hf_opa_ClearAllPortCounters_PortRcvPkts, {
12547 "PortRcvPkts", "opa.pa.clearallportcounters.portrcvpkts",
12548 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
12550 { &hf_opa_ClearAllPortCounters_PortMulticastXmitPkts, {
12551 "PortMulticastXmitPkts", "opa.pa.clearallportcounters.portmulticastxmitpkts",
12552 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
12554 { &hf_opa_ClearAllPortCounters_PortMulticastRcvPkts, {
12555 "PortMulticastRcvPkts", "opa.pa.clearallportcounters.portmulticastrcvpkts",
12556 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
12558 { &hf_opa_ClearAllPortCounters_PortXmitWait, {
12559 "PortXmitWait", "opa.pa.clearallportcounters.portxmitwait",
12560 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
12562 { &hf_opa_ClearAllPortCounters_SwPortCongestion, {
12563 "SwPortCongestion", "opa.pa.clearallportcounters.swportcongestion",
12564 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
12566 { &hf_opa_ClearAllPortCounters_PortRcvFECN, {
12567 "PortRcvFECN", "opa.pa.clearallportcounters.portrecvfecn",
12568 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
12570 { &hf_opa_ClearAllPortCounters_PortRcvBECN, {
12571 "PortRcvBECN", "opa.pa.clearallportcounters.portrecvbecn",
12572 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
12574 { &hf_opa_ClearAllPortCounters_PortXmitTimeCong, {
12575 "PortXmitTimeCong", "opa.pa.clearallportcounters.portxmittimecong",
12576 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
12578 { &hf_opa_ClearAllPortCounters_PortXmitWastedBW, {
12579 "PortXmitWastedBW", "opa.pa.clearallportcounters.portxmitwastedbw",
12580 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
12582 { &hf_opa_ClearAllPortCounters_PortXmitWaitData, {
12583 "PortXmitWaitData", "opa.pa.clearallportcounters.portxmitwaitdata",
12584 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
12586 { &hf_opa_ClearAllPortCounters_PortRcvBubble, {
12587 "PortRcvBubble", "opa.pa.clearallportcounters.portrcvbubble",
12588 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
12590 { &hf_opa_ClearAllPortCounters_PortMarkFECN, {
12591 "PortMarkFECN", "opa.pa.clearallportcounters.portmarkfecn",
12592 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00020000, NULL, HFILL }
12594 { &hf_opa_ClearAllPortCounters_PortRcvConstraintErrors, {
12595 "PortRcvConstraintErrors", "opa.pa.clearallportcounters.portrcvconstrainterrors",
12596 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00010000, NULL, HFILL }
12598 { &hf_opa_ClearAllPortCounters_PortRcvSwitchRelayErrors, {
12599 "PortRcvSwitchRelayErrors", "opa.pa.clearallportcounters.portrcvswitchrelayerrors",
12600 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00008000, NULL, HFILL }
12602 { &hf_opa_ClearAllPortCounters_PortXmitDiscards, {
12603 "PortXmitDiscards", "opa.pa.clearallportcounters.portxmitdiscards",
12604 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00004000, NULL, HFILL }
12606 { &hf_opa_ClearAllPortCounters_PortXmitConstraintErrors, {
12607 "PortXmitConstraintErrors", "opa.pa.clearallportcounters.portxmitconstrainterrors",
12608 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00002000, NULL, HFILL }
12610 { &hf_opa_ClearAllPortCounters_PortRcvRemotePhysicalErrors, {
12611 "PortRcvRemotePhysicalErrors", "opa.pa.clearallportcounters.portrcvremotephysicalerrors",
12612 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00001000, NULL, HFILL }
12614 { &hf_opa_ClearAllPortCounters_LocalLinkIntegrityErrors, {
12615 "LocalLinkIntegrityErrors", "opa.pa.clearallportcounters.locallinkintegrityerrors",
12616 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000800, NULL, HFILL }
12618 { &hf_opa_ClearAllPortCounters_PortRcvErrors, {
12619 "PortRcvErrors", "opa.pa.clearallportcounters.portrcverrors",
12620 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000400, NULL, HFILL }
12622 { &hf_opa_ClearAllPortCounters_ExcessiveBufferOverruns, {
12623 "ExcessiveBufferOverruns", "opa.pa.clearallportcounters.excessivebufferoverruns",
12624 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000200, NULL, HFILL }
12626 { &hf_opa_ClearAllPortCounters_FMConfigErrors, {
12627 "FMConfigErrors", "opa.pa.clearallportcounters.fmconfigerrors",
12628 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000100, NULL, HFILL }
12630 { &hf_opa_ClearAllPortCounters_LinkErrorRecovery, {
12631 "LinkErrorRecovery", "opa.pa.clearallportcounters.linkerrorrecovery",
12632 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000080, NULL, HFILL }
12634 { &hf_opa_ClearAllPortCounters_LinkDowned, {
12635 "LinkDowned", "opa.pa.clearallportcounters.linkdowned",
12636 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000040, NULL, HFILL }
12638 { &hf_opa_ClearAllPortCounters_UncorrectableErrors, {
12639 "UncorrectableErrors", "opa.pa.clearallportcounters.uncorrectableerrors",
12640 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00000020, NULL, HFILL }
12642 { &hf_opa_ClearAllPortCounters_reserved, {
12643 "Reserved (5 bits)", "opa.pa.clearallportcounters.reserved",
12644 FT_UINT32, BASE_DEC, NULL, 0x0000001F, NULL, HFILL }
12647 /* PMConfig */
12648 { &hf_opa_PMConfig, {
12649 "PM Config", "opa.pa.pmconfig",
12650 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12652 { &hf_opa_PMConfig_sweepInterval, {
12653 "sweepInterval", "opa.pa.pmconfig.sweepinterval",
12654 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12656 { &hf_opa_PMConfig_maxClients, {
12657 "maxClients", "opa.pa.pmconfig.maxclients",
12658 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12660 { &hf_opa_PMConfig_sizeHistory, {
12661 "sizeHistory", "opa.pa.pmconfig.sizehistory",
12662 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12664 { &hf_opa_PMConfig_sizeFreeze, {
12665 "sizeFreeze", "opa.pa.pmconfig.sizefreeze",
12666 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12668 { &hf_opa_PMConfig_lease, {
12669 "lease", "opa.pa.pmconfig.lease",
12670 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12672 { &hf_opa_PMConfig_pmFlags, {
12673 "pmFlags", "opa.pa.pmconfig.pmflags",
12674 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12676 { &hf_opa_PMConfig_PortXmitWait, {
12677 "PortXmitWait", "opa.pa.pmconfig.portxmitwait",
12678 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12680 { &hf_opa_PMConfig_SwPortCongestion, {
12681 "SwPortCongestion", "opa.pa.pmconfig.swportcongestion",
12682 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12684 { &hf_opa_PMConfig_PortRcvFECN, {
12685 "PortRcvFECN", "opa.pa.pmconfig.portrcvfecn",
12686 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12688 { &hf_opa_PMConfig_PortRcvBECN, {
12689 "PortRcvBECN", "opa.pa.pmconfig.portrcvbecn",
12690 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12692 { &hf_opa_PMConfig_PortXmitTimeCong, {
12693 "PortXmitTimeCong", "opa.pa.pmconfig.portxmittimecong",
12694 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12696 { &hf_opa_PMConfig_PortMarkFECN, {
12697 "PortMarkFECN", "opa.pa.pmconfig.portmarkfecn",
12698 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12700 { &hf_opa_PMConfig_integrityErrors, {
12701 "integrityErrors", "opa.pa.pmconfig.integrityerrors",
12702 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12704 { &hf_opa_PMConfig_congestionErrors, {
12705 "congestionErrors", "opa.pa.pmconfig.congestionerrors",
12706 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12708 { &hf_opa_PMConfig_bubbleErrors, {
12709 "bubbleErrors", "opa.pa.pmconfig.bubbleerrors",
12710 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12712 { &hf_opa_PMConfig_smaCongestionErrors, {
12713 "smaCongestionErrors", "opa.pa.pmconfig.smacongestionerrors",
12714 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12716 { &hf_opa_PMConfig_securityErrors, {
12717 "securityErrors", "opa.pa.pmconfig.securityerrors",
12718 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12720 { &hf_opa_PMConfig_routingErrors, {
12721 "routingErrors", "opa.pa.pmconfig.routingerrors",
12722 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12724 { &hf_opa_PMConfig_LocalLinkIntegrityErrors, {
12725 "LocalLinkIntegrityErrors", "opa.pa.pmconfig.locallinkintegrityerrors",
12726 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12728 { &hf_opa_PMConfig_PortRcvErrors, {
12729 "PortRcvErrors", "opa.pa.pmconfig.portrcverrors",
12730 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12732 { &hf_opa_PMConfig_ExcessiveBufferOverrunErrors, {
12733 "ExcessiveBufferOverrunErrors", "opa.pa.pmconfig.excessivebufferoverrunerrors",
12734 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12736 { &hf_opa_PMConfig_LinkErrorRecovery, {
12737 "LinkErrorRecovery", "opa.pa.pmconfig.linkerrorrecovery",
12738 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12740 { &hf_opa_PMConfig_LinkDowned, {
12741 "LinkDowned", "opa.pa.pmconfig.linkdowned",
12742 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12744 { &hf_opa_PMConfig_UncorrectableErrors, {
12745 "UncorrectableErrors", "opa.pa.pmconfig.uncorrectableerrors",
12746 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12748 { &hf_opa_PMConfig_FMConfigErrors, {
12749 "FMConfigErrors", "opa.pa.pmconfig.fmconfigerrors",
12750 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12752 { &hf_opa_PMConfig_LinkQualityIndicator, {
12753 "LinkQualityIndicator", "opa.pa.pmconfig.linkqualityindicator",
12754 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12756 { &hf_opa_PMConfig_LinkWidthDowngrade, {
12757 "LinkWidthDowngrade", "opa.pa.pmconfig.linkwidthdowngrade",
12758 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12760 { &hf_opa_PMConfig_memoryFootprint, {
12761 "memoryFootprint", "opa.pa.pmconfig.memoryfootprint",
12762 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12764 { &hf_opa_PMConfig_maxAttempts, {
12765 "maxAttempts", "opa.pa.pmconfig.maxattempts",
12766 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12768 { &hf_opa_PMConfig_respTimeout, {
12769 "respTimeout", "opa.pa.pmconfig.resptimeout",
12770 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12772 { &hf_opa_PMConfig_minRespTimeout, {
12773 "minRespTimeout", "opa.pa.pmconfig.minresptimeout",
12774 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12776 { &hf_opa_PMConfig_maxParallelNodes, {
12777 "maxParallelNodes", "opa.pa.pmconfig.maxparallelnodes",
12778 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12780 { &hf_opa_PMConfig_pmaBatchSize, {
12781 "pmaBatchSize", "opa.pa.pmconfig.pmabatchsize",
12782 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12784 { &hf_opa_PMConfig_errorClear, {
12785 "errorClear", "opa.pa.pmconfig.errorclear",
12786 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12789 /* MoveFreezeFrame */
12790 { &hf_opa_MoveFreezeFrame_old, {
12791 "Old Image", "opa.pa.movefreezeframe.old",
12792 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12794 { &hf_opa_MoveFreezeFrame_new, {
12795 "New Image", "opa.pa.movefreezeframe.new",
12796 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12799 /* GetFocusPorts */
12800 { &hf_opa_GetFocusPorts, {
12801 "Focus Ports", "opa.pa.getfocusports",
12802 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12804 { &hf_opa_GetFocusPorts_groupName, {
12805 "Group Name", "opa.pa.getfocusports.groupname",
12806 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12808 { &hf_opa_GetFocusPorts_select, {
12809 "select", "opa.pa.getfocusports.select",
12810 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12812 { &hf_opa_GetFocusPorts_start, {
12813 "start", "opa.pa.getfocusports.start",
12814 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12816 { &hf_opa_GetFocusPorts_range, {
12817 "range", "opa.pa.getfocusports.range",
12818 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12820 { &hf_opa_GetFocusPorts_nodeLID, {
12821 "nodeLID", "opa.pa.getfocusports.nodelid",
12822 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12824 { &hf_opa_GetFocusPorts_portNumber, {
12825 "portNumber", "opa.pa.getfocusports.portnumber",
12826 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12828 { &hf_opa_GetFocusPorts_rate, {
12829 "rate", "opa.pa.getfocusports.rate",
12830 FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
12832 { &hf_opa_GetFocusPorts_mtu, {
12833 "mtu", "opa.pa.getfocusports.mtu",
12834 FT_UINT8, BASE_HEX, VALS(MTU), 0x0, NULL, HFILL }
12836 { &hf_opa_GetFocusPorts_localFlags, {
12837 "localFlags", "opa.pa.getfocusports.localflags",
12838 FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0xF0, NULL, HFILL }
12840 { &hf_opa_GetFocusPorts_neighborFlags, {
12841 "neighborFlags", "opa.pa.getfocusports.neighborflags",
12842 FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0x0F, NULL, HFILL }
12844 { &hf_opa_GetFocusPorts_value, {
12845 "value", "opa.pa.getfocusports.value",
12846 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12848 { &hf_opa_GetFocusPorts_nodeGUID, {
12849 "nodeGUID", "opa.pa.getfocusports.nodeguid",
12850 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12852 { &hf_opa_GetFocusPorts_nodeDesc, {
12853 "nodeDesc", "opa.pa.getfocusports.nodedesc",
12854 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12856 { &hf_opa_GetFocusPorts_neighborLid, {
12857 "neighborLid", "opa.pa.getfocusports.neighborlid",
12858 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12860 { &hf_opa_GetFocusPorts_neighborPortNumber, {
12861 "neighborPortNumber", "opa.pa.getfocusports.neighborportnumber",
12862 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12864 { &hf_opa_GetFocusPorts_neighborValue, {
12865 "neighborValue", "opa.pa.getfocusports.neighborvalue",
12866 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12868 { &hf_opa_GetFocusPorts_neighborGuid, {
12869 "neighborGuid", "opa.pa.getfocusports.neighborguid",
12870 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12872 { &hf_opa_GetFocusPorts_neighborNodeDesc, {
12873 "neighborNodeDesc", "opa.pa.getfocusports.neighbornodedesc",
12874 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12877 /* GetImageInfo */
12878 { &hf_opa_GetImageInfo, {
12879 "Image Info", "opa.pa.getimageinfo",
12880 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12882 { &hf_opa_GetImageInfo_sweepStart, {
12883 "sweepStart", "opa.pa.getimageinfo.sweepstart",
12884 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }
12886 { &hf_opa_GetImageInfo_sweepDuration, {
12887 "sweepDuration", "opa.pa.getimageinfo.sweepduration",
12888 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12890 { &hf_opa_GetImageInfo_numHFIPorts, {
12891 "numHHIPorts", "opa.pa.getimageinfo.numhfiports",
12892 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
12894 { &hf_opa_GetImageInfo_numSwitchNodes, {
12895 "numSwitchNodes", "opa.pa.getimageinfo.numswitchnodes",
12896 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
12898 { &hf_opa_GetImageInfo_numSwitchPorts, {
12899 "numSwitchPorts", "opa.pa.getimageinfo.numswitchports",
12900 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12902 { &hf_opa_GetImageInfo_numLinks, {
12903 "numLinks", "opa.pa.getimageinfo.numlinks",
12904 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12906 { &hf_opa_GetImageInfo_numSMs, {
12907 "numSMs", "opa.pa.getimageinfo.numsms",
12908 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12910 { &hf_opa_GetImageInfo_numFailedNodes, {
12911 "numFailedNodes", "opa.pa.getimageinfo.numfailednodes",
12912 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12914 { &hf_opa_GetImageInfo_numFailedPorts, {
12915 "numFailedPorts", "opa.pa.getimageinfo.numfailedports",
12916 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12918 { &hf_opa_GetImageInfo_numSkippedNodes, {
12919 "numSkippedNodes", "opa.pa.getimageinfo.numskippednodes",
12920 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12922 { &hf_opa_GetImageInfo_numSkippedPorts, {
12923 "numSkippedPorts", "opa.pa.getimageinfo.numskippedports",
12924 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12926 { &hf_opa_GetImageInfo_numUnexpectedClearPorts, {
12927 "numUnexpectedClearPorts", "opa.pa.getimageinfo.numunexpectedclearports",
12928 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12930 { &hf_opa_GetImageInfo_imageInterval, {
12931 "imageInterval", "opa.pa.getimageinfo.imageinterval",
12932 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
12934 { &hf_opa_GetImageInfo_lid, {
12935 "lid", "opa.pa.getimageinfo.sminfo.lid",
12936 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12938 { &hf_opa_GetImageInfo_state, {
12939 "state", "opa.pa.getimageinfo.sminfo.state",
12940 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12942 { &hf_opa_GetImageInfo_priority, {
12943 "priority", "opa.pa.getimageinfo.sminfo.priority",
12944 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12946 { &hf_opa_GetImageInfo_portNumber, {
12947 "portNumber", "opa.pa.getimageinfo.sminfo.portnumber",
12948 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
12950 { &hf_opa_GetImageInfo_smPortGuid, {
12951 "portGUID", "opa.pa.getimageinfo.sminfo.portguid",
12952 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12954 { &hf_opa_GetImageInfo_smNodeDesc, {
12955 "nodeDesc", "opa.pa.getimageinfo.sminfo.nodedesc",
12956 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12959 /* GetVFList */
12960 { &hf_opa_GetVFList, {
12961 "Vf List", "opa.pa.getvflist",
12962 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12964 { &hf_opa_GetVFList_vfName, {
12965 "VF Name", "opa.pa.getvflist.vfname",
12966 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12969 /* GetVFInfo */
12970 { &hf_opa_GetVFInfo, {
12971 "VF Info", "opa.pa.getvfinfo",
12972 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
12974 { &hf_opa_GetVFInfo_vfName, {
12975 "VF Name", "opa.pa.getvfinfo.vfname",
12976 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
12978 { &hf_opa_GetVFInfo_numPorts, {
12979 "numPorts", "opa.pa.getvfinfo.numports",
12980 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12982 { &hf_opa_GetVFInfo_totalMBps, {
12983 "totalMBps", "opa.pa.getvfinfo.totalmbps",
12984 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12986 { &hf_opa_GetVFInfo_totalKPps, {
12987 "totalKPps", "opa.pa.getvfinfo.totalkpps",
12988 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
12990 { &hf_opa_GetVFInfo_avgMBps, {
12991 "avgMBps", "opa.pa.getvfinfo.avgmbps",
12992 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12994 { &hf_opa_GetVFInfo_minMBps, {
12995 "minMBps", "opa.pa.getvfinfo.minmbps",
12996 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
12998 { &hf_opa_GetVFInfo_maxMBps, {
12999 "maxMBps", "opa.pa.getvfinfo.maxmbps",
13000 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13002 { &hf_opa_GetVFInfo_numBWBuckets, {
13003 "numBWBuckets", "opa.pa.getvfinfo.numbwbuckets",
13004 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13006 { &hf_opa_GetVFInfo_BWBuckets, {
13007 "BWBuckets", "opa.pa.getvfinfo.bwbuckets",
13008 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13010 { &hf_opa_GetVFInfo_avgKPps, {
13011 "avgKPps", "opa.pa.getvfinfo.avgkpps",
13012 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13014 { &hf_opa_GetVFInfo_minKPps, {
13015 "minKPps", "opa.pa.getvfinfo.minkpps",
13016 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13018 { &hf_opa_GetVFInfo_maxKPps, {
13019 "maxKPps", "opa.pa.getvfinfo.maxkpps",
13020 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13022 { &hf_opa_GetVFInfo_pmaFailedPorts, {
13023 "pmaFailedPorts", "opa.pa.getvfinfo.pmafailedports",
13024 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
13026 { &hf_opa_GetVFInfo_topoFailedPorts, {
13027 "topoFailedPorts", "opa.pa.getvfinfo.topofailedports",
13028 FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
13030 { &hf_opa_GetVFInfo_integrityErrors, {
13031 "integrityErrors", "opa.pa.getvfinfo.integrityerrors",
13032 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
13034 { &hf_opa_GetVFInfo_congestionErrors, {
13035 "congestionErrors", "opa.pa.getvfinfo.congestionerrors",
13036 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
13038 { &hf_opa_GetVFInfo_smaCongestionErrors, {
13039 "smaCongestionErrors", "opa.pa.getvfinfo.smacongestionerrors",
13040 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
13042 { &hf_opa_GetVFInfo_bubbleErrors, {
13043 "bubbleErrors", "opa.pa.getvfinfo.bubbleerrors",
13044 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
13046 { &hf_opa_GetVFInfo_securityErrors, {
13047 "securityErrors", "opa.pa.getvfinfo.securityerrors",
13048 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
13050 { &hf_opa_GetVFInfo_routingErrors, {
13051 "routingErrors", "opa.pa.getvfinfo.routingerrors",
13052 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
13054 { &hf_opa_GetVFInfo_utilizationPct10, {
13055 "utilizationPct10", "opa.pa.getvfinfo.utilizationpct10",
13056 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
13058 { &hf_opa_GetVFInfo_discardsPct10, {
13059 "discardsPct10", "opa.pa.getvfinfo.discardspct10",
13060 FT_UINT16, BASE_CUSTOM, CF_FUNC(cf_opa_mad_computed_pct10), 0x0, NULL, HFILL }
13062 { &hf_opa_GetVFInfo_maxInternalRate, {
13063 "maxInternalRate", "opa.pa.getvfinfo.maxinternalrate",
13064 FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
13066 { &hf_opa_GetVFInfo_minInternalRate, {
13067 "minInternalRate", "opa.pa.getvfinfo.mininternalrate",
13068 FT_UINT8, BASE_HEX, VALS(Rate), 0x0, NULL, HFILL }
13070 { &hf_opa_GetVFInfo_maxInternalMBps, {
13071 "maxInternalMBps", "opa.pa.getvfinfo.maxinternalmbps",
13072 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13075 /* GetVFConfig */
13076 { &hf_opa_GetVFConfig, {
13077 "VF Config", "opa.pa.getvfconfig",
13078 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
13080 { &hf_opa_GetVFConfig_vfName, {
13081 "VF Name", "opa.pa.getvfconfig.vfname",
13082 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13084 { &hf_opa_GetVFConfig_Port_NodeGUID, {
13085 "NodeGUID", "opa.pa.getvfconfig.port.nodeguid",
13086 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13088 { &hf_opa_GetVFConfig_Port_nodeDesc, {
13089 "nodeDesc", "opa.pa.getvfconfig.port.nodedesc",
13090 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13092 { &hf_opa_GetVFConfig_Port_NodeLID, {
13093 "NodeLID", "opa.pa.getvfconfig.port.nodelid",
13094 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13096 { &hf_opa_GetVFConfig_Port_PortNumber, {
13097 "PortNumber", "opa.pa.getvfconfig.port.portnumber",
13098 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13101 /* GetVFPortCounters */
13102 { &hf_opa_GetVFPortCounters, {
13103 "VF Port Counters", "opa.pa.getvfportcounters",
13104 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
13106 { &hf_opa_GetVFPortCounters_vfName, {
13107 "VF Name", "opa.pa.getvfportcounters.vfname",
13108 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13110 { &hf_opa_GetVFPortCounters_nodeLID, {
13111 "nodeLID", "opa.pa.getvfportcounters.nodelid",
13112 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13114 { &hf_opa_GetVFPortCounters_PortNumber, {
13115 "PortNumber", "opa.pa.getvfportcounters.portnumber",
13116 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13118 { &hf_opa_GetVFPortCounters_flags, {
13119 "flags", "opa.pa.getvfportcounters.flags",
13120 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13122 { &hf_opa_GetVFPortCounters_PortVFXmitData, {
13123 "PortVFXmitData", "opa.pa.getvfportcounters.portvfxmitdata",
13124 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13126 { &hf_opa_GetVFPortCounters_PortVFRcvData, {
13127 "PortVFRcvData", "opa.pa.getvfportcounters.portvfrcvdata",
13128 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13130 { &hf_opa_GetVFPortCounters_PortVFXmitPkts, {
13131 "PortVFXmitPkts", "opa.pa.getvfportcounters.portvfxmitpkts",
13132 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13134 { &hf_opa_GetVFPortCounters_PortVFRcvPkts, {
13135 "PortVFRcvPkts", "opa.pa.getvfportcounters.portvfrcvpkts",
13136 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13138 { &hf_opa_GetVFPortCounters_PortVFXmitDiscards, {
13139 "PortVFXmitDiscards", "opa.pa.getvfportcounters.portvfxmitdiscards",
13140 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13142 { &hf_opa_GetVFPortCounters_SwPortVFCongestion, {
13143 "SwPortCongestion", "opa.pa.getvfportcounters.swportcongestion",
13144 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13146 { &hf_opa_GetVFPortCounters_PortVFXmitWait, {
13147 "PortVFXmitWait", "opa.pa.getvfportcounters.portvfxmitwait",
13148 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13150 { &hf_opa_GetVFPortCounters_PortVFRcvFECN, {
13151 "PortVFRcvFECN", "opa.pa.getvfportcounters.portvfrcvfecn",
13152 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13154 { &hf_opa_GetVFPortCounters_PortVFRcvBECN, {
13155 "PortVFRcvBECN", "opa.pa.getvfportcounters.portvfrcvbecn",
13156 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13158 { &hf_opa_GetVFPortCounters_PortVFXmitTimeCong, {
13159 "PortVFXmitTimeCong", "opa.pa.getvfportcounters.portvfxmittimecong",
13160 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13162 { &hf_opa_GetVFPortCounters_PortVFXmitWastedBW, {
13163 "PortVFXmitWastedBW", "opa.pa.getvfportcounters.portvfxmitwastedbw",
13164 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13166 { &hf_opa_GetVFPortCounters_PortVFXmitWaitData, {
13167 "PortVFXmitWaitData", "opa.pa.getvfportcounters.portvfxmitwaitdata",
13168 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13170 { &hf_opa_GetVFPortCounters_PortVFRcvBubble, {
13171 "PortVFRcvBubble", "opa.pa.getvfportcounters.portvfrcvbubble",
13172 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13174 { &hf_opa_GetVFPortCounters_PortVFMarkFECN, {
13175 "PortVFMarkFECN", "opa.pa.getvfportcounters.portvfmarkfecn",
13176 FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
13179 /* ClearVFPortCounters */
13180 { &hf_opa_ClearVFPortCounters, {
13181 "Clear VF Port Counters", "opa.pa.clearvfportcounters",
13182 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
13184 { &hf_opa_ClearVFPortCounters_vfName, {
13185 "VF Name", "opa.pa.clearvfportcounters.vfname",
13186 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13188 { &hf_opa_ClearVFPortCounters_nodeLID, {
13189 "nodeLID", "opa.pa.clearvfportcounters.nodelid",
13190 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13192 { &hf_opa_ClearVFPortCounters_PortNumber, {
13193 "PortNumber", "opa.pa.clearvfportcounters.portnumber",
13194 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13196 { &hf_opa_ClearVFPortCounters_CounterSelectMask, {
13197 "CounterSelectMask", "opa.pa.clearvfportcounters.counterselectmask",
13198 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13200 { &hf_opa_ClearVFPortCounters_PortVFXmitData, {
13201 "PortVFXmitData", "opa.pa.clearvfportcounters.portvfxmitdata",
13202 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x80000000, NULL, HFILL }
13204 { &hf_opa_ClearVFPortCounters_PortVFRcvData, {
13205 "PortVFRcvData", "opa.pa.clearvfportcounters.portvfrcvdata",
13206 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x40000000, NULL, HFILL }
13208 { &hf_opa_ClearVFPortCounters_PortVFXmitPkts, {
13209 "PortVFXmitPkts", "opa.pa.clearvfportcounters.portvfxmitpkts",
13210 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x20000000, NULL, HFILL }
13212 { &hf_opa_ClearVFPortCounters_PortVFRcvPkts, {
13213 "PortVFRcvPkts", "opa.pa.clearvfportcounters.portvfrcvpkts",
13214 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x10000000, NULL, HFILL }
13216 { &hf_opa_ClearVFPortCounters_PortVFXmitDiscards, {
13217 "PortVFXmitDiscards", "opa.pa.clearvfportcounters.portvfxmitdiscards",
13218 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x08000000, NULL, HFILL }
13220 { &hf_opa_ClearVFPortCounters_SwPortVFCongestion, {
13221 "SwPortVFCongestion", "opa.pa.clearvfportcounters.swportvfcongestion",
13222 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x04000000, NULL, HFILL }
13224 { &hf_opa_ClearVFPortCounters_PortVFXmitWait, {
13225 "PortVFXmitWait", "opa.pa.clearvfportcounters.portvfxmitwait",
13226 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x02000000, NULL, HFILL }
13228 { &hf_opa_ClearVFPortCounters_PortVFRcvFECN, {
13229 "PortVFRcvFECN", "opa.pa.clearvfportcounters.portvfrcvfecn",
13230 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x01000000, NULL, HFILL }
13232 { &hf_opa_ClearVFPortCounters_PortVFRcvBECN, {
13233 "PortVFRcvBECN", "opa.pa.clearvfportcounters.portvfrcvbecn",
13234 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00800000, NULL, HFILL }
13236 { &hf_opa_ClearVFPortCounters_PortVFXmitTimeCong, {
13237 "PortVFXmitTimeCong", "opa.pa.clearvfportcounters.portvfxmittimecong",
13238 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00400000, NULL, HFILL }
13240 { &hf_opa_ClearVFPortCounters_PortVFXmitWastedBW, {
13241 "PortVFXmitWastedBW", "opa.pa.clearvfportcounters.portvfxmitwastedbw",
13242 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00200000, NULL, HFILL }
13244 { &hf_opa_ClearVFPortCounters_PortVFXmitWaitData, {
13245 "PortVFXmitWaitData", "opa.pa.clearvfportcounters.portvfxmitwaitdata",
13246 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00100000, NULL, HFILL }
13248 { &hf_opa_ClearVFPortCounters_PortVFRcvBubble, {
13249 "PortVFRcvBubble", "opa.pa.clearvfportcounters.portvfrcvbubble",
13250 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00080000, NULL, HFILL }
13252 { &hf_opa_ClearVFPortCounters_PortVFMarkFECN, {
13253 "PortVFMarkFECN", "opa.pa.clearvfportcounters.portvfmarkfecn",
13254 FT_BOOLEAN, 32, TFS(&tfs_clear_dont_clear), 0x00040000, NULL, HFILL }
13256 { &hf_opa_ClearVFPortCounters_reserved, {
13257 "Reserved", "opa.pa.clearvfportcounters.reserved",
13258 FT_UINT32, BASE_HEX, NULL, 0x0003FFFF, NULL, HFILL }
13261 /* GetVFFocusPorts */
13262 { &hf_opa_GetVFFocusPorts, {
13263 "VF Focus Ports", "opa.pa.getvffocusports",
13264 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
13266 { &hf_opa_GetVFFocusPorts_vfName, {
13267 "VF Name", "opa.pa.getvffocusports.vfname",
13268 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13270 { &hf_opa_GetVFFocusPorts_select, {
13271 "select", "opa.pa.getvffocusports.select",
13272 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13274 { &hf_opa_GetVFFocusPorts_start, {
13275 "start", "opa.pa.getvffocusports.start",
13276 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13278 { &hf_opa_GetVFFocusPorts_range, {
13279 "range", "opa.pa.getvffocusports.range",
13280 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13282 { &hf_opa_GetVFFocusPorts_nodeLID, {
13283 "nodeLID", "opa.pa.getvffocusports.nodelid",
13284 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13286 { &hf_opa_GetVFFocusPorts_portNumber, {
13287 "portNumber", "opa.pa.getvffocusports.portnumber",
13288 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13290 { &hf_opa_GetVFFocusPorts_rate, {
13291 "rate", "opa.pa.getvffocusports.rate",
13292 FT_UINT8, BASE_HEX, VALS(Rate), 0xF8, NULL, HFILL }
13294 { &hf_opa_GetVFFocusPorts_mtu, {
13295 "mtu", "opa.pa.getvffocusports.mtu",
13296 FT_UINT8, BASE_HEX, VALS(MTU), 0x07, NULL, HFILL }
13298 { &hf_opa_GetVFFocusPorts_localFlags, {
13299 "localFlags", "opa.pa.getvffocusports.localflags",
13300 FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0xF0, NULL, HFILL }
13302 { &hf_opa_GetVFFocusPorts_neighborFlags, {
13303 "neighborFlags", "opa.pa.getvffocusports.neighborflags",
13304 FT_UINT8, BASE_DEC, VALS(FocusPortFlags), 0x0F, NULL, HFILL }
13306 { &hf_opa_GetVFFocusPorts_value, {
13307 "value", "opa.pa.getvffocusports.value",
13308 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13310 { &hf_opa_GetVFFocusPorts_nodeGUID, {
13311 "nodeGUID", "opa.pa.getvffocusports.nodeguid",
13312 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13314 { &hf_opa_GetVFFocusPorts_nodeDesc, {
13315 "nodeDesc", "opa.pa.getvffocusports.nodedesc",
13316 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13318 { &hf_opa_GetVFFocusPorts_neighborLid, {
13319 "neighborLid", "opa.pa.getvffocusports.neighborlid",
13320 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13322 { &hf_opa_GetVFFocusPorts_neighborPortNumber, {
13323 "neighborPortNumber", "opa.pa.getvffocusports.neighborportnumber",
13324 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13326 { &hf_opa_GetVFFocusPorts_neighborValue, {
13327 "neighborValue", "opa.pa.getvffocusports.neighborvalue",
13328 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13330 { &hf_opa_GetVFFocusPorts_neighborGuid, {
13331 "neighborGuid", "opa.pa.getvffocusports.neighborguid",
13332 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13334 { &hf_opa_GetVFFocusPorts_neighborNodeDesc, {
13335 "neighborNodeDesc", "opa.pa.getvffocusports.neighbornodedesc",
13336 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13339 /* VFInfoRecord */
13340 { &hf_opa_VFInfoRecord, {
13341 "VF Info Record", "opa.vfinforecorf",
13342 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
13344 { &hf_opa_VFInfoRecord_vfIndex, {
13345 "VF Index", "opa.vfinforecorf.vfindex",
13346 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
13348 { &hf_opa_VFInfoRecord_pKey, {
13349 "P Key", "opa.vfinforecord.pkey",
13350 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
13352 { &hf_opa_VFInfoRecord_vfName, {
13353 "VF Name", "opa.vfinforecord.vfname",
13354 FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
13356 { &hf_opa_VFInfoRecord_MGID, {
13357 "M GID", "opa.vfinforecord.mgid",
13358 FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
13360 { &hf_opa_VFInfoRecord_SelectFlags, {
13361 "Select Flags", "opa.vfinforecord.selectflags",
13362 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }
13364 { &hf_opa_VFInfoRecord_reserved, {
13365 "Reserved (1 bit)", "opa.vfinforecord.reserved",
13366 FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL }
13368 { &hf_opa_VFInfoRecord_SL, {
13369 "SL", "opa.vfinforecord.sl",
13370 FT_UINT8, BASE_HEX, NULL, 0x1F, NULL, HFILL }
13372 { &hf_opa_VFInfoRecord_MTUSpecified, {
13373 "MTU Specified", "opa.vfinforecord.mtuspecified",
13374 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
13376 { &hf_opa_VFInfoRecord_reserved2, {
13377 "Reserved (1 bit)", "opa.vfinforecord.reserved2",
13378 FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }
13380 { &hf_opa_VFInfoRecord_MTU, {
13381 "MTU", "opa.vfinforecord.mtu",
13382 FT_UINT8, BASE_HEX, VALS(MTU), 0x3F, NULL, HFILL }
13384 { &hf_opa_VFInfoRecord_RateSpecified, {
13385 "Rate Specified", "opa.vfinforecord.ratespecified",
13386 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
13388 { &hf_opa_VFInfoRecord_reserved4, {
13389 "Reserved (1 bit)", "opa.vfinforecord.reserved4",
13390 FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL }
13392 { &hf_opa_VFInfoRecord_Rate, {
13393 "Rate", "opa.vfinforecord.rate",
13394 FT_UINT8, BASE_HEX, NULL, 0x3F, NULL, HFILL }
13396 { &hf_opa_VFInfoRecord_PktLifeSpecified, {
13397 "Packet Life Time Specified", "opa.vfinforecord.pktlifespecified",
13398 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL }
13400 { &hf_opa_VFInfoRecord_reserved5, {
13401 "Reserved (4 bits)", "opa.vfinforecord.reserved5",
13402 FT_UINT8, BASE_HEX, NULL, 0x78, NULL, HFILL }
13404 { &hf_opa_VFInfoRecord_PktLifeTimeInc, {
13405 "Packet Life Time", "opa.vfinforecord.pktlifetime",
13406 FT_UINT8, BASE_HEX, NULL, 0x07, NULL, HFILL }
13408 { &hf_opa_VFInfoRecord_OptionFlags, {
13409 "Option Flags", "opa.vfinforecord.optionflags",
13410 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13412 { &hf_opa_VFInfoRecord_BandwidthPercent, {
13413 "Bandwidth Percent", "opa.vfinforecord.bandwidthpercent",
13414 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13416 { &hf_opa_VFInfoRecord_reserved6, {
13417 "Reserved (7 bits)", "opa.vfinforecord.reserved6",
13418 FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL }
13420 { &hf_opa_VFInfoRecord_Priority, {
13421 "Priority", "opa.vfinforecord.priority",
13422 FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL }
13424 { &hf_opa_VFInfoRecord_RoutingSLs, {
13425 "Routing SLs", "opa.vfinforecord.routingsls",
13426 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13428 { &hf_opa_VFInfoRecord_reserved7, {
13429 "Reserved (24 Bytes)", "opa.vfinforecord.reserved7",
13430 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
13432 /* QuarantinedNodeRecord */
13433 { &hf_opa_QuarantinedNodeRecord, {
13434 "Quarantined Node Record", "opa.quarantinednoderecord",
13435 FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
13437 { &hf_opa_QuarantinedNodeRecord_TrustedLid, {
13438 "Trusted LID", "opa.quarantinednoderecord.trustedlid",
13439 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13441 { &hf_opa_QuarantinedNodeRecord_TrustedNodeGUID, {
13442 "Trusted Node GUID", "opa.quarantinednoderecord.trustednodeguid",
13443 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13445 { &hf_opa_QuarantinedNodeRecord_TrustedPortNum, {
13446 "Trusted Port Num", "opa.quarantinednoderecord.trustedportnum",
13447 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
13449 { &hf_opa_QuarantinedNodeRecord_TrustedNeighborNodeGUID, {
13450 "Trusted Neighbor Node GUID", "opa.quarantinednoderecord.trustedneighbornodeguid",
13451 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13453 { &hf_opa_QuarantinedNodeRecord_QuarantineReasons, {
13454 "Quarantine Reasons", "opa.quarantinednoderecord.quarantinereasons",
13455 FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
13457 { &hf_opa_QuarantinedNodeRecord_ExpectedNodeDesc, {
13458 "Expected Node Desc", "opa.quarantinednoderecord.expectednodedesc",
13459 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
13461 { &hf_opa_QuarantinedNodeRecord_ExpectedNodeGUID, {
13462 "Expected Node GUID", "opa.quarantinednoderecord.expectednodeguid",
13463 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13465 { &hf_opa_QuarantinedNodeRecord_ExpectedPortGUID, {
13466 "Expected Port GUID", "opa.quarantinednoderecord.expectedportguid",
13467 FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
13471 static int *ett[] = {
13472 &ett_payload,
13473 &ett_sm_lid,
13474 &ett_sm_dr,
13475 &ett_sa,
13476 &ett_pm,
13477 &ett_pa,
13478 &ett_mad,
13479 &ett_mad_status,
13480 &ett_mad_attributemod,
13481 &ett_rmpp,
13482 &ett_rmpp_fragment,
13483 &ett_rmpp_fragments,
13484 &ett_rmpp_sa_record,
13485 /* Common */
13486 &ett_noticestraps,
13487 &ett_datadetails,
13488 &ett_datadetails_trap259datavalid,
13489 &ett_informinfo,
13490 &ett_classportinfo,
13491 &ett_classportinfo_redirect,
13492 &ett_classportinfo_trap,
13493 /* SM */
13494 &ett_nodedescription,
13495 &ett_nodeinfo,
13496 &ett_switchinfo,
13497 &ett_switchinfo_switchcapabilitymask,
13498 &ett_portinfo,
13499 &ett_portinfo_vl,
13500 &ett_portinfo_link,
13501 &ett_portinfo_portmode,
13502 &ett_portinfo_flitcontrol,
13503 &ett_portinfo_porterroraction,
13504 &ett_portinfo_neighbormtu,
13505 &ett_portinfo_xmitq,
13506 &ett_portinfo_capmask,
13507 &ett_portinfo_capmask3,
13508 &ett_portstates,
13509 &ett_pkeytable,
13510 &ett_pkeytable_block,
13511 &ett_sltoscmapping,
13512 &ett_sltoscmapping_block,
13513 &ett_sctoscmapping,
13514 &ett_sctoscmapping_block,
13515 &ett_sctoslmapping,
13516 &ett_sctoslmapping_block,
13517 &ett_sctovlxmappingtable,
13518 &ett_sctovlxmappingtable_block,
13519 &ett_vlarbitrationtable,
13520 &ett_vlarbitrationtable_port,
13521 &ett_linearforwardingtable,
13522 &ett_linearforwardingtable_block,
13523 &ett_multicastforwardingtable,
13524 &ett_multicastforwardingtable_block,
13525 &ett_portgroupforwardingtable,
13526 &ett_portgroupforwardingtable_block,
13527 &ett_portgrouptable,
13528 &ett_portgrouptable_block,
13529 &ett_sminfo,
13530 &ett_ledinfo,
13531 &ett_cableinfo,
13532 &ett_aggregate,
13533 &ett_buffercontroltable,
13534 &ett_congestioninfo,
13535 &ett_switchcongestionlog,
13536 &ett_switchcongestionlog_entry,
13537 &ett_switchcongestionsetting,
13538 &ett_switchportcongestionsetting,
13539 &ett_switchportcongestionsetting_port,
13540 &ett_hficongestionlog,
13541 &ett_hficongestionlog_entry,
13542 &ett_hficongestionsetting,
13543 &ett_hficongestioncontroltable,
13544 &ett_hficongestioncontroltable_block,
13545 /* SA */
13546 &ett_portinforecord_linkdownreason,
13547 &ett_portinforecord_linkdownreason_entry,
13548 &ett_scmappingrecord,
13549 &ett_lftrecord,
13550 &ett_linkrecord,
13551 &ett_servicerecord,
13552 &ett_pathrecord,
13553 &ett_pathrecord_dgid,
13554 &ett_pathrecord_sgid,
13555 &ett_mcmemberrecord,
13556 &ett_tracerecord,
13557 &ett_multipathrecord_gid,
13558 &ett_multipathrecord_guid,
13559 &ett_multipathrecord_lid,
13560 &ett_cableinforecord,
13561 &ett_serviceassocrecord,
13562 &ett_sctoslmappingtablerecord,
13563 &ett_portgroupforwardingtablerecord,
13564 &ett_vfinforecord,
13565 &ett_quarantinednoderecord,
13566 &ett_fabricinforecord,
13567 /* PM */
13568 &ett_portstatus,
13569 &ett_portstatus_vl,
13570 &ett_clearportstatus,
13571 &ett_clearportstatus_counterselectmask,
13572 &ett_dataportcounters,
13573 &ett_dataportcounters_port,
13574 &ett_dataportcounters_vl,
13575 &ett_errorportcounters,
13576 &ett_errorportcounters_port,
13577 &ett_errorportinfo,
13578 &ett_errorportinfoport,
13579 &ett_errorportinfo_portrcverrorinfo,
13580 &ett_errorportinfo_excessivebufferoverruninfo,
13581 &ett_errorportinfo_portxmitconstrainterrorinfo,
13582 &ett_errorportinfo_portrcvconstrainterrorinfo,
13583 &ett_errorportinfo_portrcvswitchrelayerrorinfo,
13584 &ett_errorportinfo_uncorrectableerrorinfo,
13585 &ett_errorportinfo_fmconfigerrorinfo,
13586 /* PA */
13587 &ett_getgrouplist,
13588 &ett_getgroupinfo,
13589 &ett_getgroupinfoutilstats,
13590 &ett_getgroupinfoutilbuckets,
13591 &ett_getgroupinfoerrorsummary,
13592 &ett_getgroupinfoerrintegritybucket,
13593 &ett_getgroupinfoerrcongestionbucket,
13594 &ett_getgroupinfoerrsmacongestionbucket,
13595 &ett_getgroupinfoerrbubblebucket,
13596 &ett_getgroupinfoerrsecuritybucket,
13597 &ett_getgroupinfoerrroutingbucket,
13598 &ett_getportcounters,
13599 &ett_clearportcounters,
13600 &ett_clearportcounters_counterselectmask,
13601 &ett_clearallportcounters,
13602 &ett_clearallportcounters_counterselectmask,
13603 &ett_pmconfig,
13604 &ett_getgroupconfig,
13605 &ett_getgroupconfigport,
13606 &ett_movefreezeframeold,
13607 &ett_movefreezeframenew,
13608 &ett_getfocusports,
13609 &ett_getfocusportsport,
13610 &ett_getimageinfo,
13611 &ett_getimageinfosm,
13612 &ett_getvflist,
13613 &ett_getvfinfo,
13614 &ett_getvfinfoutilstats,
13615 &ett_getvfinfoutilbuckets,
13616 &ett_getvfinfoerrorsummary,
13617 &ett_getvfinfoerrintegritybucket,
13618 &ett_getvfinfoerrcongestionbucket,
13619 &ett_getvfinfoerrsmacongestionbucket,
13620 &ett_getvfinfoerrbubblebucket,
13621 &ett_getvfinfoerrsecuritybucket,
13622 &ett_getvfinfoerrroutingbucket,
13623 &ett_getvfconfig,
13624 &ett_getvfconfigport,
13625 &ett_getvffocusports,
13626 &ett_getvffocusportsport,
13627 &ett_getvfportcounters,
13628 &ett_clearvfportcounters,
13629 &ett_clearvfportcounters_counterselectmask
13632 static ei_register_info ei[] = {
13633 { &ei_opa_mad_error, {
13634 "opa.mad.error", PI_RESPONSE_CODE, PI_WARN,
13635 "MAD Status Error", EXPFILL }
13637 { &ei_opa_mad_no_attribute_dissector, {
13638 "opa.mad.noattributedissector", PI_UNDECODED, PI_NOTE,
13639 "Attribute Dissector Not Implemented", EXPFILL }
13641 { &ei_opa_mad_attribute_modifier_error_nonzero, {
13642 "opa.mad.attributemodifiererrornonzero", PI_PROTOCOL, PI_WARN,
13643 "Attribute Modifier is unexpectedly Non-zero", EXPFILL }
13645 { &ei_opa_rmpp_undecoded, {
13646 "opa.rmpp.undecoded", PI_UNDECODED, PI_NOTE,
13647 "RMPP Records Undecoded", EXPFILL }
13649 { &ei_opa_aggregate_error, {
13650 "opa.aggregate.error.exp", PI_RESPONSE_CODE, PI_WARN,
13651 "Aggregate Error", EXPFILL }
13655 proto_opa_mad = proto_register_protocol("Intel Omni-Path MAD", "OPA MAD", "opa.mad");
13656 opa_mad_handle = register_dissector("opa.mad", dissect_opa_mad, proto_opa_mad);
13658 proto_register_field_array(proto_opa_mad, hf, array_length(hf));
13659 proto_register_subtree_array(ett, array_length(ett));
13661 expert_opa_mad = expert_register_protocol(proto_opa_mad);
13662 expert_register_field_array(expert_opa_mad, ei, array_length(ei));
13664 range_convert_str(wmem_epan_scope(), &global_mad_vendor_class, OPA_VENDOR_RANGE_STR, 0xFF);
13665 range_convert_str(wmem_epan_scope(), &global_mad_vendor_rmpp_class, OPA_VENDOR_RMPP_RANGE_STR, 0xFF);
13666 range_convert_str(wmem_epan_scope(), &global_mad_application_class, OPA_APPLICATION_RANGE_STR, 0xFF);
13667 range_convert_str(wmem_epan_scope(), &global_mad_reserved_class, OPA_RESERVED_RANGE_STR, 0xFF);
13668 range_convert_str(wmem_epan_scope(), &global_mad_opa_class, OPA_MGMTCLASS_RANGE_STR, 0xFF);
13670 opa_mad_module = prefs_register_protocol(proto_opa_mad, NULL);
13671 prefs_register_bool_preference(opa_mad_module, "parse_mad_error",
13672 "Enable Parsing of Mad Payload on Mad Status Error",
13673 "Attempt to parse mad payload even when MAD.Status is non-zero",
13674 &pref_parse_on_mad_status_error);
13675 prefs_register_bool_preference(opa_mad_module, "reassemble_rmpp",
13676 "Enable Reassembly of RMPP packets",
13677 "Attempt to reassemble the mad payload of RMPP segments",
13678 &pref_attempt_rmpp_defragment);
13680 register_init_routine(opa_mad_init);
13681 register_cleanup_routine(opa_mad_cleanup);
13684 void proto_reg_handoff_opa_mad(void)
13686 ethertype_dissector_table = find_dissector_table("ethertype");
13690 * Editor modelines - https://www.wireshark.org/tools/modelines.html
13692 * Local variables:
13693 * c-basic-offset: 4
13694 * tab-width: 8
13695 * indent-tabs-mode: nil
13696 * End:
13698 * vi: set shiftwidth=4 tabstop=8 expandtab:
13699 * :indentSize=4:tabSize=8:noTabs=true: