Skip to content

Commit 418d5fb

Browse files
authored
Add pre match logic for lag member (#1008)
1 parent b9337dc commit 418d5fb

File tree

5 files changed

+125
-1
lines changed

5 files changed

+125
-1
lines changed

syncd/BestCandidateFinder.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ std::shared_ptr<SaiObj> BestCandidateFinder::findCurrentBestMatchForLag(
6161

6262
if (lagMemberLagAttr->getSaiAttr()->value.oid == tmpLagVid)
6363
{
64-
SWSS_LOG_NOTICE("found temp LAG member %s which uses temp LAG %s",
64+
SWSS_LOG_NOTICE("found temp LAG member %s which uses temp LAG member %s",
6565
temporaryObj->m_str_object_id.c_str(),
6666
lagMember->m_str_object_id.c_str());
6767

syncd/ComparisonLogic.cpp

+70
Original file line numberDiff line numberDiff line change
@@ -2754,6 +2754,54 @@ void ComparisonLogic::createPreMatchMapForObject(
27542754
}
27552755
}
27562756

2757+
void ComparisonLogic::cretePreMatchForLagMembers(
2758+
_In_ const AsicView& cur,
2759+
_Inout_ AsicView& tmp,
2760+
_Inout_ std::set<std::string>& processed)
2761+
{
2762+
SWSS_LOG_ENTER();
2763+
2764+
// match lag members that have the same port and use that lag members
2765+
// as createPreMatchMapForObject so it will create pre match entry for LAG
2766+
// and then for acl table group
2767+
2768+
auto cLagMembers = cur.getObjectsByObjectType(SAI_OBJECT_TYPE_LAG_MEMBER);
2769+
auto tLagMembers = tmp.getObjectsByObjectType(SAI_OBJECT_TYPE_LAG_MEMBER);
2770+
2771+
for (auto& cLagMember: cLagMembers)
2772+
{
2773+
if (processed.find(cLagMember->m_str_object_id) != processed.end())
2774+
continue;
2775+
2776+
for (auto& tLagMember: tLagMembers)
2777+
{
2778+
if (processed.find(tLagMember->m_str_object_id) != processed.end())
2779+
continue;
2780+
2781+
auto cPort = cLagMember->getSaiAttr(SAI_LAG_MEMBER_ATTR_PORT_ID);
2782+
auto tPort = tLagMember->getSaiAttr(SAI_LAG_MEMBER_ATTR_PORT_ID);
2783+
2784+
if (cPort->getOid() != tPort->getOid())
2785+
{
2786+
continue;
2787+
}
2788+
2789+
// at this point current and temporary lag member share the same
2790+
// port VID, then we can assume that those objects are the same
2791+
2792+
SWSS_LOG_INFO("pre match Lag Member: cur: %s, tmp: %s",
2793+
cLagMember->m_str_object_id.c_str(),
2794+
tLagMember->m_str_object_id.c_str());
2795+
2796+
tmp.m_preMatchMap[tLagMember->getVid()] = cLagMember->getVid();
2797+
2798+
createPreMatchMapForObject(cur, tmp, cLagMember, tLagMember, processed);
2799+
2800+
break;
2801+
}
2802+
}
2803+
}
2804+
27572805
void ComparisonLogic::createPreMatchMap(
27582806
_In_ const AsicView& cur,
27592807
_Inout_ AsicView& tmp)
@@ -2824,6 +2872,8 @@ void ComparisonLogic::createPreMatchMap(
28242872
createPreMatchMapForObject(cur, tmp, cObj, tObj, processed);
28252873
}
28262874

2875+
cretePreMatchForLagMembers(cur, tmp, processed);
2876+
28272877
size_t count = 0;
28282878

28292879
for (auto& ok: tmp.m_soOids)
@@ -2947,6 +2997,26 @@ void ComparisonLogic::applyViewTransition(
29472997
* XXX this is workaround. FIXME
29482998
*/
29492999

3000+
for (auto &obj: temp.m_soAll)
3001+
{
3002+
// TODO make generic list of root objects (or meta SAI for this)
3003+
3004+
if (obj.second->getObjectType() == SAI_OBJECT_TYPE_ACL_TABLE_GROUP)
3005+
{
3006+
if (temp.m_preMatchMap.find(obj.second->getVid()) == temp.m_preMatchMap.end())
3007+
{
3008+
// object not in pre match
3009+
continue;
3010+
}
3011+
3012+
SWSS_LOG_INFO("processing explicit pre match: %s:%s",
3013+
obj.second->m_str_object_type.c_str(),
3014+
obj.second->m_str_object_id.c_str());
3015+
3016+
processObjectForViewTransition(current, temp, obj.second);
3017+
}
3018+
}
3019+
29503020
for (auto &obj: temp.m_soAll)
29513021
{
29523022
if (obj.second->getObjectType() != SAI_OBJECT_TYPE_ROUTE_ENTRY)

syncd/ComparisonLogic.h

+4
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,10 @@ namespace syncd
175175
_In_ std::shared_ptr<const SaiObj> tObj,
176176
_Inout_ std::set<std::string>& processed);
177177

178+
void cretePreMatchForLagMembers(
179+
_In_ const AsicView& cur,
180+
_Inout_ AsicView& tmp,
181+
_Inout_ std::set<std::string>& processed);
178182

179183
sai_object_id_t asic_translate_vid_to_rid(
180184
_In_ const AsicView& current,

tests/BCM56850.pl

+13
Original file line numberDiff line numberDiff line change
@@ -749,8 +749,21 @@ sub test_remove_port_serdes
749749
play "test_remove_port_serdes.rec";
750750
}
751751

752+
sub test_lag_member
753+
{
754+
fresh_start;
755+
756+
play "test_lag_member.rec";
757+
play "test_lag_member.rec", 1;
758+
play "test_lag_member.rec", 1;
759+
play "test_lag_member.rec", 1;
760+
play "test_lag_member.rec", 1;
761+
play "test_lag_member.rec", 1;
762+
}
763+
752764
# RUN TESTS
753765

766+
test_lag_member;
754767
test_remove_port_serdes;
755768
test_brcm_warm_new_object_port_serdes;
756769
test_buffer_profile_get;

tests/BCM56850/test_lag_member.rec

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2022-01-14.15:46:22.474741|a|INIT_VIEW
2+
2022-01-14.15:46:24.688492|A|SAI_STATUS_SUCCESS
3+
2022-01-14.15:46:24.689578|c|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_INIT_SWITCH=true
4+
2022-01-14.15:46:25.693192|g|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_PORT_LIST=32:oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0
5+
2022-01-14.15:46:25.695263|G|SAI_STATUS_SUCCESS|SAI_SWITCH_ATTR_PORT_LIST=32:oid:0x1000000000002,oid:0x1000000000003,oid:0x1000000000004,oid:0x1000000000005,oid:0x1000000000006,oid:0x1000000000007,oid:0x1000000000008,oid:0x1000000000009,oid:0x100000000000a,oid:0x100000000000b,oid:0x100000000000c,oid:0x100000000000d,oid:0x100000000000e,oid:0x100000000000f,oid:0x1000000000010,oid:0x1000000000011,oid:0x1000000000012,oid:0x1000000000013,oid:0x1000000000014,oid:0x1000000000015,oid:0x1000000000016,oid:0x1000000000017,oid:0x1000000000018,oid:0x1000000000019,oid:0x100000000001a,oid:0x100000000001b,oid:0x100000000001c,oid:0x100000000001d,oid:0x100000000001e,oid:0x100000000001f,oid:0x1000000000020,oid:0x1000000000021
6+
2022-01-14.15:46:27.407237|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb000000000601|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
7+
2022-01-14.15:46:27.408138|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb000000000605|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
8+
2022-01-14.15:46:27.409011|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb000000000609|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
9+
2022-01-14.15:46:27.409839|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb00000000060d|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
10+
2022-01-14.15:46:27.407328|c|SAI_OBJECT_TYPE_LAG:oid:0x2000000000600|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb000000000601
11+
2022-01-14.15:46:27.408232|c|SAI_OBJECT_TYPE_LAG:oid:0x2000000000604|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb000000000605
12+
2022-01-14.15:46:27.409063|c|SAI_OBJECT_TYPE_LAG:oid:0x2000000000608|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb000000000609
13+
2022-01-14.15:46:27.409908|c|SAI_OBJECT_TYPE_LAG:oid:0x200000000060c|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb00000000060d
14+
2022-01-14.15:46:28.283780|c|SAI_OBJECT_TYPE_LAG_MEMBER:oid:0x1b000000000613|SAI_LAG_MEMBER_ATTR_LAG_ID=oid:0x2000000000600|SAI_LAG_MEMBER_ATTR_PORT_ID=oid:0x100000000001e
15+
2022-01-14.15:46:29.668267|c|SAI_OBJECT_TYPE_LAG_MEMBER:oid:0x1b00000000065a|SAI_LAG_MEMBER_ATTR_LAG_ID=oid:0x200000000060c|SAI_LAG_MEMBER_ATTR_PORT_ID=oid:0x1000000000021
16+
2022-01-14.15:46:29.852460|c|SAI_OBJECT_TYPE_LAG_MEMBER:oid:0x1b00000000065d|SAI_LAG_MEMBER_ATTR_LAG_ID=oid:0x2000000000608|SAI_LAG_MEMBER_ATTR_PORT_ID=oid:0x1000000000020
17+
2022-01-14.15:46:25.817148|a|APPLY_VIEW
18+
2022-01-14.15:46:25.818774|A|SAI_STATUS_SUCCESS
19+
2022-01-14.16:24:24.859833|a|INIT_VIEW
20+
2022-01-14.16:24:29.032331|A|SAI_STATUS_SUCCESS
21+
2022-01-14.16:24:29.036445|c|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_INIT_SWITCH=true
22+
2022-01-14.16:24:29.063536|g|SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000|SAI_SWITCH_ATTR_PORT_LIST=32:oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0,oid:0x0
23+
2022-01-14.16:24:29.075991|G|SAI_STATUS_SUCCESS|SAI_SWITCH_ATTR_PORT_LIST=32:oid:0x1000000000002,oid:0x1000000000003,oid:0x1000000000004,oid:0x1000000000005,oid:0x1000000000006,oid:0x1000000000007,oid:0x1000000000008,oid:0x1000000000009,oid:0x100000000000a,oid:0x100000000000b,oid:0x100000000000c,oid:0x100000000000d,oid:0x100000000000e,oid:0x100000000000f,oid:0x1000000000010,oid:0x1000000000011,oid:0x1000000000012,oid:0x1000000000013,oid:0x1000000000014,oid:0x1000000000015,oid:0x1000000000016,oid:0x1000000000017,oid:0x1000000000018,oid:0x1000000000019,oid:0x100000000001a,oid:0x100000000001b,oid:0x100000000001c,oid:0x100000000001d,oid:0x100000000001e,oid:0x100000000001f,oid:0x1000000000020,oid:0x1000000000021
24+
2022-01-14.16:24:34.169967|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb000000000755|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
25+
2022-01-14.16:24:34.172823|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb000000000757|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
26+
2022-01-14.16:24:34.175837|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb000000000759|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
27+
2022-01-14.16:24:34.178329|c|SAI_OBJECT_TYPE_ACL_TABLE_GROUP:oid:0xb00000000075b|SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE=SAI_ACL_STAGE_INGRESS|SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST=1:SAI_ACL_BIND_POINT_TYPE_LAG|SAI_ACL_TABLE_GROUP_ATTR_TYPE=SAI_ACL_TABLE_GROUP_TYPE_PARALLEL
28+
2022-01-14.16:24:34.171081|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000006ee|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb000000000755
29+
2022-01-14.16:24:34.173489|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000006ef|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb000000000757
30+
2022-01-14.16:24:34.176562|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000006f0|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb000000000759
31+
2022-01-14.16:24:34.179006|c|SAI_OBJECT_TYPE_LAG:oid:0x20000000006f1|SAI_LAG_ATTR_INGRESS_ACL=oid:0xb00000000075b
32+
2022-01-14.16:24:32.355500|c|SAI_OBJECT_TYPE_LAG_MEMBER:oid:0x1b0000000006f2|SAI_LAG_MEMBER_ATTR_LAG_ID=oid:0x20000000006ee|SAI_LAG_MEMBER_ATTR_PORT_ID=oid:0x100000000001e|SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE=false|SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE=false
33+
2022-01-14.16:24:32.358008|c|SAI_OBJECT_TYPE_LAG_MEMBER:oid:0x1b0000000006f3|SAI_LAG_MEMBER_ATTR_LAG_ID=oid:0x20000000006ef|SAI_LAG_MEMBER_ATTR_PORT_ID=oid:0x100000000001f|SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE=true|SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE=true
34+
2022-01-14.16:24:32.360583|c|SAI_OBJECT_TYPE_LAG_MEMBER:oid:0x1b0000000006f4|SAI_LAG_MEMBER_ATTR_LAG_ID=oid:0x20000000006f0|SAI_LAG_MEMBER_ATTR_PORT_ID=oid:0x1000000000020|SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE=false|SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE=false
35+
2022-01-14.16:24:32.363114|c|SAI_OBJECT_TYPE_LAG_MEMBER:oid:0x1b0000000006f5|SAI_LAG_MEMBER_ATTR_LAG_ID=oid:0x20000000006f1|SAI_LAG_MEMBER_ATTR_PORT_ID=oid:0x1000000000021|SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE=false|SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE=false
36+
2022-01-14.16:24:36.722522|a|APPLY_VIEW
37+
2022-01-14.16:24:42.626612|A|SAI_STATUS_SUCCESS

0 commit comments

Comments
 (0)