@@ -4109,6 +4109,35 @@ sai_status_t SwitchStateBase::queryAttributeCapability(
41094109 return SAI_STATUS_SUCCESS;
41104110}
41114111
4112+ sai_status_t SwitchStateBase::querySwitchStatsCapability (
4113+ _Inout_ sai_stat_capability_list_t *stats_capability)
4114+ {
4115+ SWSS_LOG_ENTER ();
4116+
4117+ static std::vector<sai_switch_stat_t > switchStatList = {
4118+ SAI_SWITCH_STAT_ECC_DROP,
4119+ SAI_SWITCH_STAT_PACKET_INTEGRITY_DROP,
4120+ SAI_SWITCH_STAT_DROPPED_TRIM_PACKETS,
4121+ SAI_SWITCH_STAT_TX_TRIM_PACKETS
4122+ };
4123+
4124+ if (stats_capability->count < switchStatList.size ())
4125+ {
4126+ stats_capability->count = static_cast <uint32_t >(switchStatList.size ());
4127+ return SAI_STATUS_BUFFER_OVERFLOW;
4128+ }
4129+
4130+ stats_capability->count = static_cast <uint32_t >(switchStatList.size ());
4131+
4132+ for (std::uint32_t i = 0 ; i < switchStatList.size (); i++)
4133+ {
4134+ stats_capability->list [i].stat_modes = SAI_STATS_MODE_READ_AND_CLEAR | SAI_STATS_MODE_READ;
4135+ stats_capability->list [i].stat_enum = static_cast <sai_stat_id_t >(switchStatList.at (i));
4136+ }
4137+
4138+ return SAI_STATUS_SUCCESS;
4139+ }
4140+
41124141sai_status_t SwitchStateBase::queryPortStatsCapability (
41134142 _Inout_ sai_stat_capability_list_t *stats_capability)
41144143{
@@ -4206,7 +4235,9 @@ sai_status_t SwitchStateBase::queryPortStatsCapability(
42064235 SAI_PORT_STAT_PFC_5_ON2OFF_RX_PKTS,
42074236 SAI_PORT_STAT_PFC_6_ON2OFF_RX_PKTS,
42084237 SAI_PORT_STAT_PFC_7_ON2OFF_RX_PKTS,
4209- SAI_PORT_STAT_TRIM_PACKETS
4238+ SAI_PORT_STAT_TRIM_PACKETS,
4239+ SAI_PORT_STAT_DROPPED_TRIM_PACKETS,
4240+ SAI_PORT_STAT_TX_TRIM_PACKETS
42104241 };
42114242
42124243 if (stats_capability->count < portStatList.size ())
@@ -4245,7 +4276,9 @@ sai_status_t SwitchStateBase::queryQueueStatsCapability(
42454276 SAI_QUEUE_STAT_CURR_OCCUPANCY_LEVEL,
42464277 SAI_QUEUE_STAT_WATERMARK_LEVEL,
42474278 SAI_QUEUE_STAT_CREDIT_WD_DELETED_PACKETS,
4248- SAI_QUEUE_STAT_TRIM_PACKETS
4279+ SAI_QUEUE_STAT_TRIM_PACKETS,
4280+ SAI_QUEUE_STAT_DROPPED_TRIM_PACKETS,
4281+ SAI_QUEUE_STAT_TX_TRIM_PACKETS
42494282 };
42504283
42514284 if (stats_capability->count < queueStatList.size ())
@@ -4272,7 +4305,11 @@ sai_status_t SwitchStateBase::queryStatsCapability(
42724305{
42734306 SWSS_LOG_ENTER ();
42744307
4275- if (objectType == SAI_OBJECT_TYPE_QUEUE)
4308+ if (objectType == SAI_OBJECT_TYPE_SWITCH)
4309+ {
4310+ return querySwitchStatsCapability (stats_capability);
4311+ }
4312+ else if (objectType == SAI_OBJECT_TYPE_QUEUE)
42764313 {
42774314 return queryQueueStatsCapability (stats_capability);
42784315 }
0 commit comments