Codebase list opensm / eafa342
Imported Upstream version 3.3.19 Ana Guerrero López 8 years ago
48 changed file(s) with 944 addition(s) and 303 deletion(s). Raw diff Collapse all Expand all
00
1 ** Version: HEAD
1 ** Version: opensm-3.3.19
2
3 Wed Dec 17 20:01:21 2014 +0200 Hal Rosenstock
4 fa92807d9c0d60b6aaa66c5303b19a8c5ec101c6
5
6 * Update opensm_release_notes-3.3.txt
7
8 Wed Dec 17 19:41:39 2014 +0200 Hal Rosenstock
9 2a30f922f4414763aac72d7f55c00c919bd2e63b
10
11 * Update package number for OpenSM to 3.3.19 for release
12
13 Wed Dec 17 19:38:29 2014 +0200 Hal Rosenstock
14 e29f77a6996da847e235b75316be9577b081f498
15
16 * Update (internal) shared library versions
17
18 Sat Dec 13 18:19:13 2014 +0200 Hal Rosenstock
19 28fd4eefb2e112039a3ac0081890adb4d6fd3597
20
21 * osm_[subnet congestion_control].c: Cosmetic commentary change
22
23 Sat Dec 13 16:54:51 2014 +0200 Hal Rosenstock
24 391c244f350b91a03a4b3a0591737f27ca3bbb33
25
26 * osm_congestion_control.c: Added Mellanox copyright
27
28 Sat Dec 13 16:49:48 2014 +0200 Hal Rosenstock
29 7e08621264f70af7f9875409bae86938f0aaa448
30
31 * osm_congestion_control.c: In cc_rcv_mad, add attribute ID and modifier to log message
32
33 Sat Dec 13 16:37:31 2014 +0200 Hal Rosenstock
34 62075d689bee0fd75beb5ecdace97424670930f4
35
36 * osm_perfmgr.c: Fix endian of MAD status in pc_recv_process
37
38 Sat Dec 13 16:36:03 2014 +0200 Hal Rosenstock
39 cd94c9cc7c4d096c4450e760b392f0c23cdc6753
40
41 * osm_congestion_control.c: Fix endian of MAD status in cc_rcv_mad
42
43 Sat Dec 13 16:31:44 2014 +0200 Hal Rosenstock
44 cb5df8bbbbb67aceb6ddfd15fbff4979d5bed437
45
46 * osm_congestion_control.c: Fix endian of node and port GUIDs in some log messages
47
48 Sat Dec 13 16:11:34 2014 +0200 Hal Rosenstock
49 68887fb2388a6f1c7154ffa70bc89eab43177f98
50
51 * osm_congestion_control.c: Cosmetic changes
52
53 Tue Dec 9 19:32:18 2014 +0200 Daniel Klein
54 5077198d156636c547f2a4ab4099439ddccd390e
55
56 * osm_perfmgr.c: Reset physp_discovered before discovery
57
58 Wed Dec 10 09:30:50 2014 +0200 Shlomi Nimrodi
59 1331a46b017ff83e819f85bdbd3d1659182c3225
60
61 * osm_subnet.[h c]: Fix possibility for open file descriptor issue
62
63 Mon Dec 8 10:39:12 2014 -0800 Albert Chu
64 ce15bb76b58e50f2606e1c96077d40216a610bcc
65
66 * osm_perfmgr.c: Output remote port on perfmgr error counter log messages
67
68 Mon Dec 1 11:11:00 2014 +0200 Tomer Cohen
69 030ac82209e920f09ff24ebe101a41e5c9bb3103
70
71 * osm_sa.c: Improve ERR 4C05 log message
72
73 Tue Dec 2 14:01:33 2014 +0200 Daniel Klein
74 fbb63d6c3d9b7bcaf34c47a7840b74d39b0c8807
75
76 * osm_subnet.c: Update MEPI supported devices white list
77
78 Tue Dec 2 20:52:21 2014 +0200 Hal Rosenstock
79 0774229f1f2ec90665b6798456921c6b661b7d76
80
81 * osm_subnet.c: Cosmetic formatting change
82
83 Tue Nov 18 16:14:22 2014 +0200 Daniel Klein
84 5871ef71c177de927f105caa7c6a56aadc3d3d1d
85
86 * osm_sa.c: Check return value from chmod in opensm_dump_to_file
87
88 Thu Nov 20 11:15:11 2014 +0200 Daniel Klein
89 8d51ae5dabdbe66f8e276ad372c8f4adcada85b2
90
91 * osm_state_mgr.c: Avoid continuing discovery when SM port is unresponsive
92
93 Mon Nov 17 19:18:39 2014 +0200 Daniel Klein
94 61cd0cfb9760904d1d49cf190bbaffe4c058d781
95
96 * osm_switch.c: Fix potential memory leak due to misuse of realloc
97
98 Tue Dec 11 12:27:03 2012 +0200 Alex Netes
99 c78adde242ddcd67f8f1a84ab8721d25fa886f03
100
101 * osm_req.c: Initialize dest_port_guid in req_determine_mkey
102
103 Tue Nov 4 16:03:21 2014 +0200 Daniel Klein
104 dd5e5dff8e1865a6c2d06ebbdf2a303562885a85
105
106 * osm_mcast_mgr.c: Add MLID to error 0A06 log message
107
108 Thu Apr 25 19:20:31 2013 +0300 Alex Netes
109 f017063f57ce2abaedd24c420915c72db9815c91
110
111 * Better way to handle polling other MASTER SM
112
113 Thu Oct 30 16:30:15 2014 +0200 Hal Rosenstock
114 63900bcc9fdba2c02b32a8ace2123f28ffaf276e
115
116 * osm_vendor_ibumad.h: Use UMAD_MAX_DEVICES for OSM_UMAD_MAX_CAS
117
118 Tue Oct 14 08:53:08 2014 +0200 Daniel Klein
119 25e5ee52cc2df4fba81483d0c9d220b5dbbbf975
120
121 * complib/cl_dispatcher.c: Check registrations vector size when searching for handlers
122
123 Tue Oct 7 16:17:47 2014 +0200 Dan Ben Yosef
124 a5c0200ea101a24f3f1753e608cb0b677403a562
125
126 * iba/ib_types.h: Add support for new MAD SM:PortInfoExtended and for modifying PM:PortExtendedSpeedsCounters
127
128 Tue Oct 21 17:18:21 2014 +0200 Hal Rosenstock
129 3f9953573f0cecb482d17d01da7cb8e2f867a85e
130
131 * osm_port_info_rcv.c: In osm_pi_rcv_process, move assert before first log message
132
133 Tue Oct 21 10:26:02 2014 +0200 Vladimir Koushnir
134 6b0fb4d1881e3c227d4c2950b1bee208728a81d9
135
136 * osm_lid_mgr.c: Send client reregistration in case of SM LID change
137
138 Sun Oct 19 18:25:09 2014 +0200 Shlomi Nimrodi
139 5d231f8791fc166ceba6a5171d122e7409f2524c
140
141 * osm_pkey_mgr.c: Use calloc instead of malloc in pkey_mgr_process_physical_port
142
143 Mon Oct 13 15:29:24 2014 +0200 Vladimir Koushnir
144 985859e552dcb8802b1bad1250cf848745f2373d
145
146 * Fix turning on first_time_master_sweep flag
147
148 Tue Oct 7 10:01:10 2014 +0200 Daniel Klein
149 4629e80e48d6a618e55b372a191d884b556738b3
150
151 * osm_mcast_mgr.c: Invalidate cache due to multicast routing errors
152
153 Tue Sep 16 16:32:38 2014 +0300 Daniel Klein
154 a0b94442bfb217fbecf2f108781cc0863ae8da08
155
156 * Change osm_subn_t.log_max_size type to uint32_t
157
158 Thu Sep 25 17:40:40 2014 +0300 Hal Rosenstock
159 b5abaa2883ecb3973febe97bcc15c7ce45b3c97d
160
161 * osmeventplugin.c: Add include of osm_config.h as first OpenSM include
162
163 Sat Sep 20 14:43:04 2014 +0300 Hal Rosenstock
164 ecce4e36ac1c1cc270a266195add5fe257e5b1e8
165
166 * osm_console.c: Handle LinkSpeed[Ext]Active 0 for portstatus command
167
168 Sat Sep 20 14:40:14 2014 +0300 Hal Rosenstock
169 f6228104335e429a3803facba6daa3e79fd86061
170
171 * osm_console.c: Fix unknown speed/width port reporting for portstatus command
172
173 Sat Sep 20 00:59:21 2014 +0300 Hal Rosenstock
174 ffdd042751408e73c722e12658fccc44bb8a5778
175
176 * osm_console_io.c: In is_authorized, STRING_UNKNOWN is define
177
178 Mon Sep 15 14:29:06 2014 +0300 Tomer Cohen
179 a6ba88828ae6ca19689b10e5802e7d60967a8d00
180
181 * Add missing keyword in partition definition in man page and partition.txt doc
182
183 Wed Sep 17 14:14:55 2014 +0300 Hal Rosenstock
184 7444e5e2e83d69aa8842217bd5b5e32ca1ecd52f
185
186 * Fix the difference in osm_opensm struct size between OpenSM and plugin(s)
187
188 Sun Sep 14 15:13:18 2014 +0300 Hal Rosenstock
189 caf764fc02e8ec5997436f3ceafa5ae2abdb291c
190
191 * osm_subnet.h: Fixed commentary typo
192
193 Thu Sep 11 18:13:56 2014 +0300 Vladimir Koushnir
194 117bc826b396acc118974f66cbf00e27741344fe
195
196 * osm_prtn.c: Change message verbosity for log message in osm_prtn_add_port
197
198 Sun Sep 7 11:34:17 2014 +0300 Daniel Klein
199 b6a1dd4741bc4c49ccd15bf5de8003bf097ee068
200
201 * osm_state_mgr.c: Avoid ucast cache invalidation due to errors during initialization
202
203 Mon Sep 1 17:49:48 2014 +0300 Tomer Cohen
204 3b172ab597516e05aa691aae22f210d73016257a
205
206 * osm_config.h.in: Fixed the difference in osm_opensm_t struct size between opensm and plugins
207
208 Thu Sep 4 20:46:25 2014 +0300 Hal Rosenstock
209 d13d4bdbab25aefa58762d371b55d03b613868f1
210
211 * osm_console.c: Track and report unknown/speed width ports
212
213 Thu Aug 28 14:44:39 2014 +0300 Hal Rosenstock
214 d63e7f6d79ebbf3bb2ce43eb2ab5e22fefb6d8dc
215
216 * osm_sa_path_record.c: Cosmetic formatting changes
217
218 Mon Aug 18 18:57:57 2014 +0300 Hal Rosenstock
219 48d159b7b9f631d6b2e62360bf351e0fe9c2d77c
220
221 * libvendor/osm_vendor_ibumad.c: Remove GID index 0 check in umad_receiver
222
223 Tue Aug 12 17:23:51 2014 +0300 Tomer Cohen
224 d7f1d02bb4855d8941765ea2095c4f6ee945a63c
225
226 * libvendor/osm_vendor_ibumad.c: memset osm_mad_addr_t before setting fields
227
228 Tue Aug 12 15:32:17 2014 +0300 Hal Rosenstock
229 96f89d61f28a74256410e8b02203e0926ddaf9fa
230
231 * osm_console.c: Included unknown speed/width ports in "possible issues"
232
233 Thu Aug 7 21:12:56 2014 +0300 Hal Rosenstock
234 44df23554aeb7b498b0ed01c778371119575aa38
235
236 * osm_dump.c: In dump_topology_node, handle link_width_active of 4 for 8X
237
238 Mon Aug 4 15:40:43 2014 +0300 Shlomi Nimrodi
239 a1e58e03840fae6b334caf908a95da7c76c39b41
240
241 * osm_link_mgr.c: Fix bug in mlnx extended port info setting
242
243 Wed Aug 6 23:25:18 2014 +0300 Hal Rosenstock
244 fcb696784930ef2a2c9f665a90003da3ac5edd1e
245
246 * osm_subnet.c: Improve sweep_on_trap documentation in generated conf file
247
248 Mon Aug 4 03:13:04 2014 +0300 Hal Rosenstock
249 47a6b00477bff9d83376bf97452b8871c1fc08df
250
251 * osm_sa_multipath_record.c: Better logging for 4514, 4515, and 4505 error messages
252
253 Mon Aug 4 03:10:52 2014 +0300 Hal Rosenstock
254 115529be7bf139357e6554f54ccd342813448f2d
255
256 * osm_sa_path_record.c: Better logging for 1F02 error message
257
258 Sun Aug 3 11:12:54 2014 +0300 Vladimir Koushnir
259 fe079dfe054d35fcb107df4bca6fa95f79ec2cce
260
261 * osm_sa_path_record.c: Better logging for 1F05 and 1F03 error messages
262
263 Sun Aug 3 02:22:33 2014 +0300 Hal Rosenstock
264 43c378f4b5ca4856995722998f985f46a6437c3e
265
266 * osm_ucast_mgr.c: A couple of cosmetic log message changes in ucast_mgr_route
267
268 Thu Jul 24 14:18:01 2014 +0300 Hal Rosenstock
269 9a5e51405392ba13770bd5d909f1d6aee40cb599
270
271 * osmtest/osmtest.c: Cosmetic formatting change
272
273 Tue Jul 22 17:32:15 2014 +0300 Hal Rosenstock
274 90db6c3da1947de2b0860319a50e1df451e21572
275
276 * osm_state_mgr.c: Cosmetic formatting changes
277
278 Tue Jul 22 14:16:11 2014 +0300 Hal Rosenstock
279 e7139affd49237d3e5ed1ef55154772053958f69
280
281 * osmtest/osmtest.c: Fix osmtest_get_sm_gid when running osmtest on node other than SM node
282
283 Tue Jul 22 04:27:58 2014 +0300 Hal Rosenstock
284 83ea812d714e50601dc2aa89fd30e55a3d6ef84c
285
286 * doc/performance-manager-HOWTO.txt: Update perfmgr config options documentation
287
288 Mon Jul 21 18:52:22 2014 +0300 Hal Rosenstock
289 d4d5af39285fc7fd720c412455c58b494065bc16
290
291 * libvendor/osm_vendor_ibumad_sa.c: Fixed endian in debug log message
292
293 Mon Jul 21 18:49:47 2014 +0300 Hal Rosenstock
294 c1080b9cc58fb0b1db7b3c3a4a8c7338f91cf31c
295
296 * osmtest/main.c: Cosmetic change to output for consistency
297
298 ** Version: opensm-3.3.18
2299
3300 Wed Jul 16 22:28:15 2014 +0300 Hal Rosenstock
4301 77f713a8fdb1ce31a24488b370b14dd6f3cf7aaf
301301
302302 cl_spinlock_acquire(&p_disp->lock);
303303 /* Check that the recipient exists. */
304 if (cl_ptr_vector_get_size(&p_disp->reg_vec) <= msg_id) {
305 cl_spinlock_release(&p_disp->lock);
306 return (CL_NOT_FOUND);
307 }
308
304309 p_dest_reg = cl_ptr_vector_get(&p_disp->reg_vec, msg_id);
305310 if (!p_dest_reg) {
306311 cl_spinlock_release(&p_disp->lock);
55 # API_REV - advance on any added API
66 # RUNNING_REV - advance any change to the vendor files
77 # AGE - number of backward versions the API still supports
8 LIBVERSION=3:8:0
8 LIBVERSION=3:9:0
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for opensm 3.3.18.
2 # Generated by GNU Autoconf 2.69 for opensm 3.3.19.
33 #
44 # Report bugs to <linux-rdma@vger.kernel.org>.
55 #
728728 # Identity of this package.
729729 PACKAGE_NAME='opensm'
730730 PACKAGE_TARNAME='opensm'
731 PACKAGE_VERSION='3.3.18'
732 PACKAGE_STRING='opensm 3.3.18'
731 PACKAGE_VERSION='3.3.19'
732 PACKAGE_STRING='opensm 3.3.19'
733733 PACKAGE_BUGREPORT='linux-rdma@vger.kernel.org'
734734 PACKAGE_URL=''
735735
14971497 # Omit some internal or obsolete options to make the list less imposing.
14981498 # This message is too long to be a string in the A/UX 3.1 sh.
14991499 cat <<_ACEOF
1500 \`configure' configures opensm 3.3.18 to adapt to many kinds of systems.
1500 \`configure' configures opensm 3.3.19 to adapt to many kinds of systems.
15011501
15021502 Usage: $0 [OPTION]... [VAR=VALUE]...
15031503
15671567
15681568 if test -n "$ac_init_help"; then
15691569 case $ac_init_help in
1570 short | recursive ) echo "Configuration of opensm 3.3.18:";;
1570 short | recursive ) echo "Configuration of opensm 3.3.19:";;
15711571 esac
15721572 cat <<\_ACEOF
15731573
17141714 test -n "$ac_init_help" && exit $ac_status
17151715 if $ac_init_version; then
17161716 cat <<\_ACEOF
1717 opensm configure 3.3.18
1717 opensm configure 3.3.19
17181718 generated by GNU Autoconf 2.69
17191719
17201720 Copyright (C) 2012 Free Software Foundation, Inc.
21372137 This file contains any messages produced by compilers while
21382138 running configure, to aid debugging if configure makes a mistake.
21392139
2140 It was created by opensm $as_me 3.3.18, which was
2140 It was created by opensm $as_me 3.3.19, which was
21412141 generated by GNU Autoconf 2.69. Invocation command line was
21422142
21432143 $ $0 $@
29562956
29572957 # Define the identity of the package.
29582958 PACKAGE='opensm'
2959 VERSION='3.3.18'
2959 VERSION='3.3.19'
29602960
29612961
29622962 cat >>confdefs.h <<_ACEOF
29972997
29982998
29992999
3000 RELEASE=${RELEASE:-unknown}
3000 RELEASE=${RELEASE:-${VERSION}}
30013001
30023002 TARBALL=${TARBALL:-${PACKAGE}-${VERSION}.tar.gz}
30033003
1141111411
1141211412 $as_echo "#define OSM_DEBUG 1" >>confdefs.h
1141311413
11414
11415 $as_echo "#define _DEBUG_ 1" >>confdefs.h
11416
1141411417 fi
1141511418 if test x$debug = xtrue; then
1141611419 DEBUG_TRUE=
1268512688 # report actual input values of CONFIG_FILES etc. instead of their
1268612689 # values after options handling.
1268712690 ac_log="
12688 This file was extended by opensm $as_me 3.3.18, which was
12691 This file was extended by opensm $as_me 3.3.19, which was
1268912692 generated by GNU Autoconf 2.69. Invocation command line was
1269012693
1269112694 CONFIG_FILES = $CONFIG_FILES
1275112754 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
1275212755 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
1275312756 ac_cs_version="\\
12754 opensm config.status 3.3.18
12757 opensm config.status 3.3.19
1275512758 configured by $0, generated by GNU Autoconf 2.69,
1275612759 with options \\"\$ac_cs_config\\"
1275712760
00 dnl Process this file with autoconf to produce a configure script.
11
22 AC_PREREQ(2.57)
3 AC_INIT(opensm, 3.3.18, linux-rdma@vger.kernel.org)
3 AC_INIT(opensm, 3.3.19, linux-rdma@vger.kernel.org)
44 AC_CONFIG_SRCDIR([opensm/osm_opensm.c])
55 AC_CONFIG_AUX_DIR(config)
66 AC_CONFIG_MACRO_DIR(config)
77 AC_CONFIG_HEADERS(include/config.h include/opensm/osm_config.h)
88 AM_INIT_AUTOMAKE
99
10 AC_SUBST(RELEASE, ${RELEASE:-unknown})
10 AC_SUBST(RELEASE, ${RELEASE:-${VERSION}})
1111 AC_SUBST(TARBALL, ${TARBALL:-${PACKAGE}-${VERSION}.tar.gz})
1212
1313 default_rdma_service=openibd
101101 esac],debug=false)
102102 if test x$debug = xtrue ; then
103103 AC_DEFINE(OSM_DEBUG, 1, [ define 1 if OpenSM build is in a debug mode ])
104 AC_DEFINE(_DEBUG_, 1, [ define 1 if OpenSM build is in a debug mode ])
104105 fi
105106 AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
106107
22
33 Version: OpenSM 3.3.x
44 Repo: git://git.openfabrics.org/~halr/opensm.git
5 Date: July 2014
5 Date: December 2014
66
77 1 Overview
88 ----------
99 This document describes the contents of the OpenSM 3.3 release.
1010 OpenSM is an InfiniBand compliant Subnet Manager and Administration,
1111 and runs on top of OpenIB. The OpenSM version for this release
12 is opensm-3.3.18.
12 is opensm-3.3.19.
1313
1414 This document includes the following sections:
1515 1 This Overview section (describing new features and software
8686 * Extended speed support
8787 This provides support for FDR and EDR speeds.
8888
89 * Congestion control support
89 * Congestion control support (experimental)
9090
9191 * Many code improvements, optimizations and cleanups.
9292
511511
512512 4.1 Major Bug Fixes
513513
514 5077198 osm_perfmgr.c: Reset physp_discovered before discovery
515 8d51ae5 osm_state_mgr.c: Avoid continuing discovery when SM port is
516 unresponsive
517 f017063 Better way to handle polling other MASTER SM
518 25e5ee5 complib/cl_dispatcher.c: Check registrations vector size when
519 searching for handlers
520 6b0fb4d osm_lid_mgr.c: Send client reregistration in case of SM LID change
521 5d231f8 osm_pkey_mgr.c: Use calloc instead of malloc in
522 pkey_mgr_process_physical_port
523 985859e Fix turning on first_time_master_sweep flag
524 4629e80 osm_mcast_mgr.c: Invalidate cache due to multicast routing errors
525 b6a1dd4 osm_state_mgr.c: Avoid ucast cache invalidation due to errors during
526 initialization
514527 db69cd8 osm_perfmgr.c: Fix perfmgr sweep_state race
515528 b42f11f osm_vendor_ibumad.c: Better match table eviction strategy
516529 cc0d61b libvendor/osm_vendor_ibumad.c: Check the next CA if an error is
701714
702715 4.2 Other Bug Fixes
703716
717 28fd4ee osm_[subnet congestion_control].c: Cosmetic commentary change
718 391c244 osm_congestion_control.c: Added Mellanox copyright
719 7e08621 osm_congestion_control.c: In cc_rcv_mad, add attribute ID and modifier
720 to log message
721 62075d6 osm_perfmgr.c: Fix endian of MAD status in pc_recv_process
722 cd94c9c osm_congestion_control.c: Fix endian of MAD status in cc_rcv_mad
723 cb5df8b osm_congestion_control.c: Fix endian of node and port GUIDs in some
724 log messages
725 68887fb osm_congestion_control.c: Cosmetic changes
726 1331a46 osm_subnet.[h c]: Fix possibility for open file descriptor issue
727 ce15bb7 osm_perfmgr.c: Output remote port on perfmgr error counter log
728 messages
729 030ac82 osm_sa.c: Improve ERR 4C05 log message
730 fbb63d6 osm_subnet.c: Update MEPI supported devices white list
731 0774229 osm_subnet.c: Cosmetic formatting change
732 5871ef7 osm_sa.c: Check return value from chmod in opensm_dump_to_file
733 61cd0cf osm_switch.c: Fix potential memory leak due to misuse of realloc
734 c78adde osm_req.c: Initialize dest_port_guid in req_determine_mkey
735 dd5e5df osm_mcast_mgr.c: Add MLID to error 0A06 log message
736 63900bc osm_vendor_ibumad.h: Use UMAD_MAX_DEVICES for OSM_UMAD_MAX_CAS
737 a5c0200 iba/ib_types.h: Add support for new MAD SM:PortInfoExtended and for
738 modifying PM:PortExtendedSpeedsCounters
739 3f99535 osm_port_info_rcv.c: In osm_pi_rcv_process, move assert before first
740 log message
741 a0b9444 Change osm_subn_t.log_max_size type to uint32_t
742 b5abaa2 osmeventplugin.c: Add include of osm_config.h as first OpenSM include
743 ecce4e3 osm_console.c: Handle LinkSpeed[Ext]Active 0 for portstatus command
744 f622810 osm_console.c: Fix unknown speed/width port reporting for portstatus
745 command
746 ffdd042 osm_console_io.c: In is_authorized, STRING_UNKNOWN is define
747 a6ba888 Add missing keyword in partition definition in man page and
748 partition.txt doc
749 7444e5e Fix the difference in osm_opensm struct size between OpenSM and
750 plugin(s)
751 caf764f osm_subnet.h: Fixed commentary typo
752 117bc82 osm_prtn.c: Change message verbosity for log message in
753 osm_prtn_add_port
754 3b172ab osm_config.h.in: Fixed the difference in osm_opensm_t struct size
755 between opensm and plugins
756 d13d4bd osm_console.c: Track and report unknown/speed width ports
757 d63e7f6 osm_sa_path_record.c: Cosmetic formatting changes
758 48d159b libvendor/osm_vendor_ibumad.c: Remove GID index 0 check in
759 umad_receiver
760 d7f1d02 libvendor/osm_vendor_ibumad.c: memset osm_mad_addr_t before setting
761 fields
762 96f89d6 osm_console.c: Included unknown speed/width ports in "possible issues"
763 44df235 osm_dump.c: In dump_topology_node, handle link_width_active of 4 for
764 8X
765 a1e58e0 osm_link_mgr.c: Fix bug in mlnx extended port info setting
766 fcb6967 osm_subnet.c: Improve sweep_on_trap documentation in generated conf
767 file
768 47a6b00 osm_sa_multipath_record.c: Better logging for 4514, 4515, and 4505
769 error messages
770 115529b osm_sa_path_record.c: Better logging for 1F02 error message
771 fe079df osm_sa_path_record.c: Better logging for 1F05 and 1F03 error messages
772 43c378f osm_ucast_mgr.c: A couple of cosmetic log message changes in
773 ucast_mgr_route
774 9a5e514 osmtest/osmtest.c: Cosmetic formatting change
775 90db6c3 osm_state_mgr.c: Cosmetic formatting changes
776 e7139af osmtest/osmtest.c: Fix osmtest_get_sm_gid when running osmtest on node
777 other than SM node
778 83ea812 doc/performance-manager-HOWTO.txt: Update perfmgr config options
779 documentation
780 d4d5af3 libvendor/osm_vendor_ibumad_sa.c: Fixed endian in debug log message
781 c1080b9 osmtest/main.c: Cosmetic change to output for consistency
704782 179fbac Add support for additional Mellanox OUI
705783 be3e4f1 osm_subnet.c: Remove duplicate strcmp check in
706784 osm_subn_rescan_conf_files method
3737 Partition Definition:
3838 [PartitionName][=PKey][,ipoib_bc_flags][,defmember=full|limited|both]
3939
40 PartitionName - string, will be used with logging. When omitted
41 empty string will be used.
42 PKey - P_Key value for this partition. Only low 15 bits will
43 be used. When omitted will be autogenerated.
44 ipoib_bc_flags - used to indicate/specify IPoIB capability of this partition.
40 PartitionName - string, will be used with logging. When
41 omitted, empty string will be used.
42 PKey - P_Key value for this partition. Only low 15
43 bits will be used. When omitted will be
44 autogenerated.
45 ipoib_bc_flags - used to indicate/specify IPoIB capability of
46 this partition.
4547
46 defmember=full|limited|both - specifies default membership for port guid
47 list. Default is limited.
48 defmember=full|limited|both - specifies default membership for
49 port guid list. Default is limited.
4850
4951 ipoib_bc_flags:
5052 ipoib_flag|[mgroup_flag]*
5153
52 ipoib_flag - indicates that this partition may be used for IPoIB, as
53 a result the IPoIB broadcast group will be created with
54 the flags given, if any.
54 ipoib_flag:
55 ipoib - indicates that this partition may be used for
56 IPoIB, as a result the IPoIB broadcast group will
57 be created with the mgroup_flag flags given,
58 if any.
5559
5660 Partition Properties:
5761 [<Port list>|<MCast Group>]* | <Port list>
6266 Port Specifier:
6367 <PortGUID>[=[full|limited|both]]
6468
65 PortGUID - GUID of partition member EndPort. Hexadecimal
66 numbers should start from 0x, decimal numbers
67 are accepted too.
68 full or - indicates full and/or limited membership for this port. When
69 limited or omitted (or unrecognized) limited membership is assumed.
70 both Both indicates both full and limited membership for this port.
69 PortGUID - GUID of partition member EndPort.
70 Hexadecimal numbers should start from
71 0x, decimal numbers are accepted too.
72 full or - indicates full and/or limited membership for
73 limited or this port. When omitted (or unrecognized)
74 both limited membership is assumed. Both
75 indicates both full and limited membership
76 for this port.
7177
7278 MCast Group:
7379 mgid=gid[,mgroup_flag]*<newline>
7480
75 - gid specified is verified to be a Multicast address
76 IP groups are verified to match the rate and mtu of the
77 broadcast group. The P_Key bits of the mgid for IP
78 groups are verified to either match the P_Key specified
79 in by "Partition Definition" or if they are 0x0000 the
80 P_Key will be copied into those bits.
81 - gid specified is verified to be a Multicast
82 address. IP groups are verified to match
83 the rate and mtu of the broadcast group.
84 The P_Key bits of the mgid for IP groups are
85 verified to either match the P_Key specified
86 in by "Partition Definition" or if they are
87 0x0000 the P_Key will be copied into those
88 bits.
8189
8290 mgroup_flag:
8391 rate=<val> - specifies rate for this MC group
8795 sl=<val> - specifies SL for this MC group
8896 (default is 0)
8997 scope=<val> - specifies scope for this MC group
90 (default is 2 (link local)). Multiple scope settings
91 are permitted for a partition.
92 NOTE: This overwrites the scope nibble of the specified
93 mgid. Furthermore specifying multiple scope
94 settings will result in multiple MC groups
95 being created.
98 (default is 2 (link local)). Multiple scope
99 settings are permitted for a partition.
100 NOTE: This overwrites the scope nibble of the
101 specified mgid. Furthermore specifying
102 multiple scope settings will result in
103 multiple MC groups being created.
96104 Q_Key=<val> - specifies the Q_Key for this MC group
97 (default: 0x0b1b for IP groups, 0 for other groups)
98 WARNING: changing this for the broadcast group may
99 break IPoIB on client nodes!!!
105 (default: 0x0b1b for IP groups, 0 for other
106 groups)
107 WARNING: changing this for the broadcast
108 group may break IPoIB on client
109 nodes!!!
100110 TClass=<val> - specifies tclass for this MC group
101111 (default is 0)
102112 FlowLabel=<val> - specifies FlowLabel for this MC group
103113 (default is 0)
104
105 newline: '\n'
106
107114
108115 Note that values for rate, mtu, and scope, for both partitions and multicast
109116 groups, should be specified as defined in the IBTA specification (for example,
33 Introduction
44 ============
55
6 OpenSM now includes a performance manager which collects Port counters from
6 OpenSM now includes a performance manager which collects port counters from
77 the subnet and stores them internally in OpenSM.
88
99 Some of the features of the performance manager are:
1010
11 1) Collect port data and error counters per v1.2 spec and store in
11 1) Collect port data and error counters per v1.2.1 spec and store in
1212 64 bit internal counts.
13 2) Automatic reset of counters when they reach approximatly 3/4 full.
14 (While not guarenteeing that counts will not be missed this does
13 2) Automatic reset of counters when they reach approximately 3/4 full.
14 (While not guaranteeing that counts will not be missed, this does
1515 keep counts incrementing as best as possible given the current
16 hardware limitations.)
16 spec limitations.)
1717 3) Basic warnings in the OpenSM log on "critical" errors like symbol
1818 errors.
1919 4) Automatically detects "outside" resets of counters and adjusts to
4444 Step 1: Compile in support for the Performance Manager
4545 ------------------------------------------------------
4646
47 At this time it is really best to enable the console socket option as well.
47 At this time, it is really best to enable the console socket option as well.
4848 OpenSM can be run in an "interactive" mode. But with the console socket
4949 option turned on one can also make a connection to a running OpenSM. By
50 default only "loopback" is enabled with the console with socket being a
50 default, only "loopback" is enabled with the console with socket being a
5151 compile time option. Regardless, please be aware of your network security
5252 configuration for as the commands presented in the console can affect the
5353 operation of your subnet.
6060 the opensm.conf config file. (Default location is
6161 /usr/local/etc/opensm/opensm.conf)
6262
63 # Turn it all on.
63 # Turn it all on
6464 perfmgr TRUE
65
66 # redirection enable
67 perfmgr_redir TRUE
6568
6669 # sweep time in seconds
6770 perfmgr_sweep_time_s 180
6871
72 # Max outstanding queries
73 perfmgr_max_outstanding_queries 500
74
75 # Ignore CAs on sweep
76 perfmgr_ignore_cas FALSE
77
78 # Remove missing nodes from DB
79 perfmgr_rm_nodes TRUE
80
81 # Log error counters to opensm.log
82 perfmgr_log_errors TRUE
83
84 # Query PerfMgt Get(ClassPortInfo) for extended capabilities
85 # Extended capabilities include 64 bit extended counters
86 # and transmit wait support
87 perfmgr_query_cpi TRUE
88
89 # Log xmit_wait errors
90 perfmgr_xmit_wait_log FALSE
91
92 # If logging xmit_wait's; set threshold
93 perfmgr_xmit_wait_threshold 65535
94
6995 # Dump file to dump the events to
7096 event_db_dump_file /var/log/opensm_port_counters.log
7197
72 Also enable the console socket and configure the port for it to listen to if
98 Also, enable the console socket and configure the port for it to listen to if
7399 desired.
74100
75 # console [off|local|loopback]
101 # console [off|local|loopback|socket]
76102 console socket
77103
78104 # Telnet port for console (default 10000)
81107 "local" is only useful if you run OpenSM in the foreground.
82108
83109
84 Step 3: retrieve data which has been collected
110 Step 3: Retrieve data which has been collected
85111 ----------------------------------------------
86112
87113 Step 3a: Using console dump function
145145 `char[]'. */
146146 #undef YYTEXT_POINTER
147147
148 /* define 1 if OpenSM build is in a debug mode */
149 #undef _DEBUG_
150
148151 /* mark config.h inclusion */
149152 #undef _OSM_CONFIG_H_
150153
35273527 #define IB_PM_EXT_WIDTH_NOIETF_SUP (CL_HTON16(((uint16_t)1)<<10))
35283528 #define IB_PM_SAMPLES_ONLY_SUP (CL_HTON16(((uint16_t)1)<<11))
35293529 #define IB_PM_PC_XMIT_WAIT_SUP (CL_HTON16(((uint16_t)1)<<12))
3530 #define IS_PM_INH_LMTD_PKEY_MC_CONSTR_ERR (CL_HTON16(((uint16_t)1)<<13))
3531 #define IS_PM_RSFEC_COUNTERS_SUP (CL_HTON16(((uint16_t)1)<<14))
3532 #define IB_PM_IS_QP1_DROP_SUP (CL_HTON16(((uint16_t)1)<<15))
35303533
35313534 /****f* IBA Base: Types/ib_class_set_resp_time_val
35323535 * NAME
46594662 #define IB_PORT_CAP_HAS_MCAST_FDB_TOP (CL_HTON32(0x40000000))
46604663 #define IB_PORT_CAP_HAS_HIER_INFO (CL_HTON32(0x80000000))
46614664
4665 #define IB_PORT_CAP2_IS_SET_NODE_DESC_SUPPORTED (CL_HTON16(0x0001))
4666 #define IB_PORT_CAP2_IS_PORT_INFO_EXT_SUPPORTED (CL_HTON16(0x0002))
4667
4668 /****s* IBA Base: Types/ib_port_info_ext_t
4669 * NAME
4670 * ib_port_info_ext_t
4671 *
4672 * DESCRIPTION
4673 * IBA defined PortInfoExtended. (14.2.5.19)
4674 *
4675 * SYNOPSIS
4676 */
4677 #include <complib/cl_packon.h>
4678 typedef struct _ib_port_info_ext {
4679 ib_net32_t cap_mask;
4680 ib_net16_t fec_mode_active;
4681 ib_net16_t fdr_fec_mode_sup;
4682 ib_net16_t fdr_fec_mode_enable;
4683 ib_net16_t edr_fec_mode_sup;
4684 ib_net16_t edr_fec_mode_enable;
4685 uint8_t reserved[50];
4686 } PACK_SUFFIX ib_port_info_ext_t;
4687 #include <complib/cl_packoff.h>
4688 /************/
4689
4690 #define IB_PORT_EXT_NO_FEC_MODE_ACTIVE 0
4691 #define IB_PORT_EXT_FIRE_CODE_FEC_MODE_ACTIVE (CL_HTON16(0x0001))
4692 #define IB_PORT_EXT_RS_FEC_MODE_ACTIVE (CL_HTON16(0x0002))
4693 #define IB_PORT_EXT_LOW_LATENCY_RS_FEC_MODE_ACTIVE (CL_HTON16(0x0003))
4694
4695 #define IB_PORT_EXT_CAP_IS_FEC_MODE_SUPPORTED (CL_HTON32(0x00000001))
46624696 /****f* IBA Base: Types/ib_port_info_get_port_state
46634697 * NAME
46644698 * ib_port_info_get_port_state
50915125 #define IB_LINK_WIDTH_ACTIVE_4X 2
50925126 #define IB_LINK_WIDTH_ACTIVE_8X 4
50935127 #define IB_LINK_WIDTH_ACTIVE_12X 8
5128 #define IB_LINK_SPEED_ACTIVE_EXTENDED 0
50945129 #define IB_LINK_SPEED_ACTIVE_2_5 1
50955130 #define IB_LINK_SPEED_ACTIVE_5 2
50965131 #define IB_LINK_SPEED_ACTIVE_10 4
63536388 ib_port_info_t port_info;
63546389 uint8_t pad[4];
63556390 } PACK_SUFFIX ib_portinfo_record_t;
6391 #include <complib/cl_packoff.h>
6392
6393 #include <complib/cl_packon.h>
6394 typedef struct _ib_portinfoext_record {
6395 ib_net16_t lid;
6396 uint8_t port_num;
6397 uint8_t options;
6398 ib_port_info_ext_t port_info_ext;
6399 } PACK_SUFFIX ib_portinfoext_record_t;
63566400 #include <complib/cl_packoff.h>
63576401
63586402 #include <complib/cl_packon.h>
1212
1313 /* define 1 if OpenSM build is in a debug mode */
1414 /* #undef OSM_DEBUG */
15 /* #undef _DEBUG_ */
1516
1617 /* Define as 1 if you want Dual Sided RMPP Support */
1718 #define DUAL_SIDED_RMPP 1
6162 /* Define as 1 if you want Vendor RMPP Support */
6263 #define VENDOR_RMPP_SUPPORT 1
6364
65 /* Define to 1 if you have the `pthread' library (-lpthread). */
66 #define HAVE_LIBPTHREAD 1
67
6468 #endif /* _OSM_CONFIG_H_ */
1111
1212 /* define 1 if OpenSM build is in a debug mode */
1313 #undef OSM_DEBUG
14 #undef _DEBUG_
1415
1516 /* Define as 1 if you want Dual Sided RMPP Support */
1617 #undef DUAL_SIDED_RMPP
6061 /* Define as 1 if you want Vendor RMPP Support */
6162 #undef VENDOR_RMPP_SUPPORT
6263
64 /* Define to 1 if you have the `pthread' library (-lpthread). */
65 #undef HAVE_LIBPTHREAD
66
6367 #endif /* _OSM_CONFIG_H_ */
104104 /* ClassPortInfo fields */
105105 boolean_t cpi_valid;
106106 ib_net16_t cap_mask;
107 /* Remote end connected to */
108 boolean_t remote_valid;
109 uint64_t remote_guid;
110 char *remote_name;
111 uint8_t remote_port;
107112 } monitored_port_t;
108113
109114 /* Node to store information about nodes being monitored */
286286 uint8_t log_flags;
287287 char *dump_files_dir;
288288 char *log_file;
289 unsigned long log_max_size;
289 uint32_t log_max_size;
290290 char *partition_config_file;
291291 boolean_t no_partition_enforcement;
292292 char *part_enforce;
676676 * configuration setting.
677677 *
678678 * cc_sw_cong_setting_credit_starvation_threshold
679 * Congestion Control Switch Congestion Setting Credit Staraction Threshold
679 * Congestion Control Switch Congestion Setting Credit Starvation Threshold
680680 * configuration setting.
681681 *
682682 * cc_sw_cong_setting_credit_starvation_return_delay
763763 boolean_t force_heavy_sweep;
764764 boolean_t force_reroute;
765765 boolean_t in_sweep_hop_0;
766 boolean_t force_first_time_master_sweep;
766767 boolean_t first_time_master_sweep;
767768 boolean_t coming_out_of_standby;
768769 boolean_t sweeping_enabled;
870871 * This is relevant for the case of SM on switch, since in the
871872 * switch info we need to signal somehow not to continue
872873 * the sweeping.
874 *
875 * force_first_time_master_sweep
876 * This flag is used to avoid race condition when Master SM being
877 * in the middle of very long configuration stage of the heavy sweep,
878 * receives HANDOVER from another MASTER SM. When the current heavy sweep
879 * is finished, new heavy sweep will be started immediately.
880 * At the beginning of the sweep, opensm will set first_time_master_sweep,
881 * force_heavy_sweep and coming_out_of_standby flags in order to allow full
882 * reconfiguration of the fabric. This is required as another MASTER SM could
883 * change configuration of the fabric before sending HANDOVER to MASTER SM.
873884 *
874885 * first_time_master_sweep
875886 * This flag is used for the PortInfo setting. On the first
15561567 *
15571568 * SYNOPSIS
15581569 */
1559 int osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opt);
1570 void osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opt);
15601571 /*
15611572 * PARAMETERS
15621573 *
15671578 * [in] Pointer to the subnet options structure.
15681579 *
15691580 * RETURN VALUES
1570 * 0 on success, negative value otherwise
1581 * This method does not return a value
15711582 *********/
15721583
15731584 /****f* OpenSM: Subnet/osm_subn_write_conf_file
4444 *
4545 * SYNOPSIS
4646 */
47 #define OSM_VERSION "OpenSM 3.3.18"
47 #define OSM_VERSION "OpenSM 3.3.19"
4848 /********/
4949
5050 #endif /* _OSM_VERSION_H_ */
6363 *
6464 *********/
6565 #define OSM_DEFAULT_RETRY_COUNT 3
66 #define OSM_UMAD_MAX_CAS 32
66 #define OSM_UMAD_MAX_CAS UMAD_MAX_DEVICES
6767 #define OSM_UMAD_MAX_PORTS_PER_CA 2
6868 #define OSM_UMAD_MAX_AGENTS 32
6969
55 # API_REV - advance on any added API
66 # RUNNING_REV - advance any change to the vendor files
77 # AGE - number of backward versions the API still supports
8 LIBVERSION=4:0:0
8 LIBVERSION=4:1:0
276276 {
277277 ib_mad_addr_t *ib_mad_addr = umad_get_mad_addr(umad);
278278
279 memset(osm_mad_addr, 0, sizeof(osm_mad_addr_t));
279280 osm_mad_addr->dest_lid = ib_mad_addr->lid;
280281 osm_mad_addr->path_bits = ib_mad_addr->path_bits;
281 osm_mad_addr->static_rate = 0;
282282
283283 if (is_smi) {
284284 osm_mad_addr->addr_type.smi.source_lid = osm_mad_addr->dest_lid;
299299 ib_mad_addr->flow_label);
300300 memcpy(&osm_mad_addr->addr_type.gsi.grh_info.dest_gid,
301301 &ib_mad_addr->gid, 16);
302 } else {
303 osm_mad_addr->addr_type.gsi.global_route = 0;
304 memset(&osm_mad_addr->addr_type.gsi.grh_info, 0,
305 sizeof osm_mad_addr->addr_type.gsi.grh_info);
306302 }
307303 }
308304
330326 osm_mad_addr_t osm_addr;
331327 osm_madw_t *p_madw, *p_req_madw;
332328 ib_mad_t *p_mad, *p_req_mad;
333 ib_mad_addr_t *p_mad_addr;
334329 void *umad = 0;
335330 int mad_agent, length;
336331
383378 }
384379
385380 p_mad = (ib_mad_t *) umad_get_mad(umad);
386 p_mad_addr = umad_get_mad_addr(umad);
387 /* Only support GID index 0 currently */
388 if (p_mad_addr->grh_present && p_mad_addr->gid_index) {
389 OSM_LOG(p_ur->p_log, OSM_LOG_ERROR, "ERR 5409: "
390 "GRH received on GID index %d for mgmt class 0x%x\n",
391 p_mad_addr->gid_index, p_mad->mgmt_class);
392 continue;
393 }
394381
395382 ib_mad_addr_conv(umad, &osm_addr,
396383 p_mad->mgmt_class == IB_MCLASS_SUBN_LID ||
418418 */
419419 if (p_query_req->with_grh) {
420420 OSM_LOG(p_log, OSM_LOG_DEBUG, "sending sa query with GRH "
421 "GID : 0x%016" PRIx64 " 0x%016" PRIx64 "\n",
422 p_query_req->gid.unicast.prefix,
423 p_query_req->gid.unicast.interface_id);
421 "GID 0x%016" PRIx64 " 0x%016" PRIx64 "\n",
422 cl_ntoh64(p_query_req->gid.unicast.prefix),
423 cl_ntoh64(p_query_req->gid.unicast.interface_id));
424424 p_madw->mad_addr.addr_type.gsi.global_route = 1;
425425 memset(&p_madw->mad_addr.addr_type.gsi.grh_info, 0,
426426 sizeof(p_madw->mad_addr.addr_type.gsi.grh_info));
0 .TH OPENSM 8 "July 4, 2014" "OpenIB" "OpenIB Management"
0 .TH OPENSM 8 "Sept 15, 2014" "OpenIB" "OpenIB Management"
11
22 .SH NAME
33 opensm \- InfiniBand subnet manager and administration (SM/SA)
573573 Partition Definition:
574574 [PartitionName][=PKey][,ipoib_bc_flags][,defmember=full|limited]
575575
576 PartitionName - string, will be used with logging. When omitted
577 empty string will be used.
578 PKey - P_Key value for this partition. Only low 15 bits will
579 be used. When omitted will be autogenerated.
580 ipoib_bc_flags - used to indicate/specify IPoIB capability of this partition.
581
582 defmember=full|limited|both - specifies default membership for port guid
583 list. Default is limited.
576 PartitionName - string, will be used with logging. When
577 omitted, empty string will be used.
578 PKey - P_Key value for this partition. Only low 15
579 bits will be used. When omitted will be
580 autogenerated.
581 ipoib_bc_flags - used to indicate/specify IPoIB capability of
582 this partition.
583
584 defmember=full|limited|both - specifies default membership for
585 port guid list. Default is limited.
584586
585587 ipoib_bc_flags:
586588 ipoib_flag|[mgroup_flag]*
587589
588 ipoib_flag - indicates that this partition may be used for IPoIB, as
589 a result the IPoIB broadcast group will be created with
590 the flags given, if any.
590 ipoib_flag:
591 ipoib - indicates that this partition may be used for
592 IPoIB, as a result the IPoIB broadcast group will
593 be created with the mgroup_flag flags given,
594 if any.
591595
592596 Partition Properties:
593597 [<Port list>|<MCast Group>]* | <Port list>
598602 Port Specifier:
599603 <PortGUID>[=[full|limited|both]]
600604
601 PortGUID - GUID of partition member EndPort. Hexadecimal
602 numbers should start from 0x, decimal numbers
603 are accepted too.
604
605 full, limited, - indicates full and/or limited membership for this
606 both port. When omitted (or unrecognized) limited
607 membership is assumed. Both indicates both full
608 and limited membership for this port.
605 PortGUID - GUID of partition member EndPort.
606 Hexadecimal numbers should start from
607 0x, decimal numbers are accepted too.
608 full, limited, - indicates full and/or limited membership for
609 both this port. When omitted (or unrecognized)
610 limited membership is assumed. Both
611 indicates both full and limited membership
612 for this port.
609613
610614 MCast Group:
611615 mgid=gid[,mgroup_flag]*<newline>
612616
613 - gid specified is verified to be a Multicast address
614 IP groups are verified to match the rate and mtu of the
615 broadcast group. The P_Key bits of the mgid for IP
616 groups are verified to either match the P_Key specified
617 in by "Partition Definition" or if they are 0x0000 the
618 P_Key will be copied into those bits.
617 - gid specified is verified to be a Multicast
618 address. IP groups are verified to match
619 the rate and mtu of the broadcast group.
620 The P_Key bits of the mgid for IP groups are
621 verified to either match the P_Key specified
622 in by "Partition Definition" or if they are
623 0x0000 the P_Key will be copied into those
624 bits.
619625
620626 mgroup_flag:
621627 rate=<val> - specifies rate for this MC group
625631 sl=<val> - specifies SL for this MC group
626632 (default is 0)
627633 scope=<val> - specifies scope for this MC group
628 (default is 2 (link local)). Multiple scope settings
629 are permitted for a partition.
630 NOTE: This overwrites the scope nibble of the specified
631 mgid. Furthermore specifying multiple scope
632 settings will result in multiple MC groups
633 being created.
634 Q_Key=<val> - specifies the Q_Key for this MC group
635 (default: 0x0b1b for IP groups, 0 for other groups)
634 (default is 2 (link local)). Multiple scope
635 settings are permitted for a partition.
636 NOTE: This overwrites the scope nibble of the
637 specified mgid. Furthermore specifying
638 multiple scope settings will result in
639 multiple MC groups being created.
640 Q_Key=<val> - specifies the Q_Key for this MC group
641 (default: 0x0b1b for IP groups, 0 for other
642 groups)
643 WARNING: changing this for the broadcast
644 group may break IPoIB on client
645 nodes!!
636646 TClass=<val> - specifies tclass for this MC group
637647 (default is 0)
638648 FlowLabel=<val> - specifies FlowLabel for this MC group
639649 (default is 0)
640
641 newline: '\n'
642
643650
644651 Note that values for rate, mtu, and scope, for both partitions and multicast
645652 groups, should be specified as defined in the IBTA specification (for example,
0 .TH OPENSM 8 "July 4, 2014" "OpenIB" "OpenIB Management"
0 .TH OPENSM 8 "Sept 15, 2014" "OpenIB" "OpenIB Management"
11
22 .SH NAME
33 opensm \- InfiniBand subnet manager and administration (SM/SA)
573573 Partition Definition:
574574 [PartitionName][=PKey][,ipoib_bc_flags][,defmember=full|limited]
575575
576 PartitionName - string, will be used with logging. When omitted
577 empty string will be used.
578 PKey - P_Key value for this partition. Only low 15 bits will
579 be used. When omitted will be autogenerated.
580 ipoib_bc_flags - used to indicate/specify IPoIB capability of this partition.
581
582 defmember=full|limited|both - specifies default membership for port guid
583 list. Default is limited.
576 PartitionName - string, will be used with logging. When
577 omitted, empty string will be used.
578 PKey - P_Key value for this partition. Only low 15
579 bits will be used. When omitted will be
580 autogenerated.
581 ipoib_bc_flags - used to indicate/specify IPoIB capability of
582 this partition.
583
584 defmember=full|limited|both - specifies default membership for
585 port guid list. Default is limited.
584586
585587 ipoib_bc_flags:
586588 ipoib_flag|[mgroup_flag]*
587589
588 ipoib_flag - indicates that this partition may be used for IPoIB, as
589 a result the IPoIB broadcast group will be created with
590 the flags given, if any.
590 ipoib_flag:
591 ipoib - indicates that this partition may be used for
592 IPoIB, as a result the IPoIB broadcast group will
593 be created with the mgroup_flag flags given,
594 if any.
591595
592596 Partition Properties:
593597 [<Port list>|<MCast Group>]* | <Port list>
598602 Port Specifier:
599603 <PortGUID>[=[full|limited|both]]
600604
601 PortGUID - GUID of partition member EndPort. Hexadecimal
602 numbers should start from 0x, decimal numbers
603 are accepted too.
604
605 full, limited, - indicates full and/or limited membership for this
606 both port. When omitted (or unrecognized) limited
607 membership is assumed. Both indicates both full
608 and limited membership for this port.
605 PortGUID - GUID of partition member EndPort.
606 Hexadecimal numbers should start from
607 0x, decimal numbers are accepted too.
608 full, limited, - indicates full and/or limited membership for
609 both this port. When omitted (or unrecognized)
610 limited membership is assumed. Both
611 indicates both full and limited membership
612 for this port.
609613
610614 MCast Group:
611615 mgid=gid[,mgroup_flag]*<newline>
612616
613 - gid specified is verified to be a Multicast address
614 IP groups are verified to match the rate and mtu of the
615 broadcast group. The P_Key bits of the mgid for IP
616 groups are verified to either match the P_Key specified
617 in by "Partition Definition" or if they are 0x0000 the
618 P_Key will be copied into those bits.
617 - gid specified is verified to be a Multicast
618 address. IP groups are verified to match
619 the rate and mtu of the broadcast group.
620 The P_Key bits of the mgid for IP groups are
621 verified to either match the P_Key specified
622 in by "Partition Definition" or if they are
623 0x0000 the P_Key will be copied into those
624 bits.
619625
620626 mgroup_flag:
621627 rate=<val> - specifies rate for this MC group
625631 sl=<val> - specifies SL for this MC group
626632 (default is 0)
627633 scope=<val> - specifies scope for this MC group
628 (default is 2 (link local)). Multiple scope settings
629 are permitted for a partition.
630 NOTE: This overwrites the scope nibble of the specified
631 mgid. Furthermore specifying multiple scope
632 settings will result in multiple MC groups
633 being created.
634 Q_Key=<val> - specifies the Q_Key for this MC group
635 (default: 0x0b1b for IP groups, 0 for other groups)
634 (default is 2 (link local)). Multiple scope
635 settings are permitted for a partition.
636 NOTE: This overwrites the scope nibble of the
637 specified mgid. Furthermore specifying
638 multiple scope settings will result in
639 multiple MC groups being created.
640 Q_Key=<val> - specifies the Q_Key for this MC group
641 (default: 0x0b1b for IP groups, 0 for other
642 groups)
643 WARNING: changing this for the broadcast
644 group may break IPoIB on client
645 nodes!!
636646 TClass=<val> - specifies tclass for this MC group
637647 (default is 0)
638648 FlowLabel=<val> - specifies FlowLabel for this MC group
639649 (default is 0)
640
641 newline: '\n'
642
643650
644651 Note that values for rate, mtu, and scope, for both partitions and multicast
645652 groups, should be specified as defined in the IBTA specification (for example,
55 # API_REV - advance on any added API
66 # RUNNING_REV - advance any change to the vendor files
77 # AGE - number of backward versions the API still supports
8 LIBVERSION=7:1:2
8 LIBVERSION=7:2:2
907907
908908 case 'L':
909909 opt.log_max_size = strtoul(optarg, NULL, 0);
910 printf(" Log file max size is %lu MBytes\n",
910 printf(" Log file max size is %u MBytes\n",
911911 opt.log_max_size);
912912 break;
913913
11 * Copyright (c) 2006-2009 Voltaire, Inc. All rights reserved.
22 * Copyright (c) 2009 HNR Consulting. All rights reserved.
33 * Copyright (c) 2012 Lawrence Livermore National Lab. All rights reserved.
4 * Copyright (c) 2014 Mellanox Technologies LTD. All rights reserved.
45 *
56 * This software is available to you under a choice of one of two
67 * licenses. You may choose to be licensed under the terms of the GNU
172173
173174 /* Congestion Control Table */
174175
175 /* if no entries, we will always send atleast 1 mad to set ccti_limit = 0 */
176 /* if no entries, we will always send at least 1 mad to set ccti_limit = 0 */
176177 if (!p_opt->cc_cct.entries_len)
177178 p_cc->cc_tbl_mads = 1;
178179 else {
439440 cl_event_signal(&p_cc->sig_mads_on_wire_continue);
440441 }
441442
442
443443 static void cc_rcv_mad(void *context, void *data)
444444 {
445445 osm_congestion_control_t *p_cc = context;
448448 ib_cc_mad_t *p_cc_mad;
449449 osm_madw_context_t *p_mad_context = &p_madw->context;
450450 ib_mad_t *p_mad = osm_madw_get_mad_ptr(p_madw);
451 uint64_t node_guid = p_mad_context->cc_context.node_guid;
452 uint64_t port_guid = p_mad_context->cc_context.port_guid;
451 ib_net64_t node_guid = p_mad_context->cc_context.node_guid;
452 ib_net64_t port_guid = p_mad_context->cc_context.port_guid;
453453 uint8_t port = p_mad_context->cc_context.port;
454454 osm_port_t *p_port;
455455
456456 OSM_LOG_ENTER(p_cc->log);
457457
458458 OSM_LOG(p_cc->log, OSM_LOG_VERBOSE,
459 "Processing received MAD status 0x%x context 0x%"
460 PRIx64 "port %u\n", p_mad->status, node_guid, port);
459 "Processing received MAD status 0x%x for "
460 "attr ID %u mod 0x%x node 0x%" PRIx64 " port %u\n",
461 cl_ntoh16(p_mad->status), cl_ntoh16(p_mad->attr_id),
462 cl_ntoh32(p_mad_context->cc_context.attr_mod),
463 cl_ntoh64(node_guid), port);
461464
462465 p_cc_mad = osm_madw_get_cc_mad_ptr(p_madw);
463466
466469 p_port = osm_get_port_by_guid(p_cc->subn, port_guid);
467470 if (!p_port) {
468471 OSM_LOG(p_cc->log, OSM_LOG_ERROR, "ERR C109: "
469 "Port guid not in table 0x%" PRIx64 "\n",
470 port_guid);
472 "Port GUID 0x%" PRIx64 " not in table\n",
473 cl_ntoh64(port_guid));
471474 cl_plock_release(&p_osm->lock);
472475 goto Exit;
473476 }
506509 }
507510 else
508511 OSM_LOG(p_cc->log, OSM_LOG_ERROR, "ERR C10A: "
509 "Unexpected MAD attribute received: %u\n",
510 p_cc_mad->header.attr_id);
512 "Unexpected MAD attribute ID %u received\n",
513 cl_ntoh16(p_cc_mad->header.attr_id));
511514
512515 cl_plock_release(&p_osm->lock);
513516
539542 } else
540543 OSM_LOG(p_cc->log, OSM_LOG_ERROR, "ERR C104: "
541544 "send failed to node 0x%" PRIx64 "port %u\n",
542 mad_context.cc_context.node_guid,
545 cl_ntoh64(mad_context.cc_context.node_guid),
543546 mad_context.cc_context.port);
544547 }
545548
673676 p_port = osm_get_port_by_guid(p_cc->subn, port_guid);
674677 if (!p_port) {
675678 OSM_LOG(p_cc->log, OSM_LOG_ERROR, "ERR C10B: "
676 "Port guid not in table 0x%" PRIx64 "\n",
677 port_guid);
679 "Port GUID 0x%" PRIx64 " not in table\n",
680 cl_ntoh64(port_guid));
678681 cl_plock_release(&p_osm->lock);
679682 goto Exit;
680683 }
693696 ib_get_err_str(p_madw->status),
694697 p_madw->p_mad->attr_id,
695698 cl_ntoh16(p_madw->mad_addr.dest_lid),
696 node_guid,
699 cl_ntoh64(node_guid),
697700 port,
698701 cl_ntoh64(p_madw->p_mad->trans_id));
699702
717717 uint64_t ports_8X;
718718 uint64_t ports_12X;
719719 uint64_t ports_unknown_width;
720 port_report_t *unknown_width_ports;
720721 uint64_t ports_unenabled_width;
721722 port_report_t *unenabled_width_ports;
722723 uint64_t ports_reduced_width;
728729 uint64_t ports_fdr;
729730 uint64_t ports_edr;
730731 uint64_t ports_unknown_speed;
732 port_report_t *unknown_speed_ports;
731733 uint64_t ports_unenabled_speed;
732734 port_report_t *unenabled_speed_ports;
733735 uint64_t ports_reduced_speed;
852854 }
853855 }
854856 break;
857 case IB_LINK_SPEED_ACTIVE_EXTENDED:
858 break;
855859 default:
860 __tag_port_report(&(fs->unknown_speed_ports),
861 cl_ntoh64(node->node_info.node_guid),
862 port, node->print_desc);
856863 fs->ports_unknown_speed++;
857864 break;
858865 }
880887 case IB_LINK_SPEED_EXT_ACTIVE_25:
881888 fs->ports_edr++;
882889 break;
890 case IB_LINK_SPEED_EXT_ACTIVE_NONE:
891 break;
883892 default:
893 __tag_port_report(&(fs->unknown_speed_ports),
894 cl_ntoh64(node->node_info.node_guid),
895 port, node->print_desc);
884896 fs->ports_unknown_speed++;
885897 break;
886898 }
899911 fs->ports_12X++;
900912 break;
901913 default:
914 __tag_port_report(&(fs->unknown_width_ports),
915 cl_ntoh64(node->node_info.node_guid),
916 port, node->print_desc);
902917 fs->ports_unknown_width++;
903918 break;
904919 }
974989 fprintf(out, " %" PRIu64 " at 25.78125 Gbps\n", fs.ports_edr);
975990
976991 if (fs.ports_disabled + fs.ports_reduced_speed + fs.ports_reduced_width
977 + fs.ports_unenabled_width + fs.ports_unenabled_speed > 0) {
992 + fs.ports_unenabled_width + fs.ports_unenabled_speed
993 + fs.ports_unknown_width + fs.ports_unknown_speed > 0) {
978994 fprintf(out, "\nPossible issues:\n");
979995 }
980996 if (fs.ports_disabled) {
9911007 fs.ports_reduced_speed);
9921008 __print_port_report(out, fs.reduced_speed_ports);
9931009 }
1010 if (fs.ports_unknown_speed) {
1011 fprintf(out, " %" PRIu64 " with unknown speed\n",
1012 fs.ports_unknown_speed);
1013 __print_port_report(out, fs.unknown_speed_ports);
1014 }
9941015 if (fs.ports_unenabled_width) {
9951016 fprintf(out, " %" PRIu64 " with unenabled width\n",
9961017 fs.ports_unenabled_width);
10001021 fprintf(out, " %" PRIu64 " with reduced width\n",
10011022 fs.ports_reduced_width);
10021023 __print_port_report(out, fs.reduced_width_ports);
1024 }
1025 if (fs.ports_unknown_width) {
1026 fprintf(out, " %" PRIu64 " with unknown width\n",
1027 fs.ports_unknown_width);
1028 __print_port_report(out, fs.unknown_width_ports);
10031029 }
10041030 fprintf(out, "\n");
10051031 }
166166 /* allowed to use the console? */
167167 p_oct->authorized = !is_remote(p_oct->client_type) ||
168168 hosts_ctl((char *)OSM_DAEMON_NAME, p_oct->client_hn, p_oct->client_ip,
169 (char *)"STRING_UNKNOWN");
169 (char *)STRING_UNKNOWN);
170170 return p_oct->authorized;
171171 }
172172 #endif
256256 OSM_LOG(sm->p_log, OSM_LOG_VERBOSE,
257257 "Cleaned SM for port guid 0x%016" PRIx64 "\n",
258258 cl_ntoh64(port_guid));
259 /* clean up the polling_sm_guid */
260 if (sm->polling_sm_guid == p_sm->smi.guid)
261 sm->polling_sm_guid = 0;
262259 free(p_sm);
263260 }
264261
472472 fprintf(file, "PHY=%s LOG=%s SPD=%s\n",
473473 p_physp->port_info.link_width_active == 1 ? "1x" :
474474 p_physp->port_info.link_width_active == 2 ? "4x" :
475 p_physp->port_info.link_width_active == 4 ? "8x" :
475476 p_physp->port_info.link_width_active == 8 ? "12x" :
476477 "??",
477478 port_state == IB_LINK_ACTIVE ? "ACT" :
805805 uint8_t op_vls;
806806 uint8_t port_num;
807807 boolean_t send_set = FALSE;
808 boolean_t send_client_rereg = FALSE;
808809 boolean_t update_mkey = FALSE;
809810 int ret = 0;
810811
891892 p_mgr->dirty = TRUE;
892893 }
893894
894 /* we are updating the ports with our local sm_base_lid */
895 /*
896 We are updating the ports with our local sm_base_lid
897 if for some reason currently received SM LID is different from our SM LID,
898 need to send client reregister to this port
899 */
895900 p_pi->master_sm_base_lid = p_mgr->p_subn->sm_base_lid;
896901 if (memcmp(&p_pi->master_sm_base_lid, &p_old_pi->master_sm_base_lid,
897 sizeof(p_pi->master_sm_base_lid)))
902 sizeof(p_pi->master_sm_base_lid))) {
903 send_client_rereg = TRUE;
898904 send_set = TRUE;
905 }
899906
900907 p_pi->m_key_lease_period = p_mgr->p_subn->opt.m_key_lease_period;
901908 if (memcmp(&p_pi->m_key_lease_period, &p_old_pi->m_key_lease_period,
10281035 context.pi_context.active_transition = FALSE;
10291036
10301037 /*
1031 We need to set the cli_rereg bit when we are in first_time_master_sweep
1032 for ports supporting the ClientReregistration Vol1 (v1.2) p811 14.4.11
1033 Also, if this port was just now discovered, then we should also set
1034 the cli_rereg bit. We know that the port was just discovered if its
1035 is_new field is set.
1036 */
1037 if ((p_mgr->p_subn->first_time_master_sweep == TRUE || p_port->is_new)
1038 For ports supporting the ClientReregistration Vol1 (v1.2) p811 14.4.11:
1039 need to set the cli_rereg bit when current SM LID at the Host
1040 is different from our SM LID,
1041 also if we are in first_time_master_sweep,
1042 also if this port was just now discovered, then we should also set
1043 the cli_rereg bit (we know that the port was just discovered
1044 if its is_new field is set).
1045 */
1046 if ((send_client_rereg ||
1047 p_mgr->p_subn->first_time_master_sweep == TRUE || p_port->is_new)
10381048 && !p_mgr->p_subn->opt.no_clients_rereg
10391049 && (p_old_pi->capability_mask & IB_PORT_CAP_HAS_CLIENT_REREG)) {
10401050 OSM_LOG(p_mgr->p_log, OSM_LOG_DEBUG,
466466 send_set = TRUE;
467467
468468 if (!send_set)
469 goto Exit;
469 goto SEND_EPI;
470470
471471 attr_mod = cl_hton32(port_num);
472472 if (issue_ext)
486486 cl_ntoh64(p_physp->port_guid),
487487 cl_ntoh64(p_pi->m_key));
488488
489 SEND_EPI:
489490 if (send_set2) {
490491 status = osm_req_set(sm, osm_physp_get_dr_path_ptr(p_physp),
491492 payload2, sizeof(payload2),
461461 OSM_LOG_EXIT(sm->p_log);
462462 }
463463
464 static void mcast_mgr_purge_list(osm_sm_t * sm, cl_qlist_t * list)
464 static void mcast_mgr_purge_list(osm_sm_t * sm, uint16_t mlid, cl_qlist_t * list)
465465 {
466466 if (OSM_LOG_IS_ACTIVE_V2(sm->p_log, OSM_LOG_ERROR)) {
467467 osm_mcast_work_obj_t *wobj;
470470 i = cl_qlist_next(i)) {
471471 wobj = cl_item_obj(i, wobj, list_item);
472472 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 0A06: "
473 "Unable to route for port 0x%" PRIx64 "\n",
474 cl_ntoh64(osm_port_get_guid(wobj->p_port)));
473 "Unable to route MLID 0x%X for port 0x%" PRIx64 "\n",
474 mlid, cl_ntoh64(osm_port_get_guid(wobj->p_port)));
475475 }
476476 }
477477 osm_mcast_drop_port_list(list);
522522 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 0A21: "
523523 "Maximal hops number is reached for MLID 0x%x."
524524 " Break processing\n", mlid_ho);
525 mcast_mgr_purge_list(sm, p_list);
525 mcast_mgr_purge_list(sm, mlid_ho, p_list);
526526 goto Exit;
527527 }
528528
542542 /*
543543 Deallocate all the work objects on this branch of the tree.
544544 */
545 mcast_mgr_purge_list(sm, p_list);
545 mcast_mgr_purge_list(sm, mlid_ho, p_list);
546546 goto Exit;
547547 }
548548
558558 /*
559559 Deallocate all the work objects on this branch of the tree.
560560 */
561 mcast_mgr_purge_list(sm, p_list);
561 mcast_mgr_purge_list(sm, mlid_ho, p_list);
562562 goto Exit;
563563 }
564564
575575 if (list_array == NULL) {
576576 OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 0A16: "
577577 "Unable to allocate list array\n");
578 mcast_mgr_purge_list(sm, p_list);
578 mcast_mgr_purge_list(sm, mlid_ho, p_list);
579579 osm_mtree_destroy(p_mtn);
580580 p_mtn = NULL;
581581 goto Exit;
632632 OSM_LOG(sm->p_log, OSM_LOG_DEBUG,
633633 "Routing %zu destinations via switch port %u\n",
634634 count, i);
635
636 if (i == 0) {
637 /* This means we are adding the switch to the MC group.
638 We do not need to continue looking at the remote
639 port, just needed to add the port to the table */
640 CL_ASSERT(count == 1);
641
642 osm_mcast_tbl_set(p_tbl, mlid_ho, i);
643
644 p_wobj = (osm_mcast_work_obj_t *)
645 cl_qlist_remove_head(p_port_list);
646 mcast_work_obj_delete(p_wobj);
647 continue;
648 }
649
650 p_node = p_sw->p_node;
651 p_remote_node = osm_node_get_remote_node(p_node, i, NULL);
652 if (!p_remote_node) {
653 /*
654 * If we reached here, it means the minhop table has
655 * invalid entries that leads to disconnected ports.
656 *
657 * A possible reason for the code to reach here is
658 * that ucast cache is enabled, and a leaf switch that
659 * is used as a non-leaf switch in a multicast has been
660 * removed from the fabric.
661 *
662 * When it happens, we should invalidate the cache
663 * and force rerouting of the fabric.
664 */
665
666 OSM_LOG(sm->p_log, OSM_LOG_ERROR,
667 "ERR 0A1E: Tried to route MLID 0x%X through "
668 "disconnected switch 0x%" PRIx64 " port %d\n",
669 mlid_ho, cl_ntoh64(node_guid), i);
670
671 /* Free memory */
672 mcast_mgr_purge_list(sm, mlid_ho, p_port_list);
673
674 /* Invalidate ucast cache */
675 if (sm->ucast_mgr.p_subn->opt.use_ucast_cache &&
676 sm->ucast_mgr.cache_valid) {
677 OSM_LOG(sm->p_log, OSM_LOG_INFO,
678 "Unicast Cache will be invalidated due "
679 "to multicast routing errors\n");
680 osm_ucast_cache_invalidate(&sm->ucast_mgr);
681 sm->p_subn->force_heavy_sweep = TRUE;
682 }
683
684 continue;
685 }
635686
636687 /*
637688 This port routes frames for this mcast group. Therefore,
639690 table for this switch.
640691 */
641692 osm_mcast_tbl_set(p_tbl, mlid_ho, i);
642 if (i == 0) {
643 /* This means we are adding the switch to the MC group.
644 We do not need to continue looking at the remote
645 port, just needed to add the port to the table */
646 CL_ASSERT(count == 1);
647
648 p_wobj = (osm_mcast_work_obj_t *)
649 cl_qlist_remove_head(p_port_list);
650 mcast_work_obj_delete(p_wobj);
651 continue;
652 }
653
654 p_node = p_sw->p_node;
655 p_remote_node = osm_node_get_remote_node(p_node, i, NULL);
656 if (!p_remote_node)
657 continue;
658693
659694 if (osm_node_get_type(p_remote_node) == IB_NODE_TYPE_SWITCH) {
660695 /*
143143 {
144144 while (pm->remove_list) {
145145 monitored_node_t *next = pm->remove_list->next;
146 int port;
146147
147148 cl_qmap_remove_item(&pm->monitored_map,
148149 (cl_map_item_t *) (pm->remove_list));
154155
155156 if (pm->remove_list->name)
156157 free(pm->remove_list->name);
158
159 for (port = pm->remove_list->esp0 ? 0 : 1;
160 port < pm->remove_list->num_ports;
161 port++) {
162 if (pm->remove_list->port[port].remote_name)
163 free(pm->remove_list->port[port].remote_name);
164 }
165
157166 free(pm->remove_list);
158167 pm->remove_list = next;
159168 }
553562 ib_switch_info_is_enhanced_port0(&node->sw->
554563 switch_info));
555564 for (port = mon_node->esp0 ? 0 : 1; port < num_ports; port++) {
556 mon_node->port[port].orig_lid = 0;
557 mon_node->port[port].valid = FALSE;
558 if (osm_physp_is_valid(&node->physp_table[port])) {
559 mon_node->port[port].orig_lid = get_base_lid(node, port);
560 mon_node->port[port].valid = TRUE;
565 monitored_port_t *mon_port = &mon_node->port[port];
566 osm_physp_t *p_physp = &node->physp_table[port];
567 osm_physp_t *p_remote_physp = p_physp->p_remote_physp;
568
569 mon_port->orig_lid = 0;
570 mon_port->valid = FALSE;
571 if (osm_physp_is_valid(p_physp)) {
572 mon_port->orig_lid = get_base_lid(node, port);
573 mon_port->valid = TRUE;
574 }
575 mon_port->remote_valid = FALSE;
576 mon_port->remote_name = NULL;
577 if (p_remote_physp && osm_physp_is_valid(p_remote_physp)) {
578 osm_node_t *p_remote_node = p_remote_physp->p_node;
579 mon_port->remote_valid = TRUE;
580 mon_port->remote_guid = p_remote_node->node_info.node_guid;
581 mon_port->remote_name = strdup(p_remote_node->print_desc);
582 mon_port->remote_port = p_remote_physp->port_num;
561583 }
562584 }
563585
962984 {
963985 osm_node_t *p_node = (osm_node_t *) p_map_item;
964986 p_node->discovery_count = 0;
987
988 memset(p_node->physp_discovered, 0,
989 sizeof(uint8_t) * p_node->physp_tbl_size);
965990 }
966991
967992 static void reset_port_count(cl_map_item_t * p_map_item, void *cxt)
14281453 }
14291454
14301455 #define LOG_ERR_CNT(errname, errnum, counter_name) \
1431 if (reading->counter_name > prev_read.counter_name) \
1432 OSM_LOG(pm->log, OSM_LOG_ERROR, "ERR %s: " \
1433 "%s : %" PRIu64 " : node " \
1434 "\"%s\" (NodeGUID: 0x%" PRIx64 ") : port %u\n", \
1435 errnum, errname, \
1436 reading->counter_name - prev_read.counter_name, \
1437 mon_node->name, mon_node->guid, port);
1456 if (reading->counter_name > prev_read.counter_name) { \
1457 if (mon_node->port[port].remote_valid == TRUE) \
1458 OSM_LOG(pm->log, OSM_LOG_ERROR, "ERR %s: " \
1459 "%s : %" PRIu64 " : node " \
1460 "\"%s\" (NodeGUID: 0x%" PRIx64 ") : port %u " \
1461 "connected to \"%s\" (NodeGUID: 0x%" PRIx64 ") : port %u\n", \
1462 errnum, errname, \
1463 reading->counter_name - prev_read.counter_name, \
1464 mon_node->name, mon_node->guid, port, \
1465 mon_node->port[port].remote_name, \
1466 mon_node->port[port].remote_guid, \
1467 mon_node->port[port].remote_port); \
1468 else \
1469 OSM_LOG(pm->log, OSM_LOG_ERROR, "ERR %s: " \
1470 "%s : %" PRIu64 " : node " \
1471 "\"%s\" (NodeGUID: 0x%" PRIx64 ") : port %u\n", \
1472 errnum, errname, \
1473 reading->counter_name - prev_read.counter_name, \
1474 mon_node->name, mon_node->guid, port); \
1475 }
14381476
14391477 LOG_ERR_CNT("SymbolErrorCounter", "5431", symbol_err_cnt);
14401478 LOG_ERR_CNT("LinkErrorRecoveryCounter", "5432", link_err_recover);
17411779
17421780 OSM_LOG(pm->log, OSM_LOG_VERBOSE,
17431781 "Processing received MAD status 0x%x context 0x%"
1744 PRIx64 " port %u\n", p_mad->status, node_guid, port);
1782 PRIx64 " port %u\n", cl_ntoh16(p_mad->status), node_guid, port);
17451783
17461784 CL_ASSERT(p_mad->attr_id == IB_MAD_ATTR_PORT_CNTRS ||
17471785 p_mad->attr_id == IB_MAD_ATTR_PORT_CNTRS_EXT ||
9595 osm_pending_pkey_t *p_pending;
9696
9797 p_pkey_tbl = &p_physp->pkeys;
98 p_pending = (osm_pending_pkey_t *) malloc(sizeof(osm_pending_pkey_t));
98 p_pending = (osm_pending_pkey_t *) calloc(1, sizeof(osm_pending_pkey_t));
9999 if (!p_pending) {
100100 OSM_LOG(p_log, OSM_LOG_ERROR, "ERR 0502: "
101101 "Failed to allocate new pending pkey entry for node "
650650 ib_net64_t port_guid, node_guid;
651651 uint8_t port_num;
652652
653 CL_ASSERT(sm);
654
653655 OSM_LOG_ENTER(sm->p_log);
654656
655 CL_ASSERT(sm);
656657 CL_ASSERT(p_madw);
657658
658659 p_smp = osm_madw_get_smp_ptr(p_madw);
148148
149149 if (p_subn->opt.allow_both_pkeys) {
150150 if (cl_map_remove(p_tbl, guid))
151 OSM_LOG(p_log, OSM_LOG_ERROR, "port 0x%" PRIx64
151 OSM_LOG(p_log, OSM_LOG_VERBOSE, "port 0x%" PRIx64
152152 " already in partition \'%s\' (0x%04x) full %d."
153153 " Will overwrite\n",
154154 cl_ntoh64(guid), p->name, cl_ntoh16(p->pkey),
6868 osm_node_t *p_node;
6969 osm_port_t *p_sm_port;
7070 osm_physp_t *p_physp;
71 ib_net64_t dest_port_guid, m_key;
71 ib_net64_t dest_port_guid = 0, m_key;
7272 uint8_t hop;
7373
7474 OSM_LOG_ENTER(sm->p_log);
400400 */
401401 if (sa_mad->method == IB_MAD_METHOD_GET && num_rec > 1) {
402402 OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 4C05: "
403 "Got %u records for SubnAdmGet(%s) comp_mask 0x%016" PRIx64 "\n",
403 "Got %u records for SubnAdmGet(%s) comp_mask 0x%016" PRIx64
404 "from requester LID %u\n",
404405 num_rec, ib_get_sa_attr_str(sa_mad->attr_id),
405 cl_ntoh64(sa_mad->comp_mask));
406 cl_ntoh64(sa_mad->comp_mask),
407 cl_ntoh16(madw->mad_addr.dest_lid));
406408 osm_sa_send_error(sa, madw, IB_SA_MAD_STATUS_TOO_MANY_RECORDS);
407409 goto Exit;
408410 }
523525 return -1;
524526 }
525527
526 chmod(path_tmp, S_IRUSR | S_IWUSR);
528 if (chmod(path_tmp, S_IRUSR | S_IWUSR)) {
529 OSM_LOG(&p_osm->log, OSM_LOG_ERROR, "ERR 4C0C: "
530 "cannot change access permissions of file "
531 "\'%s\' : %s\n",
532 path_tmp, strerror(errno));
533 fclose(file);
534 return -1;
535 }
527536
528537 dump_func(p_osm, file);
529538
138138 p_mpr,
139139 IN const osm_alias_guid_t * p_src_alias_guid,
140140 IN const osm_alias_guid_t * p_dest_alias_guid,
141 IN const uint16_t src_lid_ho,
141142 IN const uint16_t dest_lid_ho,
142143 IN const ib_net64_t comp_mask,
143144 OUT osm_path_parms_t * p_parms)
215216 p_physp = osm_switch_get_route_by_lid(p_node->sw, dest_lid);
216217 if (p_physp == 0) {
217218 OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 4514: "
218 "Can't find routing to LID %u on switch %s "
219 "(GUID 0x%016"PRIx64")\n", dest_lid_ho,
220 p_node->print_desc,
219 "Can't find routing from LID %u to LID %u on "
220 "switch %s (GUID 0x%016" PRIx64 ")\n",
221 src_lid_ho, dest_lid_ho, p_node->print_desc,
221222 cl_ntoh64(osm_node_get_node_guid(p_node)));
222223 status = IB_NOT_FOUND;
223224 goto Exit;
260261
261262 if (p_dest_physp == 0) {
262263 OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 4515: "
263 "Can't find routing to LID %u on switch %s "
264 "(GUID 0x%016"PRIx64")\n", dest_lid_ho,
265 p_node->print_desc,
264 "Can't find routing from LID %u to LID %u on "
265 "switch %s (GUID 0x%016" PRIx64 ")\n",
266 src_lid_ho, dest_lid_ho, p_node->print_desc,
266267 cl_ntoh64(osm_node_get_node_guid(p_node)));
267268 status = IB_NOT_FOUND;
268269 goto Exit;
283284 if (p_physp == 0) {
284285 OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 4505: "
285286 "Can't find remote phys port of %s (GUID "
286 "0x%016"PRIx64") port %d "
287 "while routing to LID %u",
287 "0x%016" PRIx64 ") port %d "
288 "while routing from LID %u to LID %u",
288289 p_node->print_desc,
289290 cl_ntoh64(osm_node_get_node_guid(p_node)),
290 tmp_pnum,
291 dest_lid_ho);
291 tmp_pnum, src_lid_ho, dest_lid_ho);
292292 status = IB_ERROR;
293293 goto Exit;
294294 }
902902 memset(p_pr_item, 0, SA_MPR_RESP_SIZE);
903903
904904 status = mpr_rcv_get_path_parms(sa, p_mpr, p_src_alias_guid,
905 p_dest_alias_guid, dest_lid_ho,
905 p_dest_alias_guid,
906 src_lid_ho, dest_lid_ho,
906907 comp_mask, &path_parms);
907908
908909 if (status != IB_SUCCESS) {
913914
914915 /* now try the reversible path */
915916 rev_path_status = mpr_rcv_get_path_parms(sa, p_mpr, p_dest_alias_guid,
916 p_src_alias_guid, src_lid_ho,
917 p_src_alias_guid,
918 dest_lid_ho, src_lid_ho,
917919 comp_mask, &rev_path_parms);
918920 path_parms.reversible = (rev_path_status == IB_SUCCESS);
919921
227227 p_physp = osm_switch_get_route_by_lid(p_node->sw, dest_lid);
228228 if (p_physp == 0) {
229229 OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 1F02: "
230 "Cannot find routing to LID %u on switch "
231 "%s (GUID: 0x%016" PRIx64 ")\n", dest_lid_ho,
232 p_node->print_desc,
230 "Cannot find routing from LID %u to LID %u on "
231 "switch %s (GUID: 0x%016" PRIx64 ")\n",
232 src_lid_ho, dest_lid_ho, p_node->print_desc,
233233 cl_ntoh64(osm_node_get_node_guid(p_node)));
234234 status = IB_NOT_FOUND;
235235 goto Exit;
271271
272272 if (p_dest_physp == 0) {
273273 OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 1F03: "
274 "Cannot find routing to LID %u on switch "
275 "%s (GUID: 0x%016" PRIx64 ")\n", dest_lid_ho,
276 p_node->print_desc,
274 "Can't find routing from LID %u to LID %u on "
275 "switch %s (GUID: 0x%016" PRIx64 ")\n",
276 src_lid_ho, dest_lid_ho, p_node->print_desc,
277277 cl_ntoh64(osm_node_get_node_guid(p_node)));
278278 status = IB_NOT_FOUND;
279279 goto Exit;
295295 OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 1F05: "
296296 "Can't find remote phys port of %s (GUID: "
297297 "0x%016"PRIx64") port %d "
298 "while routing to LID %u\n",
298 "while routing from LID %u to LID %u\n",
299299 p_node->print_desc,
300300 cl_ntoh64(osm_node_get_node_guid(p_node)),
301 tmp_pnum,
302 dest_lid_ho);
301 tmp_pnum, src_lid_ho, dest_lid_ho);
303302 status = IB_ERROR;
304303 goto Exit;
305304 }
12681267 }
12691268
12701269 ib_net16_t osm_pr_get_end_points(IN osm_sa_t * sa,
1271 IN const ib_sa_mad_t *sa_mad,
1272 OUT const osm_alias_guid_t ** pp_src_alias_guid,
1273 OUT const osm_alias_guid_t ** pp_dest_alias_guid,
1274 OUT const osm_port_t ** pp_src_port,
1275 OUT const osm_port_t ** pp_dest_port,
1276 OUT const ib_gid_t ** pp_sgid,
1277 OUT const ib_gid_t ** pp_dgid)
1270 IN const ib_sa_mad_t *sa_mad,
1271 OUT const osm_alias_guid_t ** pp_src_alias_guid,
1272 OUT const osm_alias_guid_t ** pp_dest_alias_guid,
1273 OUT const osm_port_t ** pp_src_port,
1274 OUT const osm_port_t ** pp_dest_port,
1275 OUT const ib_gid_t ** pp_sgid,
1276 OUT const ib_gid_t ** pp_dgid)
12781277 {
12791278 const ib_path_rec_t *p_pr = ib_sa_mad_get_payload_ptr(sa_mad);
12801279 ib_net64_t comp_mask = sa_mad->comp_mask;
370370 * Update the state to MASTER, and start sweeping
371371 * OPTIONAL: send ACKNOWLEDGE
372372 */
373 /* Turn on the first_time_master_sweep flag */
373 /* Turn on the force_first_time_master_sweep flag */
374 /* We want full reconfiguration to occur on the first */
375 /* master sweep of this SM */
374376 CL_PLOCK_EXCL_ACQUIRE(sm->p_lock);
375 sm->p_subn->first_time_master_sweep = TRUE;
376 /*
377 * Turn on the force_heavy_sweep - we want a
378 * heavy sweep to occur on the first sweep of this SM.
379 */
380 sm->p_subn->force_heavy_sweep = TRUE;
381
382377 /*
383378 * Make sure to set the subnet master_sm_base_lid
384379 * to the sm_base_lid value
386381 sm->p_subn->master_sm_base_lid =
387382 sm->p_subn->sm_base_lid;
388383
389 sm->p_subn->coming_out_of_standby = TRUE;
390
384 sm->p_subn->force_first_time_master_sweep = TRUE;
391385 CL_PLOCK_RELEASE(sm->p_lock);
392386
393387 sm->p_subn->sm_state = IB_SMINFO_STATE_MASTER;
456450 osm_get_sm_mgr_signal_str(signal));
457451 CL_PLOCK_EXCL_ACQUIRE(sm->p_lock);
458452 sm->polling_sm_guid = 0;
459 sm->p_subn->first_time_master_sweep = TRUE;
460 sm->p_subn->coming_out_of_standby = TRUE;
461 sm->p_subn->force_heavy_sweep = TRUE;
453 sm->p_subn->force_first_time_master_sweep = TRUE;
462454 CL_PLOCK_RELEASE(sm->p_lock);
463455 osm_sm_signal(sm, OSM_SIGNAL_SWEEP);
464456 break;
372372 state = IB_LINK_ACTIVE; /* base SP0 */
373373 else
374374 state = osm_physp_get_port_state(p_physp);
375
376 if (!p_port->discovery_count) {
377 OSM_LOG(sm->p_log, OSM_LOG_ERROR,
378 "ERR 330A: Failed to discover SM port\n");
379 state = IB_LINK_DOWN;
380 }
381
375382 CL_PLOCK_RELEASE(sm->p_lock);
376383
377384 Exit:
11611168 osm_remote_sm_t *p_remote_sm;
11621169 unsigned config_parsed = 0;
11631170
1171 if (sm->p_subn->force_first_time_master_sweep) {
1172 sm->p_subn->force_heavy_sweep = TRUE;
1173 sm->p_subn->coming_out_of_standby = TRUE;
1174 sm->p_subn->first_time_master_sweep = TRUE;
1175 sm->p_subn->force_first_time_master_sweep = FALSE;
1176 }
1177
11641178 /* after subnet initialization error, run heavy sweep */
11651179 if (sm->p_subn->subnet_initialization_error)
11661180 sm->p_subn->force_heavy_sweep = TRUE;
12271241 }
12281242
12291243 /*
1230 * Unicast cache should be invalidated if there were errors
1231 * during initialization or if subnet re-route is requested.
1244 * Unicast cache should be invalidated when subnet re-route is
1245 * requested, and when OpenSM comes out of standby state.
12321246 */
12331247 if (sm->p_subn->opt.use_ucast_cache &&
1234 (sm->p_subn->subnet_initialization_error ||
1235 sm->p_subn->force_reroute || sm->p_subn->coming_out_of_standby))
1248 (sm->p_subn->force_reroute || sm->p_subn->coming_out_of_standby))
12361249 osm_ucast_cache_invalidate(&sm->ucast_mgr);
12371250
12381251 /*
13131326 if (state_mgr_is_sm_port_down(sm) == TRUE) {
13141327 if (sm->p_subn->last_sm_port_state) {
13151328 sm->p_subn->last_sm_port_state = 0;
1316 osm_log_v2(sm->p_log, OSM_LOG_SYS, FILE_ID, "SM port is down\n");
1329 osm_log_v2(sm->p_log, OSM_LOG_SYS, FILE_ID,
1330 "SM port is down\n");
13171331 OSM_LOG_MSG_BOX(sm->p_log, OSM_LOG_VERBOSE,
13181332 "SM PORT DOWN");
13191333 }
13301344 } else {
13311345 if (!sm->p_subn->last_sm_port_state) {
13321346 sm->p_subn->last_sm_port_state = 1;
1333 osm_log_v2(sm->p_log, OSM_LOG_SYS, FILE_ID, "SM port is up\n");
1347 osm_log_v2(sm->p_log, OSM_LOG_SYS, FILE_ID,
1348 "SM port is up\n");
13341349 OSM_LOG_MSG_BOX(sm->p_log, OSM_LOG_VERBOSE,
13351350 "SM PORT UP");
13361351 }
13951410 * need to wait for that SM to relinquish control
13961411 * of its portion of the subnet. C14-60.2.1.
13971412 * Also - need to start polling on that SM. */
1413 CL_PLOCK_EXCL_ACQUIRE(sm->p_lock);
13981414 sm->polling_sm_guid = p_remote_sm->smi.guid;
1415 CL_PLOCK_RELEASE(sm->p_lock);
13991416 osm_sm_state_mgr_process(sm,
14001417 OSM_SM_SIGNAL_WAIT_FOR_HANDOVER);
1418 return;
1419 } else if (sm->polling_sm_guid) {
1420 /* Stop polling SM if it's not found */
1421 osm_sm_state_mgr_process(sm,
1422 OSM_SM_SIGNAL_POLLING_TIMEOUT);
14011423 return;
14021424 }
14031425 }
14551477 */
14561478
14571479 if (!sm->ucast_mgr.cache_valid ||
1458 osm_ucast_cache_process(&sm->ucast_mgr))
1459 if (osm_ucast_mgr_process(&sm->ucast_mgr))
1480 osm_ucast_cache_process(&sm->ucast_mgr)) {
1481 if (osm_ucast_mgr_process(&sm->ucast_mgr)) {
1482 osm_ucast_cache_invalidate(&sm->ucast_mgr);
14601483 return;
1484 }
1485 }
14611486
14621487 osm_qos_setup(sm->p_subn->p_osm);
14631488
254254 {
255255 uint32_t log_max_size = *((uint32_t *) p_val);
256256
257 p_subn->p_osm->log.max_size = log_max_size << 20; /* convert from MB to bytes */
257 p_subn->p_osm->log.max_size = (unsigned long)log_max_size << 20; /* convert from MB to bytes */
258258 }
259259
260260 static void opts_setup_sminfo_polling_timeout(osm_subn_t *p_subn, void *p_val)
471471 void (*pfn)(osm_subn_t *, void *))
472472 {
473473 char **p_val1 = p_v1, **p_val2 = p_v2;
474 const char *current_str = *p_val1 ? *p_val1 : null_str ;
474 const char *current_str = *p_val1 ? *p_val1 : null_str;
475475
476476 if (p_val_str && strcmp(p_val_str, current_str)) {
477477 char *new;
14731473 uint16_t devid_ho;
14741474
14751475 devid_ho = cl_ntoh16(devid);
1476 if (devid_ho == 0xc738)
1476 if ((devid_ho >= 0xc738 && devid_ho <= 0xc73b) || devid_ho == 0xcb20)
14771477 return 1;
1478 if (devid_ho >= 0x1003 && devid_ho <= 0x1011)
1478 if (devid_ho >= 0x1003 && devid_ho <= 0x1013)
14791479 return 1;
14801480 return 0;
14811481 }
22732273 return 0;
22742274 }
22752275
2276 int osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opts)
2276 void osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opts)
22772277 {
22782278 int cacongoutputcount = 0;
22792279 int i;
24252425 "reassign_lids %s\n\n"
24262426 "# If TRUE forces every sweep to be a heavy sweep\n"
24272427 "force_heavy_sweep %s\n\n"
2428 "# If TRUE every trap will cause a heavy sweep.\n"
2428 "# If TRUE every trap 128 and 144 will cause a heavy sweep.\n"
24292429 "# NOTE: successive identical traps (>10) are suppressed\n"
24302430 "sweep_on_trap %s\n\n",
24312431 p_opts->sweep_interval,
26982698 "# Log file to be used\n"
26992699 "log_file %s\n\n"
27002700 "# Limit the size of the log file in MB. If overrun, log is restarted\n"
2701 "log_max_size %lu\n\n"
2701 "log_max_size %u\n\n"
27022702 "# If TRUE will accumulate the log over multiple OpenSM sessions\n"
27032703 "accum_log_file %s\n\n"
27042704 "# Per module logging configuration file\n"
28982898 }
28992899 }
29002900
2901 /* If by chance all the CA Cong Settings are default, output atleast 1 chunk
2901 /* If by chance all the CA Cong Settings are default, output at least 1 chunk
29022902 * for illustration */
29032903 if (!cacongoutputcount)
29042904 fprintf(out,
29482948
29492949 /* optional string attributes ... */
29502950
2951 return 0;
29522951 }
29532952
29542953 int osm_subn_write_conf_file(char *file_name, IN osm_subn_opt_t * p_opts)
29622961 return -1;
29632962 }
29642963
2965 if (osm_subn_output_conf(opts_file, p_opts) < 0)
2966 return -1;
2964 osm_subn_output_conf(opts_file, p_opts);
29672965
29682966 fclose(opts_file);
29692967
618618 int osm_switch_prepare_path_rebuild(IN osm_switch_t * p_sw, IN uint16_t max_lids)
619619 {
620620 uint8_t **hops;
621 uint8_t *new_lft;
621622 unsigned i;
622623
623624 if (alloc_lft(p_sw, max_lids))
628629
629630 osm_switch_clear_hops(p_sw);
630631
631 if (!(p_sw->new_lft = realloc(p_sw->new_lft, p_sw->lft_size)))
632 if (!(new_lft = realloc(p_sw->new_lft, p_sw->lft_size)))
632633 return -1;
634
635 p_sw->new_lft = new_lft;
633636
634637 memset(p_sw->new_lft, OSM_NO_PATH, p_sw->lft_size);
635638
10691069
10701070 if (ret < 0) {
10711071 OSM_LOG(&osm->log, OSM_LOG_ERROR,
1072 "%s: cannot build lid matrices.\n", r->name);
1072 "%s: cannot build lid matrices\n", r->name);
10731073 return ret;
10741074 }
10751075
10791079
10801080 if (ret < 0) {
10811081 OSM_LOG(&osm->log, OSM_LOG_ERROR,
1082 "%s: cannot build fwd tables.\n", r->name);
1082 "%s: cannot build fwd tables\n", r->name);
10831083 return ret;
10841084 }
10851085
0 %define RELEASE 1
0 %define RELEASE 3.3.19
11 %define rel %{?CUSTOM_RELEASE}%{!?CUSTOM_RELEASE:%RELEASE}
22 %if %{?_with_console_socket:1}%{!?_with_console_socket:0}
33 %define _enable_console_socket --enable-console-socket
2626
2727 Summary: InfiniBand subnet manager and administration
2828 Name: opensm
29 Version: 3.3.18
29 Version: 3.3.19
3030 Release: %rel%{?dist}
3131 License: GPLv2 or BSD
3232 Group: System Environment/Daemons
3333 URL: http://openfabrics.org/
34 Source: http://www.openfabrics.org/downloads/management/opensm-3.3.18.tar.gz
34 Source: http://www.openfabrics.org/downloads/management/opensm-3.3.19.tar.gz
3535 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
3636 BuildRequires: libibumad-devel, libtool
3737 Requires: %{name}-libs = %{version}-%{release}, logrotate
4343 #include <time.h>
4444 #include <dlfcn.h>
4545 #include <stdint.h>
46 #include <opensm/osm_config.h>
4647 #include <complib/cl_qmap.h>
4748 #include <complib/cl_passivelock.h>
4849 #include <opensm/osm_version.h>
450450
451451 case 'l':
452452 opt.log_file = optarg;
453 printf("\tLog File:%s\n", opt.log_file);
453 printf("\tLog File: %s\n", opt.log_file);
454454 break;
455455
456456 case 'v':
244244 "IB_SA_MAD_STATUS_INSUF_COMPS";
245245 static const char generic_or_str[] = " | ";
246246
247 static ib_api_status_t osmtest_create_db(IN osmtest_t * const p_osmt);
248
247249 const char *ib_get_mad_status_str(IN const ib_mad_t * const p_mad)
248250 {
249251 static char line[512];
53685370 cl_hton64(p_osmt->local_port_gid.unicast.prefix);
53695371
53705372 if (local_port->lid != local_port->sm_lid) {
5373 status = osmtest_create_db(p_osmt);
5374 if (status != IB_SUCCESS) {
5375 OSM_LOG(&p_osmt->log, OSM_LOG_ERROR,
5376 "ERR 0155: Database creation failed (%s)\n",
5377 ib_get_err_str(status));
5378 goto Exit;
5379 }
5380
53715381 p_tbl = &p_osmt->exp_subn.node_lid_tbl;
5372 p_node = (node_t *) cl_qmap_get(p_tbl, local_port->sm_lid);
5382 p_node = (node_t *) cl_qmap_get(p_tbl,
5383 cl_hton16(local_port->sm_lid));
53735384 if (p_node == (node_t *) cl_qmap_end(p_tbl)) {
53745385 OSM_LOG(&p_osmt->log, OSM_LOG_ERROR,
53755386 "ERR 0154: SM LID 0x%X doesn't exist\n",