Skip to content

Commit 5d0b22d

Browse files
authored
Enable SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL attribute (sonic-net#975)
Enable SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL attribute for all platforms based on capability Signed-off-by: Thushar Gowda <[email protected]>
1 parent 1b8ce97 commit 5d0b22d

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

configure.ac

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ AX_CODE_COVERAGE
1616
AX_ADD_AM_MACRO_STATIC([])
1717

1818
AM_CONDITIONAL(SONIC_ASIC_PLATFORM_BAREFOOT, test x$CONFIGURED_PLATFORM = xbarefoot)
19-
AM_CONDITIONAL(SONIC_ASIC_PLATFORM_MELLANOX, test x$CONFIGURED_PLATFORM = xmellanox)
2019

2120
AC_ARG_ENABLE(debug,
2221
[ --enable-debug turn on debugging],

syncd/Makefile.am

-5
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,6 @@ syncd_CXXFLAGS += -DSAITHRIFT=yes
6868
syncd_LDADD += -lrpcserver -lthrift
6969
endif
7070

71-
if SONIC_ASIC_PLATFORM_MELLANOX
72-
syncd_CXXFLAGS += -DSAI_SUPPORT_UNINIT_DATA_PLANE_ON_REMOVAL
73-
libSyncd_a_CXXFLAGS += -DSAI_SUPPORT_UNINIT_DATA_PLANE_ON_REMOVAL
74-
endif
75-
7671
libSyncdRequestShutdown_a_SOURCES = \
7772
RequestShutdown.cpp \
7873
RequestShutdownCommandLineOptions.cpp \

syncd/Syncd.cpp

+27-10
Original file line numberDiff line numberDiff line change
@@ -4393,15 +4393,36 @@ sai_status_t Syncd::setUninitDataPlaneOnRemovalOnAllSwitches()
43934393

43944394
auto strRid = sai_serialize_object_id(rid);
43954395

4396-
auto status = m_vendorSai->set(SAI_OBJECT_TYPE_SWITCH, rid, &attr);
4396+
sai_attr_capability_t attr_capability = {};
43974397

4398-
if (status != SAI_STATUS_SUCCESS)
4398+
sai_status_t queryStatus;
4399+
4400+
queryStatus = sai_query_attribute_capability(rid,
4401+
SAI_OBJECT_TYPE_SWITCH,
4402+
SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL,
4403+
&attr_capability);
4404+
if (queryStatus != SAI_STATUS_SUCCESS)
43994405
{
4400-
SWSS_LOG_ERROR("Failed to set SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL=false: %s:%s",
4401-
strRid.c_str(),
4402-
sai_serialize_status(status).c_str());
4406+
SWSS_LOG_ERROR("Failed to get SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL capabilities: %s:%s",
4407+
strRid.c_str(),
4408+
sai_serialize_status(queryStatus).c_str());
44034409

4404-
result = status;
4410+
result = queryStatus;
4411+
continue;
4412+
}
4413+
4414+
if (attr_capability.set_implemented)
4415+
{
4416+
auto status = m_vendorSai->set(SAI_OBJECT_TYPE_SWITCH, rid, &attr);
4417+
4418+
if (status != SAI_STATUS_SUCCESS)
4419+
{
4420+
SWSS_LOG_ERROR("Failed to set SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL=false: %s:%s",
4421+
strRid.c_str(),
4422+
sai_serialize_status(status).c_str());
4423+
4424+
result = status;
4425+
}
44054426
}
44064427
}
44074428

@@ -4650,15 +4671,11 @@ void Syncd::run()
46504671
}
46514672
}
46524673

4653-
#ifdef SAI_SUPPORT_UNINIT_DATA_PLANE_ON_REMOVAL
4654-
46554674
if (shutdownType == SYNCD_RESTART_TYPE_FAST || shutdownType == SYNCD_RESTART_TYPE_WARM)
46564675
{
46574676
setUninitDataPlaneOnRemovalOnAllSwitches();
46584677
}
46594678

4660-
#endif
4661-
46624679
m_manager->removeAllCounters();
46634680

46644681
sai_status_t status = removeAllSwitches();

0 commit comments

Comments
 (0)