Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package opensm for openSUSE:Factory checked in at 2021-09-02 23:20:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/opensm (Old) and /work/SRC/openSUSE:Factory/.opensm.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opensm" Thu Sep 2 23:20:28 2021 rev:16 rq:915803 version:3.3.24 Changes: -------- --- /work/SRC/openSUSE:Factory/opensm/opensm.changes 2020-11-06 23:42:52.671519802 +0100 +++ /work/SRC/openSUSE:Factory/.opensm.new.1899/opensm.changes 2021-09-02 23:20:54.804598258 +0200 @@ -1,0 +2,8 @@ +Tue Aug 24 07:19:22 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> + +- Update to version 3.3.24 (jsc#SLE-19252) + - Support for NDR link speed + - Backward compatibility for old drivers + - Several bug fixes + +------------------------------------------------------------------- Old: ---- opensm-3.3.23.0.d35a20f3be11.tar.gz New: ---- opensm-3.3.24.0.844ab3b7edaa.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ opensm.spec ++++++ --- /var/tmp/diff_new_pack.2aUGEW/_old 2021-09-02 23:20:55.664599331 +0200 +++ /var/tmp/diff_new_pack.2aUGEW/_new 2021-09-02 23:20:55.664599331 +0200 @@ -1,7 +1,7 @@ # # spec file for package opensm # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,7 +16,7 @@ # -%define git_ver .0.d35a20f3be11 +%define git_ver .0.844ab3b7edaa #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} %define _fillupdir /var/adm/fillup-templates @@ -30,7 +30,7 @@ Summary: Infiniband Subnet Manager License: BSD-2-Clause OR GPL-2.0-only Group: Productivity/Networking/System -Version: 3.3.23 +Version: 3.3.24 Release: 0 Source: opensm-%{version}%{git_ver}.tar.gz Source1: conf.sysconfig ++++++ _service ++++++ --- /var/tmp/diff_new_pack.2aUGEW/_old 2021-09-02 23:20:55.712599390 +0200 +++ /var/tmp/diff_new_pack.2aUGEW/_new 2021-09-02 23:20:55.712599390 +0200 @@ -8,7 +8,7 @@ <param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param> <param name="versionrewrite-pattern">(opensm-)?(.*)</param> <param name="versionrewrite-replacement">\2</param> - <param name="revision">d35a20f3be113e03316ca6c3afb7d19975772d8d</param> + <param name="revision">844ab3b7edaad983449b5d3a4a773088b8daa299</param> </service> <service name="recompress" mode="disabled"> <param name="file">*opensm*.tar</param> ++++++ opensm-3.3.23.0.d35a20f3be11.tar.gz -> opensm-3.3.24.0.844ab3b7edaa.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/.gitignore new/opensm-3.3.24.0.844ab3b7edaa/.gitignore --- old/opensm-3.3.23.0.d35a20f3be11/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/.gitignore 2021-06-14 11:57:50.000000000 +0200 @@ -0,0 +1,44 @@ +*.la +*.lo +*.o +.deps +.libs +aclocal.m4 +autom4te.cache/ +config.log +config.status +config/compile +config/config.guess +config/config.sub +config/depcomp +config/install-sh +config/libtool.m4 +config/ltmain.sh +config/ltoptions.m4 +config/ltsugar.m4 +config/ltversion.m4 +config/lt~obsolete.m4 +config/missing +config/ylwrap +configure +include/config.h +include/config.h.in +include/opensm/osm_config.h +include/opensm/osm_version.h +include/opensm/stamp-h2 +include/stamp-h1 +libtool +Makefile +Makefile.in +man/opensm.8 +man/torus-2QoS.8 +man/torus-2QoS.conf.5 +opensm.spec +opensm/opensm +opensm/osm_qos_parser_l.c +opensm/osm_qos_parser_y.c +opensm/osm_qos_parser_y.h +osmtest/osmtest +scripts/opensm.init +scripts/redhat-opensm.init +scripts/sldd.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/complib/cl_heap.c new/opensm-3.3.24.0.844ab3b7edaa/complib/cl_heap.c --- old/opensm-3.3.23.0.d35a20f3be11/complib/cl_heap.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/complib/cl_heap.c 2021-06-14 11:57:50.000000000 +0200 @@ -239,7 +239,7 @@ CL_ASSERT(p_heap); CL_ASSERT(cl_is_heap_inited(p_heap)); - if (index < 0 || index >= p_heap->size) + if (index >= p_heap->size) return (CL_INVALID_PARAMETER); old_key = p_heap->element_array[index].key; @@ -286,7 +286,7 @@ if (!p_heap->size) return NULL; - if (index < 0 || index >= p_heap->size) + if (index >= p_heap->size) return NULL; if (p_heap->size == 1) return p_heap->element_array[--(p_heap->size)].context; @@ -333,7 +333,7 @@ CL_ASSERT(p_heap); CL_ASSERT(cl_is_heap_inited(p_heap)); - return ((index < 0 || index >= p_heap->size || + return ((index >= p_heap->size || p_heap->element_array[index].context != ctx) ? FALSE : TRUE); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/complib/libosmcomp.ver new/opensm-3.3.24.0.844ab3b7edaa/complib/libosmcomp.ver --- old/opensm-3.3.23.0.d35a20f3be11/complib/libosmcomp.ver 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/complib/libosmcomp.ver 2021-06-14 11:57:50.000000000 +0200 @@ -6,4 +6,4 @@ # API_REV - advance on any added API # RUNNING_REV - advance any change to the vendor files # AGE - number of backward versions the API still supports -LIBVERSION=5:0:0 +LIBVERSION=5:1:0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/configure.ac new/opensm-3.3.24.0.844ab3b7edaa/configure.ac --- old/opensm-3.3.23.0.d35a20f3be11/configure.ac 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/configure.ac 2021-06-14 11:57:50.000000000 +0200 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) -AC_INIT(opensm, 3.3.23, linux-r...@vger.kernel.org) +AC_INIT(opensm, 3.3.24, linux-r...@vger.kernel.org) AC_CONFIG_SRCDIR([opensm/osm_opensm.c]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_MACRO_DIR(config) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/doc/opensm_release_notes-3.3.txt new/opensm-3.3.24.0.844ab3b7edaa/doc/opensm_release_notes-3.3.txt --- old/opensm-3.3.23.0.d35a20f3be11/doc/opensm_release_notes-3.3.txt 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/doc/opensm_release_notes-3.3.txt 2021-06-14 11:57:50.000000000 +0200 @@ -10,7 +10,7 @@ This document describes the contents of the OpenSM 3.3 release. OpenSM is an InfiniBand compliant Subnet Manager and Administration, and runs on top of OpenIB. The OpenSM version for this release -is opensm-3.3.23. +is opensm-3.3.24. This document includes the following sections: 1 This Overview section (describing new features and software @@ -23,6 +23,8 @@ 1.1 Major New Features +* Support for NDR link speed + * Support for HDR link speed and 2x link width IBTA has recently (beyond IBA 1.3) added support for HDR link speed and 2x link width. @@ -121,6 +123,7 @@ 1.2 Minor New Features: +b17b4db Backward compatibility for old drivers 924f030 Add support for registering an opensm plugin as a new routing engine 82c3ea6 Add '--subnet_prefix' and '--dump_files_dir' options dfc383e osm_port_info_rcv.c: Optimize PKEY sending during heavy sweep @@ -867,6 +870,11 @@ 4.2 Other Bug Fixes +580e6d8 Remove redundant negativity check of size_t type, which is unsigned thus non negative. +086c870 libopensm/osm_helper.c: Fix printing trap 256 details +8870b89 libopensm/osm_helper.c: Fix printing trap 259 details +9b3e860 osm_link_mgr.c: Fix checking if port support link width 2x +0a8d939 osm_sa_mcmember_record.c: Allow MCMR requests with default subnet prefix 9b9ea72 Fix spelling mistake of "switches" 70722b4 ib_types: Drop packed attribute where unnecessary 9a7cc0d opensm.spec.in: Move COPYING back into doc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/include/iba/ib_types.h new/opensm-3.3.24.0.844ab3b7edaa/include/iba/ib_types.h --- old/opensm-3.3.23.0.d35a20f3be11/include/iba/ib_types.h 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/include/iba/ib_types.h 2021-06-14 11:57:50.000000000 +0200 @@ -3216,6 +3216,8 @@ * 20: 50 Gb/sec. * 21: 400 Gb/sec. * 22: 600 Gb/sec. +* 23 : 800 Gb/sec. +* 24 : 1200 Gb/sec. * others: reserved * * NOTES @@ -4702,6 +4704,7 @@ #define IB_PORT_CAP2_IS_SWITCH_PORT_STATE_TBL_SUPP (CL_HTON16(0x0008)) #define IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED (CL_HTON16(0x0010)) #define IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED (CL_HTON16(0x0020)) +#define IB_PORT_CAP2_IS_LINK_SPEED_NDR_SUPPORTED (CL_HTON16(0x0400)) /****s* IBA Base: Types/ib_port_info_ext_t * NAME @@ -4721,7 +4724,9 @@ ib_net16_t edr_fec_mode_enable; ib_net16_t hdr_fec_mode_sup; ib_net16_t hdr_fec_mode_enable; - uint8_t reserved[46]; + ib_net16_t ndr_fec_mode_sup; + ib_net16_t ndr_fec_mode_enable; + uint8_t reserved[42]; } ib_port_info_ext_t; /************/ @@ -5182,9 +5187,14 @@ #define IB_LINK_SPEED_EXT_ACTIVE_14 1 #define IB_LINK_SPEED_EXT_ACTIVE_25 2 #define IB_LINK_SPEED_EXT_ACTIVE_50 4 +#define IB_LINK_SPEED_EXT_ACTIVE_100 8 #define IB_LINK_SPEED_EXT_14_25_OR_50 (IB_LINK_SPEED_EXT_ACTIVE_14 | \ IB_LINK_SPEED_EXT_ACTIVE_25 | \ IB_LINK_SPEED_EXT_ACTIVE_50) +#define IB_LINK_SPEED_EXT_MAX_VALUE (IB_LINK_SPEED_EXT_ACTIVE_14 | \ + IB_LINK_SPEED_EXT_ACTIVE_25 | \ + IB_LINK_SPEED_EXT_ACTIVE_50 | \ + IB_LINK_SPEED_EXT_ACTIVE_100) #define IB_LINK_SPEED_EXT_DISABLE 30 #define IB_LINK_SPEED_EXT_SET_LSES 31 @@ -5210,10 +5220,13 @@ #define IB_PATH_RECORD_RATE_50_GBS 20 #define IB_PATH_RECORD_RATE_400_GBS 21 #define IB_PATH_RECORD_RATE_600_GBS 22 +/* following v1 ver1.5 p1044 */ +#define IB_PATH_RECORD_RATE_800_GBS 23 +#define IB_PATH_RECORD_RATE_1200_GBS 24 #define IB_MIN_RATE IB_PATH_RECORD_RATE_2_5_GBS -#define IB_MAX_RATE IB_PATH_RECORD_RATE_600_GBS -#define IB_RATE_MAX IB_PATH_RECORD_RATE_600_GBS +#define IB_MAX_RATE IB_PATH_RECORD_RATE_1200_GBS +#define IB_RATE_MAX IB_PATH_RECORD_RATE_1200_GBS static inline uint8_t OSM_API ib_port_info_get_link_speed_ext_active(IN const ib_port_info_t * const p_pi); @@ -5316,6 +5329,33 @@ break; } break; + case IB_LINK_SPEED_EXT_ACTIVE_100: + switch (p_pi->link_width_active) { + case IB_LINK_WIDTH_ACTIVE_1X: + rate = IB_PATH_RECORD_RATE_100_GBS; + break; + + case IB_LINK_WIDTH_ACTIVE_4X: + rate = IB_PATH_RECORD_RATE_400_GBS; + break; + + case IB_LINK_WIDTH_ACTIVE_8X: + rate = IB_PATH_RECORD_RATE_800_GBS; + break; + + case IB_LINK_WIDTH_ACTIVE_12X: + rate = IB_PATH_RECORD_RATE_1200_GBS; + break; + + case IB_LINK_WIDTH_ACTIVE_2X: + rate = IB_PATH_RECORD_RATE_200_GBS; + break; + + default: + rate = IB_PATH_RECORD_RATE_100_GBS; + break; + } + break; /* IB_LINK_SPEED_EXT_ACTIVE_NONE and any others */ default: break; @@ -6456,7 +6496,9 @@ uint8_t ret = 0; uint8_t extspeeds = (speeds >> 4); - if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_50) + if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_100) + ret = IB_LINK_SPEED_EXT_ACTIVE_100 << 4; + else if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_50) ret = IB_LINK_SPEED_EXT_ACTIVE_50 << 4; else if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_25) ret = IB_LINK_SPEED_EXT_ACTIVE_25 << 4; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_base.h new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_base.h --- old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_base.h 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_base.h 2021-06-14 11:57:50.000000000 +0200 @@ -933,6 +933,17 @@ */ #define OSM_CAP2_IS_LINK_SPEED_HDR_SUPPORTED (1 << 15) +/****d* OpenSM: OSM_CAP2_IS_LINK_SPEED_NDR_SUPPORTED + * Name + * OSM_CAP2_IS_LINK_SPEED_NDR_SUPPORTED + * + * DESCRIPTION + * NDR link speed supported + * + * SYNOPSIS + */ +#define OSM_CAP2_IS_LINK_SPEED_NDR_SUPPORTED (1 << 17) + /****d* OpenSM: osm_signal_t * NAME * osm_signal_t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_helper.h new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_helper.h --- old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_helper.h 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_helper.h 2021-06-14 11:57:50.000000000 +0200 @@ -841,6 +841,9 @@ * ib_path_rate_max_12xedr * * DESCRIPTION +* Function is deprecated and SHOULD NOT BE USED. +* Use osm_sa_limit_rate instead. +* * Obtains encoded rate from the set of "original" extended * SA rates (up through and including 300 Gbps - 12x EDR). * @@ -854,6 +857,9 @@ * [in] Encoded path rate. * * RETURN VALUES +* Function is deprecated and SHOULD NOT BE USED. +* Use osm_sa_limit_rate instead. +* * Returns an int indicating the encoded rate * with a maximum of 300 Gbps (12x EDR). * For new rates (relating to 2x and HDR), the @@ -895,6 +901,34 @@ * SEE ALSO *********/ +/****f* IBA Base: Types/ib_path_get_reduced_rate + * NAME + * ib_path_get_reduced_rate + * + * DESCRIPTION + * Obtains encoded rate for a reduced rate, subsequent + * to input maximal rate. + * + * SYNOPSIS + */ +int ib_path_get_reduced_rate(IN const uint8_t rate, IN const uint8_t limit); +/* + * PARAMETERS + * rate + * [in] Encoded path rate. + * + * limit + * [in] Encoded maximal rate supported. + * + * RETURN VALUES + * Returns an int indicating reduced encoded rate supported, + * or minimal rate if none can be found. + * + * NOTES + * + * SEE ALSO + *********/ + /****f* OpenSM: Helper/sprint_uint8_arr * NAME * sprint_uint8_arr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_sa.h new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_sa.h --- old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_sa.h 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_sa.h 2021-06-14 11:57:50.000000000 +0200 @@ -66,6 +66,8 @@ # define END_C_DECLS #endif /* __cplusplus */ +#define SA_RATE_MAX_ENUM 63 + BEGIN_C_DECLS /****h* OpenSM/SA * NAME @@ -613,5 +615,31 @@ IN const ib_gid_t * p_dgid, IN cl_qlist_t * p_list); +/****f* OpenSM: SA/osm_sa_limit_rate + * NAME + * osm_sa_limit_rate + * + * DESCRIPTION + * Find reduced rate of input rate that does not exceed the maximal + * rate value of subnet. + * + * SYNOPSIS + */ +uint8_t osm_sa_limit_rate(IN osm_sa_t *sa, IN const uint8_t rate); +/* + * PARAMETERS + * sa + * [in] Pointer to a SA object. + * + * rate + * [in] Rate to be adjusted to maximal rate value of subnet. + * + * RETURN VALUE + * The rate after adjusting to maximal rate, may be the same or lower. + * + * SEE ALSO + * SA object, osm_sa_construct, osm_sa_init + *********/ + END_C_DECLS #endif /* _OSM_SA_H_ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_subnet.h new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_subnet.h --- old/opensm-3.3.23.0.d35a20f3be11/include/opensm/osm_subnet.h 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/include/opensm/osm_subnet.h 2021-06-14 11:57:50.000000000 +0200 @@ -338,6 +338,7 @@ boolean_t ipoib_mcgroup_creation_validation; boolean_t mcgroup_join_validation; boolean_t use_original_extended_sa_rates_only; + uint8_t max_rate_enum; boolean_t use_optimized_slvl; boolean_t fsync_high_avail_files; osm_qos_options_t qos_options; @@ -641,6 +642,12 @@ * old kernels/drivers that don't understand the * new SA rates for 2x link width and/or HDR link speed (19-22). * +* max_rate_enum +* Enumeration of the maximal rate subnet supports. Option is +* required for subnets with old kernels/drivers that don't +* understand new SA rates. +* See also : use_original_extended_sa_rates_only. +* * use_optimized_slvl * Use optimized SLtoVLMappingTable programming if * device indicates it supports this. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/libopensm/libopensm.map new/opensm-3.3.24.0.844ab3b7edaa/libopensm/libopensm.map --- old/opensm-3.3.23.0.d35a20f3be11/libopensm/libopensm.map 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/libopensm/libopensm.map 2021-06-14 11:57:50.000000000 +0200 @@ -91,5 +91,6 @@ sprint_uint8_arr; ib_path_rate_max_12xedr; ib_path_rate_2x_hdr_fixups; + ib_path_get_reduced_rate; local: *; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/libopensm/libopensm.ver new/opensm-3.3.24.0.844ab3b7edaa/libopensm/libopensm.ver --- old/opensm-3.3.23.0.d35a20f3be11/libopensm/libopensm.ver 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/libopensm/libopensm.ver 2021-06-14 11:57:50.000000000 +0200 @@ -6,4 +6,4 @@ # API_REV - advance on any added API # RUNNING_REV - advance any change to the vendor files # AGE - number of backward versions the API still supports -LIBVERSION=10:0:1 +LIBVERSION=11:0:2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/libopensm/osm_helper.c new/opensm-3.3.24.0.844ab3b7edaa/libopensm/osm_helper.c --- old/opensm-3.3.23.0.d35a20f3be11/libopensm/osm_helper.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/libopensm/osm_helper.c 2021-06-14 11:57:50.000000000 +0200 @@ -464,6 +464,8 @@ 11, /* 20 - 50 Gbps (62.5 Gbps equiv) */ 20, /* 21 - 400 Gbps (500 Gbps equiv) */ 21, /* 22 - 600 Gbps (750 Gbps equiv) */ + 22, /* 23 - 800 Gbps (1000 Gbps equiv) */ + 23, /* 24 - 1200 Gbps (1500 Gbps equiv) */ }; int sprint_uint8_arr(char *buf, size_t size, @@ -2520,8 +2522,8 @@ mkey), p_ntci->data_details.ntc_256. dr_trunc_hop >> 7, - p_ntci->data_details.ntc_256. - dr_trunc_hop >> 6, + (p_ntci->data_details.ntc_256. + dr_trunc_hop & 0x40) >> 6, p_ntci->data_details.ntc_256. dr_trunc_hop & 0x3f); n += snprintf(buff + n, sizeof(buff) - n, @@ -2588,10 +2590,11 @@ cl_ntoh16(p_ntci->data_details.ntc_259.lid2), cl_ntoh16(p_ntci->data_details.ntc_259.pkey), cl_ntoh32(p_ntci->data_details.ntc_259. - sl_qp1) >> 24, + sl_qp1) >> 28, cl_ntoh32(p_ntci->data_details.ntc_259. sl_qp1) & 0xffffff, - cl_ntoh32(p_ntci->data_details.ntc_259.qp2), + cl_ntoh32(p_ntci->data_details.ntc_259. + qp2) & 0xffffff, inet_ntop(AF_INET6, p_ntci->data_details. ntc_259.gid1.raw, gid_str, sizeof gid_str), @@ -3215,7 +3218,11 @@ "14 ", "25 ", "????", - "50 " + "50 ", + "????", + "????", + "????", + "100 " }; const char *osm_get_lsa_str(IN uint8_t lsa, IN uint8_t lsea, IN uint8_t state, @@ -3229,7 +3236,7 @@ else return lsa_str_fixed_width[lsa]; } - if (lsea > IB_LINK_SPEED_EXT_ACTIVE_50) + if (lsea > IB_LINK_SPEED_EXT_ACTIVE_100) return lsa_str_fixed_width[3]; return lsea_str_fixed_width[lsea]; } @@ -3344,6 +3351,17 @@ return find_ordered_rate(orate); } +int ib_path_get_reduced_rate(IN const uint8_t rate, IN const uint8_t limit) +{ + int i = ib_path_rate_get_prev(rate); + + while (i > IB_MIN_RATE && + (ordered_rates[i] > ordered_rates[limit] || i > limit)) + i = ib_path_rate_get_prev(i); + + return i ? i : IB_MIN_RATE; +} + int ib_path_rate_max_12xedr(IN const int rate) { CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE); @@ -3358,6 +3376,8 @@ return IB_PATH_RECORD_RATE_40_GBS; case IB_PATH_RECORD_RATE_400_GBS: case IB_PATH_RECORD_RATE_600_GBS: + case IB_PATH_RECORD_RATE_800_GBS: + case IB_PATH_RECORD_RATE_1200_GBS: return IB_PATH_RECORD_RATE_300_GBS; default: break; @@ -3397,10 +3417,28 @@ case IB_PATH_RECORD_RATE_600_GBS: /* HDR not supported but HDR only rate */ if (!(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) || - (p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2 && - !(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED))) + ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) && + !(p_pi->capability_mask2 & + (IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED | + IB_PORT_CAP2_IS_LINK_SPEED_NDR_SUPPORTED)))) new_rate = IB_PATH_RECORD_RATE_300_GBS; break; + case IB_PATH_RECORD_RATE_800_GBS: + case IB_PATH_RECORD_RATE_1200_GBS: + /* NDR not supported but NDR only rate */ + if (!(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) || + (p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2 && + !(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_NDR_SUPPORTED))) { + if ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) && + !(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED)) { + /* HDR not supported */ + new_rate = IB_PATH_RECORD_RATE_300_GBS; + } else { + /* HDR is supported */ + new_rate = IB_PATH_RECORD_RATE_600_GBS; + } + } + break; default: break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_console.c new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_console.c --- old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_console.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_console.c 2021-06-14 11:57:50.000000000 +0200 @@ -730,6 +730,7 @@ uint64_t ports_fdr; uint64_t ports_edr; uint64_t ports_hdr; + uint64_t ports_ndr; uint64_t ports_unknown_speed; port_report_t *unknown_speed_ports; uint64_t ports_unenabled_speed; @@ -996,6 +997,8 @@ fprintf(out, " %" PRIu64 " at 25.78125 Gbps\n", fs.ports_edr); if (fs.ports_hdr) fprintf(out, " %" PRIu64 " at 53.125 Gbps\n", fs.ports_hdr); + if (fs.ports_ndr) + fprintf(out, " %" PRIu64 " at 106.25 Gbps\n", fs.ports_ndr); if (fs.ports_disabled + fs.ports_reduced_speed + fs.ports_reduced_width + fs.ports_unenabled_width + fs.ports_unenabled_speed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_link_mgr.c new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_link_mgr.c --- old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_link_mgr.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_link_mgr.c 2021-06-14 11:57:50.000000000 +0200 @@ -107,6 +107,7 @@ ib_net32_t attr_mod, cap_mask; boolean_t update_mkey = FALSE; ib_net64_t m_key = 0; + ib_net16_t capability_mask2; osm_port_t *p_port; OSM_LOG_ENTER(sm->p_log); @@ -196,12 +197,15 @@ p_pi->state_info2 = 0x02; ib_port_info_set_port_state(p_pi, port_state); - /* Determine ports' M_Key */ + /* Determine ports' M_Key and CapabilityMask2 */ if (osm_node_get_type(p_node) == IB_NODE_TYPE_SWITCH && - osm_physp_get_port_num(p_physp) != 0) + osm_physp_get_port_num(p_physp) != 0) { m_key = ib_port_info_get_m_key(&physp0->port_info); - else + capability_mask2 = physp0->port_info.capability_mask2; + } else { m_key = ib_port_info_get_m_key(p_pi); + capability_mask2 = p_pi->capability_mask2; + } /* Check whether this is base port0 smsl handling only */ if (port_num == 0 && esp0 == FALSE) { @@ -341,7 +345,7 @@ */ if (sm->p_subn->opt.force_link_width && (sm->p_subn->opt.force_link_width < IB_LINK_WIDTH_ACTIVE_2X || - (p_pi->capability_mask2 & + (capability_mask2 & IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED)) && (sm->p_subn->opt.force_link_width != IB_LINK_WIDTH_SET_LWS || p_pi->link_width_enabled != p_pi->link_width_supported)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa.c new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa.c --- old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa.c 2021-06-14 11:57:50.000000000 +0200 @@ -1375,3 +1375,11 @@ fclose(file); return ret; } + +uint8_t osm_sa_limit_rate(IN osm_sa_t *sa, IN const uint8_t rate) +{ + if (sa->p_subn->opt.max_rate_enum < rate) + return ib_path_get_reduced_rate(rate, sa->p_subn->opt.max_rate_enum); + + return rate; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa_mcmember_record.c new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa_mcmember_record.c --- old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa_mcmember_record.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa_mcmember_record.c 2021-06-14 11:57:50.000000000 +0200 @@ -775,8 +775,8 @@ return FALSE; } } - if (sa->p_subn->opt.use_original_extended_sa_rates_only) { - new_rate = ib_path_rate_max_12xedr(rate); + if (sa->p_subn->opt.max_rate_enum < SA_RATE_MAX_ENUM) { + new_rate = osm_sa_limit_rate(sa, rate); if (new_rate != rate) { OSM_LOG(sa->p_log, OSM_LOG_VERBOSE, "Rate decreased from %u to %u\n", @@ -974,6 +974,7 @@ ib_member_rec_t *p_recvd_mcmember_rec; ib_member_rec_t mcmember_rec; osm_mcm_alias_guid_t *p_mcm_alias_guid; + ib_net64_t prefix; OSM_LOG_ENTER(sa->p_log); @@ -981,6 +982,16 @@ p_recvd_mcmember_rec = (ib_member_rec_t *) ib_sa_mad_get_payload_ptr(p_sa_mad); + if (OSM_LOG_IS_ACTIVE_V2(sa->p_log, OSM_LOG_DEBUG)) { + OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of record\n"); + osm_dump_mc_record_v2(sa->p_log, p_recvd_mcmember_rec, FILE_ID, OSM_LOG_DEBUG); + } + + /* Use ports actual subnet prefix */ + prefix = p_recvd_mcmember_rec->port_gid.unicast.prefix; + if (prefix == IB_DEFAULT_SUBNET_PREFIX) + p_recvd_mcmember_rec->port_gid.unicast.prefix = sa->p_subn->opt.subnet_prefix; + mcmember_rec = *p_recvd_mcmember_rec; /* Validate the subnet prefix in the PortGID */ @@ -1010,8 +1021,6 @@ "Requester port GUID 0x%" PRIx64 "\n", cl_ntoh64(osm_physp_get_port_guid(p_req_physp))); } - OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of record\n"); - osm_dump_mc_record_v2(sa->p_log, &mcmember_rec, FILE_ID, OSM_LOG_DEBUG); } p_mgrp = osm_get_mgrp_by_mgid(sa->p_subn, &p_recvd_mcmember_rec->mgid); @@ -1048,6 +1057,8 @@ &mcmember_rec); CL_PLOCK_RELEASE(sa->p_lock); + /* Return response with same subnet prefix of the request */ + mcmember_rec.port_gid.unicast.prefix = prefix; mcmr_rcv_respond(sa, p_madw, &mcmember_rec); Exit: @@ -1156,14 +1167,25 @@ uint8_t is_new_group; /* TRUE = there is a need to create a group */ uint8_t join_state; boolean_t proxy; + ib_net64_t prefix; OSM_LOG_ENTER(sa->p_log); p_sa_mad = osm_madw_get_sa_mad_ptr(p_madw); p_recvd_mcmember_rec = ib_sa_mad_get_payload_ptr(p_sa_mad); + if (OSM_LOG_IS_ACTIVE_V2(sa->p_log, OSM_LOG_DEBUG)) { + OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of incoming record\n"); + osm_dump_mc_record_v2(sa->p_log, p_recvd_mcmember_rec, FILE_ID, OSM_LOG_DEBUG); + } + portguid = p_recvd_mcmember_rec->port_gid.unicast.interface_id; + /* Use ports actual subnet prefix */ + prefix = p_recvd_mcmember_rec->port_gid.unicast.prefix; + if (prefix == IB_DEFAULT_SUBNET_PREFIX) + p_recvd_mcmember_rec->port_gid.unicast.prefix = sa->p_subn->opt.subnet_prefix; + mcmember_rec = *p_recvd_mcmember_rec; /* Validate the subnet prefix in the PortGID */ @@ -1193,8 +1215,6 @@ "Requester port GUID 0x%" PRIx64 "\n", cl_ntoh64(osm_physp_get_port_guid(p_req_physp))); } - OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of incoming record\n"); - osm_dump_mc_record_v2(sa->p_log, &mcmember_rec, FILE_ID, OSM_LOG_DEBUG); } /* make sure the requested port guid is known to the SM */ @@ -1422,6 +1442,9 @@ /* Release the lock as we don't need it. */ CL_PLOCK_RELEASE(sa->p_lock); + /* Return response with same subnet prefix of the request */ + mcmember_rec.port_gid.unicast.prefix = prefix; + if (OSM_LOG_IS_ACTIVE_V2(sa->p_log, OSM_LOG_DEBUG)) osm_dump_mc_record_v2(sa->p_log, &mcmember_rec, FILE_ID, OSM_LOG_DEBUG); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa_multipath_record.c new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa_multipath_record.c --- old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa_multipath_record.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa_multipath_record.c 2021-06-14 11:57:50.000000000 +0200 @@ -853,8 +853,8 @@ ib_path_rec_set_sl(p_pr, p_parms->sl); p_pr->mtu = (uint8_t) (p_parms->mtu | 0x80); rate = p_parms->rate; - if (sa->p_subn->opt.use_original_extended_sa_rates_only) { - new_rate = ib_path_rate_max_12xedr(rate); + if (sa->p_subn->opt.max_rate_enum < SA_RATE_MAX_ENUM) { + new_rate = osm_sa_limit_rate(sa, rate); if (new_rate != rate) { OSM_LOG(sa->p_log, OSM_LOG_VERBOSE, "Rate decreased from %u to %u\n", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa_path_record.c new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa_path_record.c --- old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_sa_path_record.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_sa_path_record.c 2021-06-14 11:57:50.000000000 +0200 @@ -921,8 +921,8 @@ ib_path_rec_set_qos_class(p_pr, 0); p_pr->mtu = (uint8_t) (p_parms->mtu | 0x80); rate = p_parms->rate; - if (sa->p_subn->opt.use_original_extended_sa_rates_only) { - new_rate = ib_path_rate_max_12xedr(rate); + if (sa->p_subn->opt.max_rate_enum < SA_RATE_MAX_ENUM) { + new_rate = osm_sa_limit_rate(sa, rate); if (new_rate != rate) { OSM_LOG(sa->p_log, OSM_LOG_VERBOSE, "Rate decreased from %u to %u\n", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_subnet.c new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_subnet.c --- old/opensm-3.3.23.0.d35a20f3be11/opensm/osm_subnet.c 2020-03-16 09:21:35.000000000 +0100 +++ new/opensm-3.3.24.0.844ab3b7edaa/opensm/osm_subnet.c 2021-06-14 11:57:50.000000000 +0200 @@ -851,6 +851,7 @@ { "ipoib_mcgroup_creation_validation", OPT_OFFSET(ipoib_mcgroup_creation_validation), opts_parse_boolean, NULL, 1 }, { "mcgroup_join_validation", OPT_OFFSET(mcgroup_join_validation), opts_parse_boolean, NULL, 1 }, { "use_original_extended_sa_rates_only", OPT_OFFSET(use_original_extended_sa_rates_only), opts_parse_boolean, NULL, 1 }, + { "max_rate_enum", OPT_OFFSET(max_rate_enum), opts_parse_uint8, NULL, 1}, { "use_optimized_slvl", OPT_OFFSET(use_optimized_slvl), opts_parse_boolean, NULL, 1 }, { "fsync_high_avail_files", OPT_OFFSET(fsync_high_avail_files), opts_parse_boolean, NULL, 1 }, #ifdef ENABLE_OSM_PERF_MGR @@ -1686,6 +1687,7 @@ p_opt->cc_cct.entries_len = 0; p_opt->cc_cct.input_str = NULL; p_opt->quasi_ftree_indexing = FALSE; + p_opt->max_rate_enum = SA_RATE_MAX_ENUM; } static char *clean_val(char *val) @@ -2064,7 +2066,7 @@ } if ((IB_LINK_SPEED_EXT_SET_LSES < p_opts->force_link_speed_ext) || - (p_opts->force_link_speed_ext > IB_LINK_SPEED_EXT_14_25_OR_50 && + (p_opts->force_link_speed_ext > IB_LINK_SPEED_EXT_MAX_VALUE && p_opts->force_link_speed_ext < IB_LINK_SPEED_EXT_DISABLE)) { log_report(" Invalid Cached Option Value:force_link_speed_ext = %u:" "Using Default:%u\n", p_opts->force_link_speed_ext, @@ -2201,6 +2203,28 @@ } } + if (p_opts->use_original_extended_sa_rates_only && + p_opts->max_rate_enum > IB_PATH_RECORD_RATE_300_GBS) { + if (p_opts->max_rate_enum != SA_RATE_MAX_ENUM) + log_report(" Warning:" + " use_original_extended_sa_rates_only" + " defines a rate limit lower" + " than max_rate_enum.\n\t " + " Setting max_rate_enum to %d\n", + IB_PATH_RECORD_RATE_300_GBS); + + p_opts->max_rate_enum = IB_PATH_RECORD_RATE_300_GBS; + } + + if (p_opts->max_rate_enum < IB_MIN_RATE || + (p_opts->max_rate_enum > IB_MAX_RATE && + p_opts->max_rate_enum != SA_RATE_MAX_ENUM)) { + log_report("Illegal max_rate_enum %u, setting to default " + "value (%u), support all rates\n", + p_opts->max_rate_enum, SA_RATE_MAX_ENUM); + p_opts->max_rate_enum = SA_RATE_MAX_ENUM; + } + return 0; } @@ -2430,6 +2454,14 @@ "# 5: 14.0625 Gbps or 53.125 Gbps\n" "# 6: 25.78125 Gbps or 53.125 Gbps\n" "# 7: 14.0625 Gbps, 25.78125 Gbps or 53.125 Gbps\n" + "# 8: 106.25 Gbps\n" + "# 9: 14.0625 Gbps or 106.25 Gbps\n" + "# 10: 25.78125 Gbps or 106.25 Gbps\n" + "# 11: 14.0625 Gbps or 25.78125 Gbps or 106.25 Gbps\n" + "# 12: 53.125 Gbps or 106.25 Gbps\n" + "# 13: 14.0625 Gbps or 53.125 Gbps or 106.25 Gbps\n" + "# 14: 25.78125 Gbps or 53.125 Gbps or 106.25 Gbps\n" + "# 15: 14.0625 Gbps, 25.78125 Gbps or 53.125 Gbps or 106.25 Gbps\n" "# 30: Disable extended link speeds\n" "# Default 31: set to PortInfo:LinkSpeedExtSupported\n" "force_link_speed_ext %u\n\n" @@ -2787,7 +2819,16 @@ "# Set to TRUE for subnets with old kernels/drivers that don't understand\n" "# the new SA rates for 2x link width and/or HDR link speed (19-22)\n" "# default is FALSE\n" + "# Notice: use_original_extended_sa_rates_only is deprecated by max_rate_enum!\n" + "# Use max_rate_enum 18 instead.\n" "use_original_extended_sa_rates_only %s\n\n" + "# Enumeration of the maximal rate subnet supports. Option is needed for\n" + "# subnets with old kernels/drivers that don't understand new SA rates.\n" + "# For example:" + "# 18: Rate of 300Gbps - support speeds up to 12xEDR\n" + "# 22: Rate of 600Gbps - support speeds up to HDR\n" + "# For farther reference refer to IB specification chapter 15.2.5.16.1\n" + "max_rate_enum %u\n\n" "# Use Optimized SLtoVLMapping programming if supported by device\n" "use_optimized_slvl %s\n\n" "# Sync in memory files used for high availability with storage\n" @@ -2799,6 +2840,7 @@ p_opts->ipoib_mcgroup_creation_validation ? "TRUE" : "FALSE", p_opts->mcgroup_join_validation ? "TRUE" : "FALSE", p_opts->use_original_extended_sa_rates_only ? "TRUE" : "FALSE", + p_opts->max_rate_enum, p_opts->use_optimized_slvl ? "TRUE" : "FALSE", p_opts->fsync_high_avail_files ? "TRUE" : "FALSE");