import opensm-3.3.23-3.el8

This commit is contained in:
CentOS Sources 2020-11-24 08:10:41 +00:00 committed by Andrew Lukoshko
parent 4b251b5bf8
commit dd1f0e6463
3 changed files with 181 additions and 1 deletions

View File

@ -0,0 +1,110 @@
From 0a8d9392b649a6797060f653bae9b5e5648a87d3 Mon Sep 17 00:00:00 2001
From: Daniel Klein <danielk@mellanox.com>
Date: Sun, 18 Oct 2020 14:39:25 +0300
Subject: [PATCH 1/2] osm_sa_mcmember_record.c: Allow MCMR requests with
default subnet prefix
Allow handling MCMR join/leave requests where PortGID is with the
default subnet prefix and OpenSM is configured to use non-default subnet
prefix.
Signed-off-by: Daniel Klein <danielk@mellanox.com>
---
opensm/osm_sa_mcmember_record.c | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/opensm/osm_sa_mcmember_record.c b/opensm/osm_sa_mcmember_record.c
index 3a75a97545af..b334ea0a2f55 100644
--- a/opensm/osm_sa_mcmember_record.c
+++ b/opensm/osm_sa_mcmember_record.c
@@ -974,6 +974,7 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
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 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
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 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
"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 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
&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 @@ static void mcmr_rcv_join_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
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 @@ static void mcmr_rcv_join_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
"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 @@ static void mcmr_rcv_join_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
/* 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);
--
2.25.4

View File

@ -0,0 +1,62 @@
From 9b3e860495cdca9ed050968608f02798cda2943b Mon Sep 17 00:00:00 2001
From: Daniel Klein <danielk@mellanox.com>
Date: Tue, 3 Nov 2020 08:11:51 +0000
Subject: [PATCH 2/2] osm_link_mgr.c: Fix checking if port support link width
2x
Bug description:
When force_link_width option is enabled, OpenSM checks for switch
external ports if the port support link width 2x in PortInfo of the
external port, instead of PortInfo of switch port 0.
With this change, when OpenSM checks if a switch supports link width 2x,
it checks in PortInfo of port 0 of the device.
Signed-off-by: Daniel Klein <danielk@mellanox.com>
---
opensm/osm_link_mgr.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/opensm/osm_link_mgr.c b/opensm/osm_link_mgr.c
index ca69375378a0..a02be5b8d219 100644
--- a/opensm/osm_link_mgr.c
+++ b/opensm/osm_link_mgr.c
@@ -107,6 +107,7 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
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 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
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 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
*/
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)) {
--
2.25.4

View File

@ -2,7 +2,7 @@
Name: opensm Name: opensm
Version: 3.3.23 Version: 3.3.23
Release: 2%{?dist} Release: 3%{?dist}
Summary: OpenIB InfiniBand Subnet Manager and management utilities Summary: OpenIB InfiniBand Subnet Manager and management utilities
Group: System Environment/Daemons Group: System Environment/Daemons
License: GPLv2 or BSD License: GPLv2 or BSD
@ -15,6 +15,8 @@ Source5: opensm.service
Source6: opensm.launch Source6: opensm.launch
Source7: opensm.rwtab Source7: opensm.rwtab
Source8: opensm.partitions Source8: opensm.partitions
Patch1: 0001-osm_sa_mcmember_record.c-Allow-MCMR-requests-with-de.patch
Patch2: 0002-osm_link_mgr.c-Fix-checking-if-port-support-link-wid.patch
BuildRequires: libibumad-devel, systemd, systemd-units BuildRequires: libibumad-devel, systemd, systemd-units
BuildRequires: bison, flex, byacc, gcc BuildRequires: bison, flex, byacc, gcc
@ -60,6 +62,8 @@ Static version of opensm libraries
%prep %prep
%setup -q %setup -q
%patch1 -p1
%patch2 -p1
%build %build
%if %{__remake_config} %if %{__remake_config}
@ -125,6 +129,10 @@ fi
%{_libdir}/lib*.a %{_libdir}/lib*.a
%changelog %changelog
* Fri Nov 20 2020 Honggang Li <honli@redhat.com> - 3.3.23-3
- Allow MCMR requests with default subnet prefix
- Resolves: bz1898872
* Thu Nov 05 2020 Honggang Li <honli@redhat.com> - 3.3.23-2 * Thu Nov 05 2020 Honggang Li <honli@redhat.com> - 3.3.23-2
- Update opensm service file - Update opensm service file
- Resolves: bz1892502 - Resolves: bz1892502