diff --git a/.gitmodules b/.gitmodules index 8c5bd9358c..1d075ba3af 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,4 +2,4 @@ path = SAI url = https://github.com/opencomputeproject/SAI.git ignore = dirty - branch = v1.2 + branch = v1.3 diff --git a/SAI b/SAI index 949cec8a15..90add5ce4c 160000 --- a/SAI +++ b/SAI @@ -1 +1 @@ -Subproject commit 949cec8a15e926239e78c92a8e57c49c9f0e3874 +Subproject commit 90add5ce4cc528d48822624eb82f46e3490f5249 diff --git a/lib/src/sai_redis_bridge.cpp b/lib/src/sai_redis_bridge.cpp index 0303a23809..4e4f5a4f1b 100644 --- a/lib/src/sai_redis_bridge.cpp +++ b/lib/src/sai_redis_bridge.cpp @@ -38,6 +38,34 @@ sai_status_t redis_get_bridge_port_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_bridge_port_stats_ext( + _In_ sai_object_id_t bridge_port_id, + _In_ uint32_t number_of_counters, + _In_ const sai_bridge_port_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + +sai_status_t redis_get_bridge_stats_ext( + _In_ sai_object_id_t bridge_id, + _In_ uint32_t number_of_counters, + _In_ const sai_bridge_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t redis_clear_bridge_port_stats( _In_ sai_object_id_t bridge_port_id, _In_ uint32_t number_of_counters, @@ -58,10 +86,12 @@ const sai_bridge_api_t redis_bridge_api = REDIS_GENERIC_QUAD_API(bridge) redis_get_bridge_stats, + redis_get_bridge_stats_ext, redis_clear_bridge_stats, REDIS_GENERIC_QUAD_API(bridge_port) redis_get_bridge_port_stats, + redis_get_bridge_port_stats_ext, redis_clear_bridge_port_stats, }; diff --git a/lib/src/sai_redis_buffer.cpp b/lib/src/sai_redis_buffer.cpp index 5d4bfa95f8..73679f2d02 100644 --- a/lib/src/sai_redis_buffer.cpp +++ b/lib/src/sai_redis_buffer.cpp @@ -12,6 +12,20 @@ sai_status_t redis_clear_ingress_priority_group_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_ingress_priority_group_stats_ext( + _In_ sai_object_id_t ingress_priority_group_id, + _In_ uint32_t number_of_counters, + _In_ const sai_ingress_priority_group_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t redis_get_buffer_pool_stats( _In_ sai_object_id_t pool_id, _In_ uint32_t number_of_counters, @@ -25,6 +39,20 @@ sai_status_t redis_get_buffer_pool_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_buffer_pool_stats_ext( + _In_ sai_object_id_t buffer_pool_id, + _In_ uint32_t number_of_counters, + _In_ const sai_buffer_pool_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t redis_clear_buffer_pool_stats( _In_ sai_object_id_t pool_id, _In_ uint32_t number_of_counters, @@ -48,11 +76,13 @@ const sai_buffer_api_t redis_buffer_api = { REDIS_GENERIC_QUAD_API(buffer_pool) redis_get_buffer_pool_stats, + redis_get_buffer_pool_stats_ext, redis_clear_buffer_pool_stats, REDIS_GENERIC_QUAD_API(ingress_priority_group) redis_get_ingress_priority_group_stats, + redis_get_ingress_priority_group_stats_ext, redis_clear_ingress_priority_group_stats, REDIS_GENERIC_QUAD_API(buffer_profile) diff --git a/lib/src/sai_redis_hostintf.cpp b/lib/src/sai_redis_hostintf.cpp index de7028e789..d23c52acf4 100644 --- a/lib/src/sai_redis_hostintf.cpp +++ b/lib/src/sai_redis_hostintf.cpp @@ -1,9 +1,9 @@ #include "sai_redis.h" sai_status_t redis_recv_hostif_packet( - _In_ sai_object_id_t hif_id, - _Out_ void *buffer, + _In_ sai_object_id_t hostif_id, _Inout_ sai_size_t *buffer_size, + _Out_ void *buffer, _Inout_ uint32_t *attr_count, _Out_ sai_attribute_t *attr_list) { @@ -15,11 +15,11 @@ sai_status_t redis_recv_hostif_packet( } sai_status_t redis_send_hostif_packet( - _In_ sai_object_id_t hif_id, - _In_ void *buffer, + _In_ sai_object_id_t hostif_id, _In_ sai_size_t buffer_size, + _In_ const void *buffer, _In_ uint32_t attr_count, - _In_ sai_attribute_t *attr_list) + _In_ const sai_attribute_t *attr_list) { MUTEX(); diff --git a/lib/src/sai_redis_policer.cpp b/lib/src/sai_redis_policer.cpp index 56e4197af3..3101f1b0b8 100644 --- a/lib/src/sai_redis_policer.cpp +++ b/lib/src/sai_redis_policer.cpp @@ -13,6 +13,20 @@ sai_status_t redis_get_policer_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_sai_get_policer_stats_ext( + _In_ sai_object_id_t policer_id, + _In_ uint32_t number_of_counters, + _In_ const sai_policer_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t redis_clear_policer_stats( _In_ sai_object_id_t policer_id, _In_ uint32_t number_of_counters, @@ -32,5 +46,6 @@ const sai_policer_api_t redis_policer_api = { REDIS_GENERIC_QUAD_API(policer) redis_get_policer_stats, + redis_sai_get_policer_stats_ext, redis_clear_policer_stats, }; diff --git a/lib/src/sai_redis_port.cpp b/lib/src/sai_redis_port.cpp index dae79038ee..33a1a6be43 100644 --- a/lib/src/sai_redis_port.cpp +++ b/lib/src/sai_redis_port.cpp @@ -12,6 +12,20 @@ sai_status_t redis_clear_port_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_port_stats_ext( + _In_ sai_object_id_t port_id, + _In_ uint32_t number_of_counters, + _In_ const sai_port_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t redis_clear_port_all_stats( _In_ sai_object_id_t port_id) { @@ -22,6 +36,20 @@ sai_status_t redis_clear_port_all_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_port_pool_stats_ext( + _In_ sai_object_id_t port_pool_id, + _In_ uint32_t number_of_counters, + _In_ const sai_port_pool_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t redis_clear_port_pool_stats( _In_ sai_object_id_t port_pool_id, _In_ uint32_t number_of_counters, @@ -46,11 +74,13 @@ const sai_port_api_t redis_port_api = { REDIS_GENERIC_QUAD_API(port) redis_get_port_stats, + redis_get_port_stats_ext, redis_clear_port_stats, redis_clear_port_all_stats, REDIS_GENERIC_QUAD_API(port_pool) redis_get_port_pool_stats, + redis_get_port_pool_stats_ext, redis_clear_port_pool_stats }; diff --git a/lib/src/sai_redis_queue.cpp b/lib/src/sai_redis_queue.cpp index d0efabce48..3d0a51f5d2 100644 --- a/lib/src/sai_redis_queue.cpp +++ b/lib/src/sai_redis_queue.cpp @@ -13,6 +13,20 @@ sai_status_t redis_clear_queue_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_queue_stats_ext( + _In_ sai_object_id_t queue_id, + _In_ uint32_t number_of_counters, + _In_ const sai_queue_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + REDIS_GENERIC_QUAD(QUEUE,queue); REDIS_GENERIC_GET_STATS(QUEUE, queue); @@ -22,5 +36,6 @@ const sai_queue_api_t redis_queue_api = { REDIS_GENERIC_QUAD_API(queue) redis_get_queue_stats, + redis_get_queue_stats_ext, redis_clear_queue_stats, }; diff --git a/lib/src/sai_redis_tunnel.cpp b/lib/src/sai_redis_tunnel.cpp index 05fdf00c60..4126a238dc 100644 --- a/lib/src/sai_redis_tunnel.cpp +++ b/lib/src/sai_redis_tunnel.cpp @@ -12,6 +12,19 @@ sai_status_t redis_clear_tunnel_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_tunnel_stats_ext( + _In_ sai_object_id_t tunnel_id, + _In_ uint32_t number_of_counters, + _In_ const sai_tunnel_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} REDIS_GENERIC_QUAD(TUNNEL_MAP,tunnel_map); REDIS_GENERIC_QUAD(TUNNEL,tunnel); @@ -25,6 +38,7 @@ const sai_tunnel_api_t redis_tunnel_api = { REDIS_GENERIC_QUAD_API(tunnel) redis_get_tunnel_stats, + redis_get_tunnel_stats_ext, redis_clear_tunnel_stats, REDIS_GENERIC_QUAD_API(tunnel_term_table_entry) diff --git a/lib/src/sai_redis_vlan.cpp b/lib/src/sai_redis_vlan.cpp index 12ab0bf740..3eaffcc8cb 100644 --- a/lib/src/sai_redis_vlan.cpp +++ b/lib/src/sai_redis_vlan.cpp @@ -42,6 +42,20 @@ sai_status_t redis_get_vlan_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t redis_get_vlan_stats_ext( + _In_ sai_object_id_t vlan_id, + _In_ uint32_t number_of_counters, + _In_ const sai_vlan_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t redis_clear_vlan_stats( _In_ sai_object_id_t vlan_id, _In_ uint32_t number_of_counters, @@ -65,5 +79,6 @@ const sai_vlan_api_t redis_vlan_api = { redis_create_vlan_members, redis_remove_vlan_members, redis_get_vlan_stats, + redis_get_vlan_stats_ext, redis_clear_vlan_stats, }; diff --git a/syncd/syncd_notifications.cpp b/syncd/syncd_notifications.cpp index e4958e8196..415d3191da 100644 --- a/syncd/syncd_notifications.cpp +++ b/syncd/syncd_notifications.cpp @@ -281,6 +281,35 @@ void process_on_fdb_event( send_notification("fdb_event", s); } +void process_on_queue_deadlock_event( + _In_ uint32_t count, + _In_ sai_queue_deadlock_notification_data_t *data) +{ + SWSS_LOG_ENTER(); + + SWSS_LOG_DEBUG("queue deadlock notification count: %u", count); + + for (uint32_t i = 0; i < count; i++) + { + sai_queue_deadlock_notification_data_t *deadlock_data = &data[i]; + + /* + * We are using switch_rid as null, since queue should be already + * defined inside local db after creation. + * + * If this will be faster than return from create queue then we can use + * query switch id and extract rid of switch id and then convert it to + * switch vid. + */ + + deadlock_data->queue_id = translate_rid_to_vid(deadlock_data->queue_id, SAI_NULL_OBJECT_ID); + } + + std::string s = sai_serialize_queue_deadlock_ntf(count, data); + + send_notification("queue_deadlock", s); +} + void process_on_port_state_change( _In_ uint32_t count, _In_ sai_port_oper_status_notification_t *data) @@ -350,6 +379,21 @@ void handle_fdb_event( sai_deserialize_free_fdb_event_ntf(count, fdbevent); } +void handle_queue_deadlock( + _In_ const std::string &data) +{ + SWSS_LOG_ENTER(); + + uint32_t count; + sai_queue_deadlock_notification_data_t *qdeadlockevent = NULL; + + sai_deserialize_queue_deadlock_ntf(data, count, &qdeadlockevent); + + process_on_queue_deadlock_event(count, qdeadlockevent); + + sai_deserialize_free_queue_deadlock_ntf(count, qdeadlockevent); +} + void handle_port_state_change( _In_ const std::string &data) { @@ -403,6 +447,10 @@ void processNotification( { handle_switch_shutdown_request(data); } + else if (notification == "queue_deadlock") + { + handle_queue_deadlock(data); + } else { SWSS_LOG_ERROR("unknow notification: %s", notification.c_str()); @@ -460,7 +508,7 @@ void on_switch_state_change( void on_fdb_event( _In_ uint32_t count, - _In_ sai_fdb_event_notification_data_t *data) + _In_ const sai_fdb_event_notification_data_t *data) { SWSS_LOG_ENTER(); @@ -469,9 +517,20 @@ void on_fdb_event( enqueue_notification("fdb_event", s); } +void on_queue_deadlock( + _In_ uint32_t count, + _In_ const sai_queue_deadlock_notification_data_t *data) +{ + SWSS_LOG_ENTER(); + + std::string s = sai_serialize_queue_deadlock_ntf(count, data); + + enqueue_notification("queue_deadlock", s); +} + void on_port_state_change( _In_ uint32_t count, - _In_ sai_port_oper_status_notification_t *data) + _In_ const sai_port_oper_status_notification_t *data) { SWSS_LOG_ENTER(); @@ -492,8 +551,8 @@ void on_switch_shutdown_request( void on_packet_event( _In_ sai_object_id_t switch_id, - _In_ const void *buffer, _In_ sai_size_t buffer_size, + _In_ const void *buffer, _In_ uint32_t attr_count, _In_ const sai_attribute_t *attr_list) { @@ -577,37 +636,6 @@ void stopNotificationsProcessingThread() ntf_process_thread = nullptr; } -void on_queue_deadlock( - _In_ uint32_t count, - _In_ sai_queue_deadlock_notification_data_t *data) -{ - std::lock_guard lock(g_mutex); - - SWSS_LOG_ENTER(); - - SWSS_LOG_DEBUG("queue deadlock notification count: %u", count); - - for (uint32_t i = 0; i < count; i++) - { - sai_queue_deadlock_notification_data_t *deadlock_data = &data[i]; - - /* - * We are using switch_rid as null, since queue should be already - * defined inside local db after creation. - * - * If this will be faster than return from create queue then we can use - * query switch id and extract rid of switch id and then convert it to - * switch vid. - */ - - deadlock_data->queue_id = translate_rid_to_vid(deadlock_data->queue_id, SAI_NULL_OBJECT_ID); - } - - std::string s = sai_serialize_queue_deadlock_ntf(count, data); - - send_notification("queue_deadlock", s); -} - sai_switch_state_change_notification_fn on_switch_state_change_ntf = on_switch_state_change; sai_switch_shutdown_request_notification_fn on_switch_shutdown_request_ntf = on_switch_shutdown_request; sai_fdb_event_notification_fn on_fdb_event_ntf = on_fdb_event; diff --git a/vslib/src/sai_vs_bridge.cpp b/vslib/src/sai_vs_bridge.cpp index bd2b94d385..a9d92368c5 100644 --- a/vslib/src/sai_vs_bridge.cpp +++ b/vslib/src/sai_vs_bridge.cpp @@ -14,6 +14,20 @@ sai_status_t vs_get_bridge_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_bridge_stats_ext( + _In_ sai_object_id_t bridge_id, + _In_ uint32_t number_of_counters, + _In_ const sai_bridge_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_clear_bridge_stats( _In_ sai_object_id_t bridge_id, _In_ uint32_t number_of_counters, @@ -39,6 +53,20 @@ sai_status_t vs_get_bridge_port_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_bridge_port_stats_ext( + _In_ sai_object_id_t bridge_port_id, + _In_ uint32_t number_of_counters, + _In_ const sai_bridge_port_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_clear_bridge_port_stats( _In_ sai_object_id_t bridge_port_id, _In_ uint32_t number_of_counters, @@ -59,10 +87,12 @@ const sai_bridge_api_t vs_bridge_api = VS_GENERIC_QUAD_API(bridge) vs_get_bridge_stats, + vs_get_bridge_stats_ext, vs_clear_bridge_stats, VS_GENERIC_QUAD_API(bridge_port) vs_get_bridge_port_stats, + vs_get_bridge_port_stats_ext, vs_clear_bridge_port_stats, }; diff --git a/vslib/src/sai_vs_buffer.cpp b/vslib/src/sai_vs_buffer.cpp index ece5bcda0f..b3866d9d53 100644 --- a/vslib/src/sai_vs_buffer.cpp +++ b/vslib/src/sai_vs_buffer.cpp @@ -13,6 +13,20 @@ sai_status_t vs_clear_ingress_priority_group_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_ingress_priority_group_stats_ext( + _In_ sai_object_id_t ingress_priority_group_id, + _In_ uint32_t number_of_counters, + _In_ const sai_ingress_priority_group_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_get_buffer_pool_stats( _In_ sai_object_id_t pool_id, _In_ uint32_t number_of_counters, @@ -26,6 +40,20 @@ sai_status_t vs_get_buffer_pool_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_buffer_pool_stats_ext( + _In_ sai_object_id_t buffer_pool_id, + _In_ uint32_t number_of_counters, + _In_ const sai_buffer_pool_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_clear_buffer_pool_stats( _In_ sai_object_id_t pool_id, _In_ uint32_t number_of_counters, @@ -49,11 +77,13 @@ const sai_buffer_api_t vs_buffer_api = { VS_GENERIC_QUAD_API(buffer_pool) vs_get_buffer_pool_stats, + vs_get_buffer_pool_stats_ext, vs_clear_buffer_pool_stats, VS_GENERIC_QUAD_API(ingress_priority_group) vs_get_ingress_priority_group_stats, + vs_get_ingress_priority_group_stats_ext, vs_clear_ingress_priority_group_stats, VS_GENERIC_QUAD_API(buffer_profile) diff --git a/vslib/src/sai_vs_hostintf.cpp b/vslib/src/sai_vs_hostintf.cpp index 44c1535429..f6e70bfed7 100644 --- a/vslib/src/sai_vs_hostintf.cpp +++ b/vslib/src/sai_vs_hostintf.cpp @@ -552,8 +552,8 @@ void process_packet_for_fdb_event( sai_status_t vs_recv_hostif_packet( _In_ sai_object_id_t hif_id, - _Out_ void *buffer, _Inout_ sai_size_t *buffer_size, + _Out_ void *buffer, _Inout_ uint32_t *attr_count, _Out_ sai_attribute_t *attr_list) { @@ -566,10 +566,10 @@ sai_status_t vs_recv_hostif_packet( sai_status_t vs_send_hostif_packet( _In_ sai_object_id_t hif_id, - _In_ void *buffer, _In_ sai_size_t buffer_size, + _In_ const void *buffer, _In_ uint32_t attr_count, - _In_ sai_attribute_t *attr_list) + _In_ const sai_attribute_t *attr_list) { MUTEX(); diff --git a/vslib/src/sai_vs_policer.cpp b/vslib/src/sai_vs_policer.cpp index 0ba459b02d..075797ae7d 100644 --- a/vslib/src/sai_vs_policer.cpp +++ b/vslib/src/sai_vs_policer.cpp @@ -14,6 +14,20 @@ sai_status_t vs_get_policer_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_sai_get_policer_stats_ext( + _In_ sai_object_id_t policer_id, + _In_ uint32_t number_of_counters, + _In_ const sai_policer_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_clear_policer_stats( _In_ sai_object_id_t policer_id, _In_ uint32_t number_of_counters, @@ -33,5 +47,6 @@ const sai_policer_api_t vs_policer_api = { VS_GENERIC_QUAD_API(policer) vs_get_policer_stats, + vs_sai_get_policer_stats_ext, vs_clear_policer_stats, }; diff --git a/vslib/src/sai_vs_port.cpp b/vslib/src/sai_vs_port.cpp index 6b91dc68f4..9ef952e34e 100644 --- a/vslib/src/sai_vs_port.cpp +++ b/vslib/src/sai_vs_port.cpp @@ -13,6 +13,20 @@ sai_status_t vs_clear_port_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_port_stats_ext( + _In_ sai_object_id_t port_id, + _In_ uint32_t number_of_counters, + _In_ const sai_port_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_clear_port_all_stats( _In_ sai_object_id_t port_id) { @@ -23,6 +37,20 @@ sai_status_t vs_clear_port_all_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_port_pool_stats_ext( + _In_ sai_object_id_t port_pool_id, + _In_ uint32_t number_of_counters, + _In_ const sai_port_pool_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_clear_port_pool_stats( _In_ sai_object_id_t port_pool_id, _In_ uint32_t number_of_counters, @@ -47,11 +75,13 @@ const sai_port_api_t vs_port_api = { VS_GENERIC_QUAD_API(port) vs_get_port_stats, + vs_get_port_stats_ext, vs_clear_port_stats, vs_clear_port_all_stats, VS_GENERIC_QUAD_API(port_pool) vs_get_port_pool_stats, + vs_get_port_pool_stats_ext, vs_clear_port_pool_stats }; diff --git a/vslib/src/sai_vs_queue.cpp b/vslib/src/sai_vs_queue.cpp index b281a8a31b..25a0d83bad 100644 --- a/vslib/src/sai_vs_queue.cpp +++ b/vslib/src/sai_vs_queue.cpp @@ -13,6 +13,20 @@ sai_status_t vs_clear_queue_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_queue_stats_ext( + _In_ sai_object_id_t queue_id, + _In_ uint32_t number_of_counters, + _In_ const sai_queue_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + VS_GENERIC_GET_STATS(QUEUE,queue); VS_GENERIC_QUAD(QUEUE,queue); @@ -22,5 +36,6 @@ const sai_queue_api_t vs_queue_api = { VS_GENERIC_QUAD_API(queue) vs_get_queue_stats, + vs_get_queue_stats_ext, vs_clear_queue_stats, }; diff --git a/vslib/src/sai_vs_tunnel.cpp b/vslib/src/sai_vs_tunnel.cpp index 3d0197022c..af3246796a 100644 --- a/vslib/src/sai_vs_tunnel.cpp +++ b/vslib/src/sai_vs_tunnel.cpp @@ -14,6 +14,19 @@ sai_status_t vs_get_tunnel_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_tunnel_stats_ext( + _In_ sai_object_id_t tunnel_id, + _In_ uint32_t number_of_counters, + _In_ const sai_tunnel_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} sai_status_t vs_clear_tunnel_stats( _In_ sai_object_id_t tunnel_id, @@ -39,6 +52,7 @@ const sai_tunnel_api_t vs_tunnel_api = { VS_GENERIC_QUAD_API(tunnel) vs_get_tunnel_stats, + vs_get_tunnel_stats_ext, vs_clear_tunnel_stats, VS_GENERIC_QUAD_API(tunnel_term_table_entry) diff --git a/vslib/src/sai_vs_vlan.cpp b/vslib/src/sai_vs_vlan.cpp index 5ca05fbd22..27ed5732d5 100644 --- a/vslib/src/sai_vs_vlan.cpp +++ b/vslib/src/sai_vs_vlan.cpp @@ -43,6 +43,20 @@ sai_status_t vs_get_vlan_stats( return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t vs_get_vlan_stats_ext( + _In_ sai_object_id_t vlan_id, + _In_ uint32_t number_of_counters, + _In_ const sai_vlan_stat_t *counter_ids, + _In_ sai_stats_mode_t mode, + _Out_ uint64_t *counters) +{ + MUTEX(); + + SWSS_LOG_ENTER(); + + return SAI_STATUS_NOT_IMPLEMENTED; +} + sai_status_t vs_clear_vlan_stats( _In_ sai_object_id_t vlan_id, _In_ uint32_t number_of_counters, @@ -66,5 +80,6 @@ const sai_vlan_api_t vs_vlan_api = { vs_create_vlan_members, vs_remove_vlan_members, vs_get_vlan_stats, + vs_get_vlan_stats_ext, vs_clear_vlan_stats, };