Skip to content

Commit a76b8e4

Browse files
committed
Support PFC counters in VS platform
Signed-off-by: Stephen Sun <[email protected]>
1 parent 448477f commit a76b8e4

4 files changed

Lines changed: 74 additions & 11 deletions

File tree

unittest/vslib/TestSwitchMLNX2700.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,7 @@ TEST(SwitchMLNX2700, test_stats_query_capability)
600600
std::make_shared<RealObjectIdManager>(0, scc),
601601
sc);
602602

603-
sai_stat_capability_t capability_list[51];
603+
sai_stat_capability_t capability_list[83];
604604
sai_stat_capability_list_t stats_capability;
605605
stats_capability.count = 1;
606606
stats_capability.list = capability_list;
@@ -623,7 +623,7 @@ TEST(SwitchMLNX2700, test_stats_query_capability)
623623
SAI_OBJECT_TYPE_PORT,
624624
&stats_capability),
625625
SAI_STATUS_BUFFER_OVERFLOW);
626-
stats_capability.count = 51;
626+
stats_capability.count = 83;
627627

628628
EXPECT_EQ(sw.queryStatsCapability(0x2100000000,
629629
SAI_OBJECT_TYPE_PORT,

unittest/vslib/TestVirtualSwitchSaiInterface.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ TEST_F(VirtualSwitchSaiInterfaceTest, bulkGet)
142142

143143
TEST_F(VirtualSwitchSaiInterfaceTest, queryStatsCapability)
144144
{
145-
sai_stat_capability_t capability_list[51];
145+
sai_stat_capability_t capability_list[83];
146146
sai_stat_capability_list_t stats_capability;
147147
stats_capability.list = capability_list;
148148

@@ -170,7 +170,7 @@ TEST_F(VirtualSwitchSaiInterfaceTest, queryStatsCapability)
170170
SAI_OBJECT_TYPE_PORT,
171171
&stats_capability));
172172

173-
stats_capability.count = 51;
173+
stats_capability.count = 83;
174174
EXPECT_EQ(SAI_STATUS_SUCCESS,
175175
m_vssai->queryStatsCapability(
176176
m_swid,

vslib/SwitchStateBase.cpp

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3920,13 +3920,13 @@ sai_status_t SwitchStateBase::queryStatsCapability(
39203920
}
39213921
else if (objectType == SAI_OBJECT_TYPE_PORT)
39223922
{
3923-
if (stats_capability->count < 51)
3923+
if (stats_capability->count < 83)
39243924
{
3925-
stats_capability->count = 51;
3925+
stats_capability->count = 83;
39263926
return SAI_STATUS_BUFFER_OVERFLOW;
39273927
}
39283928

3929-
stats_capability->count = 51;
3929+
stats_capability->count = 83;
39303930
stats_capability->list[0].stat_enum = SAI_PORT_STAT_IF_IN_OCTETS;
39313931
stats_capability->list[1].stat_enum = SAI_PORT_STAT_IF_IN_UCAST_PKTS;
39323932
stats_capability->list[2].stat_enum = SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS;
@@ -3978,6 +3978,38 @@ sai_status_t SwitchStateBase::queryStatsCapability(
39783978
stats_capability->list[48].stat_enum = SAI_PORT_STAT_WRED_DROPPED_PACKETS;
39793979
stats_capability->list[49].stat_enum = SAI_PORT_STAT_WRED_DROPPED_BYTES;
39803980
stats_capability->list[50].stat_enum = SAI_PORT_STAT_ECN_MARKED_PACKETS;
3981+
stats_capability->list[51].stat_enum = SAI_PORT_STAT_PFC_0_RX_PKTS;
3982+
stats_capability->list[52].stat_enum = SAI_PORT_STAT_PFC_0_TX_PKTS;
3983+
stats_capability->list[53].stat_enum = SAI_PORT_STAT_PFC_1_RX_PKTS;
3984+
stats_capability->list[54].stat_enum = SAI_PORT_STAT_PFC_1_TX_PKTS;
3985+
stats_capability->list[55].stat_enum = SAI_PORT_STAT_PFC_2_RX_PKTS;
3986+
stats_capability->list[56].stat_enum = SAI_PORT_STAT_PFC_2_TX_PKTS;
3987+
stats_capability->list[57].stat_enum = SAI_PORT_STAT_PFC_3_RX_PKTS;
3988+
stats_capability->list[58].stat_enum = SAI_PORT_STAT_PFC_3_TX_PKTS;
3989+
stats_capability->list[59].stat_enum = SAI_PORT_STAT_PFC_4_RX_PKTS;
3990+
stats_capability->list[60].stat_enum = SAI_PORT_STAT_PFC_4_TX_PKTS;
3991+
stats_capability->list[61].stat_enum = SAI_PORT_STAT_PFC_5_RX_PKTS;
3992+
stats_capability->list[62].stat_enum = SAI_PORT_STAT_PFC_5_TX_PKTS;
3993+
stats_capability->list[63].stat_enum = SAI_PORT_STAT_PFC_6_RX_PKTS;
3994+
stats_capability->list[64].stat_enum = SAI_PORT_STAT_PFC_6_TX_PKTS;
3995+
stats_capability->list[65].stat_enum = SAI_PORT_STAT_PFC_7_RX_PKTS;
3996+
stats_capability->list[66].stat_enum = SAI_PORT_STAT_PFC_7_TX_PKTS;
3997+
stats_capability->list[67].stat_enum = SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION;
3998+
stats_capability->list[68].stat_enum = SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION;
3999+
stats_capability->list[69].stat_enum = SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION;
4000+
stats_capability->list[70].stat_enum = SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION;
4001+
stats_capability->list[71].stat_enum = SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION;
4002+
stats_capability->list[72].stat_enum = SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION;
4003+
stats_capability->list[73].stat_enum = SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION;
4004+
stats_capability->list[74].stat_enum = SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION;
4005+
stats_capability->list[75].stat_enum = SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION;
4006+
stats_capability->list[76].stat_enum = SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION;
4007+
stats_capability->list[77].stat_enum = SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION;
4008+
stats_capability->list[78].stat_enum = SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION;
4009+
stats_capability->list[79].stat_enum = SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION;
4010+
stats_capability->list[80].stat_enum = SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION;
4011+
stats_capability->list[81].stat_enum = SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION;
4012+
stats_capability->list[82].stat_enum = SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION;
39814013

39824014
for(i = 0; i < stats_capability->count; i++)
39834015
{

vslib/VirtualSwitchSaiInterface.cpp

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,13 +1011,13 @@ sai_status_t VirtualSwitchSaiInterface::queryStatsCapability(
10111011
}
10121012
else if (objectType == SAI_OBJECT_TYPE_PORT)
10131013
{
1014-
if (stats_capability->count < 51)
1014+
if (stats_capability->count < 83)
10151015
{
1016-
stats_capability->count = 51;
1016+
stats_capability->count = 83;
10171017
return SAI_STATUS_BUFFER_OVERFLOW;
10181018
}
10191019

1020-
stats_capability->count = 51;
1020+
stats_capability->count = 83;
10211021
stats_capability->list[0].stat_enum = SAI_PORT_STAT_IF_IN_OCTETS;
10221022
stats_capability->list[1].stat_enum = SAI_PORT_STAT_IF_IN_UCAST_PKTS;
10231023
stats_capability->list[2].stat_enum = SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS;
@@ -1069,7 +1069,38 @@ sai_status_t VirtualSwitchSaiInterface::queryStatsCapability(
10691069
stats_capability->list[48].stat_enum = SAI_PORT_STAT_WRED_DROPPED_PACKETS;
10701070
stats_capability->list[49].stat_enum = SAI_PORT_STAT_WRED_DROPPED_BYTES;
10711071
stats_capability->list[50].stat_enum = SAI_PORT_STAT_ECN_MARKED_PACKETS;
1072-
1072+
stats_capability->list[51].stat_enum = SAI_PORT_STAT_PFC_0_RX_PKTS;
1073+
stats_capability->list[52].stat_enum = SAI_PORT_STAT_PFC_0_TX_PKTS;
1074+
stats_capability->list[53].stat_enum = SAI_PORT_STAT_PFC_1_RX_PKTS;
1075+
stats_capability->list[54].stat_enum = SAI_PORT_STAT_PFC_1_TX_PKTS;
1076+
stats_capability->list[55].stat_enum = SAI_PORT_STAT_PFC_2_RX_PKTS;
1077+
stats_capability->list[56].stat_enum = SAI_PORT_STAT_PFC_2_TX_PKTS;
1078+
stats_capability->list[57].stat_enum = SAI_PORT_STAT_PFC_3_RX_PKTS;
1079+
stats_capability->list[58].stat_enum = SAI_PORT_STAT_PFC_3_TX_PKTS;
1080+
stats_capability->list[59].stat_enum = SAI_PORT_STAT_PFC_4_RX_PKTS;
1081+
stats_capability->list[60].stat_enum = SAI_PORT_STAT_PFC_4_TX_PKTS;
1082+
stats_capability->list[61].stat_enum = SAI_PORT_STAT_PFC_5_RX_PKTS;
1083+
stats_capability->list[62].stat_enum = SAI_PORT_STAT_PFC_5_TX_PKTS;
1084+
stats_capability->list[63].stat_enum = SAI_PORT_STAT_PFC_6_RX_PKTS;
1085+
stats_capability->list[64].stat_enum = SAI_PORT_STAT_PFC_6_TX_PKTS;
1086+
stats_capability->list[65].stat_enum = SAI_PORT_STAT_PFC_7_RX_PKTS;
1087+
stats_capability->list[66].stat_enum = SAI_PORT_STAT_PFC_7_TX_PKTS;
1088+
stats_capability->list[67].stat_enum = SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION;
1089+
stats_capability->list[68].stat_enum = SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION;
1090+
stats_capability->list[69].stat_enum = SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION;
1091+
stats_capability->list[70].stat_enum = SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION;
1092+
stats_capability->list[71].stat_enum = SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION;
1093+
stats_capability->list[72].stat_enum = SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION;
1094+
stats_capability->list[73].stat_enum = SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION;
1095+
stats_capability->list[74].stat_enum = SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION;
1096+
stats_capability->list[75].stat_enum = SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION;
1097+
stats_capability->list[76].stat_enum = SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION;
1098+
stats_capability->list[77].stat_enum = SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION;
1099+
stats_capability->list[78].stat_enum = SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION;
1100+
stats_capability->list[79].stat_enum = SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION;
1101+
stats_capability->list[80].stat_enum = SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION;
1102+
stats_capability->list[81].stat_enum = SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION;
1103+
stats_capability->list[82].stat_enum = SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION;
10731104
for(uint32_t i = 0; i < stats_capability->count; i++)
10741105
{
10751106
stats_capability->list[i].stat_modes = SAI_STATS_MODE_READ_AND_CLEAR | SAI_STATS_MODE_READ ;

0 commit comments

Comments
 (0)