Skip to content

Commit fc50cf5

Browse files
[vs] Initialization of VOQ switch objects (sonic-net#702)
VOQ switch objects are initialized during switch create. This VOQ objects are initialized after regular switch objects are initialized. This PR depends on sonic-net#701 for switch state initialization
1 parent e2f76cf commit fc50cf5

6 files changed

+30
-9
lines changed

vslib/inc/SwitchBCM81724.h

+8-2
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,14 @@ namespace saivs
9797

9898
protected:
9999

100-
virtual sai_status_t refresh_read_only( _In_ const sai_attr_metadata_t *meta, _In_ sai_object_id_t object_id) override;
100+
virtual sai_status_t refresh_read_only(
101+
_In_ const sai_attr_metadata_t *meta,
102+
_In_ sai_object_id_t object_id) override;
103+
101104
virtual sai_status_t set_switch_default_attributes();
102-
virtual sai_status_t initialize_default_objects() override;
105+
106+
virtual sai_status_t initialize_default_objects(
107+
_In_ uint32_t attr_count,
108+
_In_ const sai_attribute_t *attr_list) override;
103109
};
104110
}

vslib/inc/SwitchStateBase.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,9 @@ namespace saivs
9898

9999
public:
100100

101-
virtual sai_status_t initialize_default_objects();
101+
virtual sai_status_t initialize_default_objects(
102+
_In_ uint32_t attr_count,
103+
_In_ const sai_attribute_t *attr_list);
102104

103105
virtual sai_status_t create_port_dependencies(
104106
_In_ sai_object_id_t port_id);

vslib/inc/VirtualSwitchSaiInterface.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,10 @@ namespace saivs
339339
_In_ sai_object_id_t switch_id,
340340
_In_ std::shared_ptr<SwitchConfig> config,
341341
_In_ std::shared_ptr<WarmBootState> warmBootState,
342-
_In_ std::weak_ptr<saimeta::Meta> meta);
342+
_In_ std::weak_ptr<saimeta::Meta> meta,
343+
_In_ uint32_t attr_count,
344+
_In_ const sai_attribute_t *attr_list);
345+
343346
private:
344347

345348
static bool doesFdbEntryNotMatchFlushAttr(

vslib/src/SwitchBCM81724.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ sai_status_t SwitchBCM81724::create_port_dependencies(
6262
return SAI_STATUS_SUCCESS;
6363
}
6464

65-
sai_status_t SwitchBCM81724::initialize_default_objects()
65+
sai_status_t SwitchBCM81724::initialize_default_objects(
66+
_In_ uint32_t attr_count,
67+
_In_ const sai_attribute_t *attr_list)
6668
{
6769
SWSS_LOG_ENTER();
6870

vslib/src/SwitchStateBase.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -1429,7 +1429,9 @@ sai_status_t SwitchStateBase::set_number_of_ecmp_groups()
14291429
return set(SAI_OBJECT_TYPE_SWITCH, m_switch_id, &attr);
14301430
}
14311431

1432-
sai_status_t SwitchStateBase::initialize_default_objects()
1432+
sai_status_t SwitchStateBase::initialize_default_objects(
1433+
_In_ uint32_t attr_count,
1434+
_In_ const sai_attribute_t *attr_list)
14331435
{
14341436
SWSS_LOG_ENTER();
14351437

@@ -1454,6 +1456,10 @@ sai_status_t SwitchStateBase::initialize_default_objects()
14541456
CHECK_STATUS(create_scheduler_groups());
14551457
CHECK_STATUS(set_static_crm_values());
14561458

1459+
// Initialize switch for VOQ attributes
1460+
1461+
CHECK_STATUS(initialize_voq_switch_objects(attr_count, attr_list));
1462+
14571463
return SAI_STATUS_SUCCESS;
14581464
}
14591465

vslib/src/VirtualSwitchSaiInterface.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,9 @@ std::shared_ptr<SwitchStateBase> VirtualSwitchSaiInterface::init_switch(
540540
_In_ sai_object_id_t switch_id,
541541
_In_ std::shared_ptr<SwitchConfig> config,
542542
_In_ std::shared_ptr<WarmBootState> warmBootState,
543-
_In_ std::weak_ptr<saimeta::Meta> meta)
543+
_In_ std::weak_ptr<saimeta::Meta> meta,
544+
_In_ uint32_t attr_count,
545+
_In_ const sai_attribute_t *attr_list)
544546
{
545547
SWSS_LOG_ENTER();
546548

@@ -595,7 +597,7 @@ std::shared_ptr<SwitchStateBase> VirtualSwitchSaiInterface::init_switch(
595597
}
596598
else
597599
{
598-
sai_status_t status = ss->initialize_default_objects(); // TODO move to constructor
600+
sai_status_t status = ss->initialize_default_objects(attr_count, attr_list); // TODO move to constructor
599601

600602
if (status != SAI_STATUS_SUCCESS)
601603
{
@@ -652,7 +654,7 @@ sai_status_t VirtualSwitchSaiInterface::create(
652654
}
653655
}
654656

655-
auto ss = init_switch(switchId, config, warmBootState, m_meta);
657+
auto ss = init_switch(switchId, config, warmBootState, m_meta, attr_count, attr_list);
656658

657659
if (!ss)
658660
{

0 commit comments

Comments
 (0)