Skip to content

Commit

Permalink
sonic-swss: Sync and program remote lag member status. (sonic-net#2730)
Browse files Browse the repository at this point in the history
* sonic-swss: Sync and program remote lag member status.

   * SYSTEM_LAG_MEMBER_TABLE is updated to carry the member status.
   * Pass lag member status to addLagMember so that it can be updated in
     SYSTEM_LAG_MEMBER_TABLE.
   * In doLagMemberTask add code to update lag member status in
     SYSTEM_LAG_MEMBER_TABLE so that remote linecards can handle the
     member status.
   * Remove the code that ignore collecting/distributing update for
     members of remote lags.
   * Update voqSyncAddLagMember to update the lag member status.
  • Loading branch information
skbarista authored Apr 12, 2023
1 parent f139f12 commit 6b79cea
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 22 deletions.
4 changes: 2 additions & 2 deletions orchagent/p4orch/tests/fake_portorch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ bool PortsOrch::setLagTpid(sai_object_id_t id, sai_uint16_t tpid)
return true;
}

bool PortsOrch::addLagMember(Port &lag, Port &port, bool enableForwarding)
bool PortsOrch::addLagMember(Port &lag, Port &port, string member_status)
{
return true;
}
Expand Down Expand Up @@ -699,7 +699,7 @@ void PortsOrch::voqSyncDelLag(Port &lag)
{
}

void PortsOrch::voqSyncAddLagMember(Port &lag, Port &port)
void PortsOrch::voqSyncAddLagMember(Port &lag, Port &port, string status)
{
}

Expand Down
31 changes: 13 additions & 18 deletions orchagent/portsorch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4388,13 +4388,19 @@ void PortsOrch::doLagMemberTask(Consumer &consumer)
continue;
}

if (!addLagMember(lag, port, (status == "enabled")))
if (!addLagMember(lag, port, status))
{
it++;
continue;
}
}

if ((gMySwitchType == "voq") && (port.m_type != Port::SYSTEM))
{
//Sync to SYSTEM_LAG_MEMBER_TABLE of CHASSIS_APP_DB
voqSyncAddLagMember(lag, port, status);
}

/* Sync an enabled member */
if (status == "enabled")
{
Expand Down Expand Up @@ -5819,9 +5825,10 @@ void PortsOrch::getLagMember(Port &lag, vector<Port> &portv)
}
}

bool PortsOrch::addLagMember(Port &lag, Port &port, bool enableForwarding)
bool PortsOrch::addLagMember(Port &lag, Port &port, string member_status)
{
SWSS_LOG_ENTER();
bool enableForwarding = (member_status == "enabled");

sai_uint32_t pvid;
if (getPortPvid(lag, pvid))
Expand Down Expand Up @@ -5893,7 +5900,7 @@ bool PortsOrch::addLagMember(Port &lag, Port &port, bool enableForwarding)
if (gMySwitchType == "voq")
{
//Sync to SYSTEM_LAG_MEMBER_TABLE of CHASSIS_APP_DB
voqSyncAddLagMember(lag, port);
voqSyncAddLagMember(lag, port, member_status);
}

return true;
Expand Down Expand Up @@ -5981,12 +5988,6 @@ bool PortsOrch::setCollectionOnLagMember(Port &lagMember, bool enableCollection)
/* Port must be LAG member */
assert(lagMember.m_lag_member_id);

// Collection is not applicable for system port lag members (i.e, members of remote LAGs)
if (lagMember.m_type == Port::SYSTEM)
{
return true;
}

sai_status_t status = SAI_STATUS_FAILURE;
sai_attribute_t attr {};

Expand Down Expand Up @@ -6018,12 +6019,6 @@ bool PortsOrch::setDistributionOnLagMember(Port &lagMember, bool enableDistribut
/* Port must be LAG member */
assert(lagMember.m_lag_member_id);

// Distribution is not applicable for system port lag members (i.e, members of remote LAGs)
if (lagMember.m_type == Port::SYSTEM)
{
return true;
}

sai_status_t status = SAI_STATUS_FAILURE;
sai_attribute_t attr {};

Expand Down Expand Up @@ -8048,7 +8043,7 @@ void PortsOrch::voqSyncDelLag(Port &lag)
m_tableVoqSystemLagTable->del(key);
}

void PortsOrch::voqSyncAddLagMember(Port &lag, Port &port)
void PortsOrch::voqSyncAddLagMember(Port &lag, Port &port, string status)
{
// Sync only local lag's member add to CHASSIS_APP_DB
if (lag.m_system_lag_info.switch_id != gVoqMySwitchId)
Expand All @@ -8057,8 +8052,8 @@ void PortsOrch::voqSyncAddLagMember(Port &lag, Port &port)
}

vector<FieldValueTuple> attrs;
FieldValueTuple nullFv ("NULL", "NULL");
attrs.push_back(nullFv);
FieldValueTuple statusFv ("status", status);
attrs.push_back(statusFv);

string key = lag.m_system_lag_info.alias + ":" + port.m_system_port_info.alias;
m_tableVoqSystemLagMemberTable->set(key, attrs);
Expand Down
4 changes: 2 additions & 2 deletions orchagent/portsorch.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ class PortsOrch : public Orch, public Subject
bool addLag(string lag, uint32_t spa_id, int32_t switch_id);
bool removeLag(Port lag);
bool setLagTpid(sai_object_id_t id, sai_uint16_t tpid);
bool addLagMember(Port &lag, Port &port, bool enableForwarding);
bool addLagMember(Port &lag, Port &port, string status);
bool removeLagMember(Port &lag, Port &port);
bool setCollectionOnLagMember(Port &lagMember, bool enableCollection);
bool setDistributionOnLagMember(Port &lagMember, bool enableDistribution);
Expand Down Expand Up @@ -459,7 +459,7 @@ class PortsOrch : public Orch, public Subject
unique_ptr<Table> m_tableVoqSystemLagMemberTable;
void voqSyncAddLag(Port &lag);
void voqSyncDelLag(Port &lag);
void voqSyncAddLagMember(Port &lag, Port &port);
void voqSyncAddLagMember(Port &lag, Port &port, string status);
void voqSyncDelLagMember(Port &lag, Port &port);
unique_ptr<LagIdAllocator> m_lagIdAllocator;
set<sai_object_id_t> m_macsecEnabledPorts;
Expand Down

0 comments on commit 6b79cea

Please sign in to comment.