From 03dbeb095386768ed19ffbaad7598e722a7e0144 Mon Sep 17 00:00:00 2001 From: vedganes Date: Mon, 9 Nov 2020 16:41:05 -0500 Subject: [PATCH 1/4] [vstest]SAI emulation for voq switch init Signed-off-by: vedganes VOQ switch objects are initialized during swich create. This VOQ objects are initialized after regular switch objects are initialized. --- vslib/src/VirtualSwitchSaiInterface.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vslib/src/VirtualSwitchSaiInterface.cpp b/vslib/src/VirtualSwitchSaiInterface.cpp index 2b00a4cf2f..09bfda1cb7 100644 --- a/vslib/src/VirtualSwitchSaiInterface.cpp +++ b/vslib/src/VirtualSwitchSaiInterface.cpp @@ -659,6 +659,12 @@ sai_status_t VirtualSwitchSaiInterface::create( return SAI_STATUS_FAILURE; } + // Initialize switch for VOQ attributes + if ((ss->initialize_voq_switch_objects(attr_count, attr_list)) != SAI_STATUS_SUCCESS) + { + SWSS_LOG_THROW("VOQ switch initialization failed!"); + } + if (warmBootState != nullptr) { update_local_metadata(switchId); From 129c61f009bff62865352b9857eaf2c3ecca38b1 Mon Sep 17 00:00:00 2001 From: vedganes Date: Tue, 10 Nov 2020 18:37:09 -0500 Subject: [PATCH 2/4] [vs]VOQ Switch initialization Signed-off-by: vedganes Code review comments fix 1 --- vslib/inc/VirtualSwitchSaiInterface.h | 5 ++++- vslib/src/VirtualSwitchSaiInterface.cpp | 21 +++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/vslib/inc/VirtualSwitchSaiInterface.h b/vslib/inc/VirtualSwitchSaiInterface.h index 0e41302a6f..6a7ced1689 100644 --- a/vslib/inc/VirtualSwitchSaiInterface.h +++ b/vslib/inc/VirtualSwitchSaiInterface.h @@ -339,7 +339,10 @@ namespace saivs _In_ sai_object_id_t switch_id, _In_ std::shared_ptr config, _In_ std::shared_ptr warmBootState, - _In_ std::weak_ptr meta); + _In_ std::weak_ptr meta, + _In_ uint32_t attr_count, + _In_ const sai_attribute_t *attr_list); + private: static bool doesFdbEntryNotMatchFlushAttr( diff --git a/vslib/src/VirtualSwitchSaiInterface.cpp b/vslib/src/VirtualSwitchSaiInterface.cpp index 09bfda1cb7..ca681dcbcc 100644 --- a/vslib/src/VirtualSwitchSaiInterface.cpp +++ b/vslib/src/VirtualSwitchSaiInterface.cpp @@ -540,7 +540,9 @@ std::shared_ptr VirtualSwitchSaiInterface::init_switch( _In_ sai_object_id_t switch_id, _In_ std::shared_ptr config, _In_ std::shared_ptr warmBootState, - _In_ std::weak_ptr meta) + _In_ std::weak_ptr meta, + _In_ uint32_t attr_count, + _In_ const sai_attribute_t *attr_list) { SWSS_LOG_ENTER(); @@ -602,6 +604,15 @@ std::shared_ptr VirtualSwitchSaiInterface::init_switch( SWSS_LOG_THROW("unable to init switch %s", sai_serialize_status(status).c_str()); } + // Initialize switch for VOQ attributes + + status = ss->initialize_voq_switch_objects(attr_count, attr_list); + + if (status != SAI_STATUS_SUCCESS) + { + SWSS_LOG_THROW("VOQ switch initialization failed!"); + } + SWSS_LOG_NOTICE("initialized switch %s", sai_serialize_object_id(switch_id).c_str()); } @@ -652,19 +663,13 @@ sai_status_t VirtualSwitchSaiInterface::create( } } - auto ss = init_switch(switchId, config, warmBootState, m_meta); + auto ss = init_switch(switchId, config, warmBootState, m_meta, attr_count, attr_list); if (!ss) { return SAI_STATUS_FAILURE; } - // Initialize switch for VOQ attributes - if ((ss->initialize_voq_switch_objects(attr_count, attr_list)) != SAI_STATUS_SUCCESS) - { - SWSS_LOG_THROW("VOQ switch initialization failed!"); - } - if (warmBootState != nullptr) { update_local_metadata(switchId); From 259a851b9011d465a60db4bd5c0d44e53db93742 Mon Sep 17 00:00:00 2001 From: vedganes Date: Fri, 13 Nov 2020 12:02:26 -0500 Subject: [PATCH 3/4] [vs]VOQ Switch Initialization Signed-off-by: vedganes Code review comments 2 --- vslib/inc/SwitchBCM81724.h | 2 +- vslib/inc/SwitchStateBase.h | 4 +++- vslib/src/SwitchBCM81724.cpp | 4 +++- vslib/src/SwitchStateBase.cpp | 8 +++++++- vslib/src/VirtualSwitchSaiInterface.cpp | 11 +---------- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/vslib/inc/SwitchBCM81724.h b/vslib/inc/SwitchBCM81724.h index d622dcf73d..6f61bf4022 100644 --- a/vslib/inc/SwitchBCM81724.h +++ b/vslib/inc/SwitchBCM81724.h @@ -99,6 +99,6 @@ namespace saivs virtual sai_status_t refresh_read_only( _In_ const sai_attr_metadata_t *meta, _In_ sai_object_id_t object_id) override; virtual sai_status_t set_switch_default_attributes(); - virtual sai_status_t initialize_default_objects() override; + virtual sai_status_t initialize_default_objects( _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list) override; }; } diff --git a/vslib/inc/SwitchStateBase.h b/vslib/inc/SwitchStateBase.h index 6e97ac626c..f8e5e974dc 100644 --- a/vslib/inc/SwitchStateBase.h +++ b/vslib/inc/SwitchStateBase.h @@ -98,7 +98,9 @@ namespace saivs public: - virtual sai_status_t initialize_default_objects(); + virtual sai_status_t initialize_default_objects( + _In_ uint32_t attr_count, + _In_ const sai_attribute_t *attr_list); virtual sai_status_t create_port_dependencies( _In_ sai_object_id_t port_id); diff --git a/vslib/src/SwitchBCM81724.cpp b/vslib/src/SwitchBCM81724.cpp index 326b19abf0..9e1df7d38a 100644 --- a/vslib/src/SwitchBCM81724.cpp +++ b/vslib/src/SwitchBCM81724.cpp @@ -62,7 +62,9 @@ sai_status_t SwitchBCM81724::create_port_dependencies( return SAI_STATUS_SUCCESS; } -sai_status_t SwitchBCM81724::initialize_default_objects() +sai_status_t SwitchBCM81724::initialize_default_objects( + _In_ uint32_t attr_count, + _In_ const sai_attribute_t *attr_list) { SWSS_LOG_ENTER(); diff --git a/vslib/src/SwitchStateBase.cpp b/vslib/src/SwitchStateBase.cpp index eb796b0bc3..788c1541bd 100644 --- a/vslib/src/SwitchStateBase.cpp +++ b/vslib/src/SwitchStateBase.cpp @@ -1429,7 +1429,9 @@ sai_status_t SwitchStateBase::set_number_of_ecmp_groups() return set(SAI_OBJECT_TYPE_SWITCH, m_switch_id, &attr); } -sai_status_t SwitchStateBase::initialize_default_objects() +sai_status_t SwitchStateBase::initialize_default_objects( + _In_ uint32_t attr_count, + _In_ const sai_attribute_t *attr_list) { SWSS_LOG_ENTER(); @@ -1454,6 +1456,10 @@ sai_status_t SwitchStateBase::initialize_default_objects() CHECK_STATUS(create_scheduler_groups()); CHECK_STATUS(set_static_crm_values()); + // Initialize switch for VOQ attributes + + CHECK_STATUS(initialize_voq_switch_objects(attr_count, attr_list)); + return SAI_STATUS_SUCCESS; } diff --git a/vslib/src/VirtualSwitchSaiInterface.cpp b/vslib/src/VirtualSwitchSaiInterface.cpp index ca681dcbcc..c737e3b87b 100644 --- a/vslib/src/VirtualSwitchSaiInterface.cpp +++ b/vslib/src/VirtualSwitchSaiInterface.cpp @@ -597,22 +597,13 @@ std::shared_ptr VirtualSwitchSaiInterface::init_switch( } else { - sai_status_t status = ss->initialize_default_objects(); // TODO move to constructor + sai_status_t status = ss->initialize_default_objects(attr_count, attr_list); // TODO move to constructor if (status != SAI_STATUS_SUCCESS) { SWSS_LOG_THROW("unable to init switch %s", sai_serialize_status(status).c_str()); } - // Initialize switch for VOQ attributes - - status = ss->initialize_voq_switch_objects(attr_count, attr_list); - - if (status != SAI_STATUS_SUCCESS) - { - SWSS_LOG_THROW("VOQ switch initialization failed!"); - } - SWSS_LOG_NOTICE("initialized switch %s", sai_serialize_object_id(switch_id).c_str()); } From 993795436d090bc2a3911f2fea5d2f3299a5568e Mon Sep 17 00:00:00 2001 From: vedganes Date: Fri, 13 Nov 2020 13:23:52 -0500 Subject: [PATCH 4/4] [vs]VOQ Switch Initialization Signed-off-by: vedganes Code review comments fix 3 --- vslib/inc/SwitchBCM81724.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/vslib/inc/SwitchBCM81724.h b/vslib/inc/SwitchBCM81724.h index 6f61bf4022..1ab5a7c7b1 100644 --- a/vslib/inc/SwitchBCM81724.h +++ b/vslib/inc/SwitchBCM81724.h @@ -97,8 +97,14 @@ namespace saivs protected: - virtual sai_status_t refresh_read_only( _In_ const sai_attr_metadata_t *meta, _In_ sai_object_id_t object_id) override; + virtual sai_status_t refresh_read_only( + _In_ const sai_attr_metadata_t *meta, + _In_ sai_object_id_t object_id) override; + virtual sai_status_t set_switch_default_attributes(); - virtual sai_status_t initialize_default_objects( _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list) override; + + virtual sai_status_t initialize_default_objects( + _In_ uint32_t attr_count, + _In_ const sai_attribute_t *attr_list) override; }; }