aboutsummaryrefslogtreecommitdiffstats
path: root/src/vpp-api/vom/interface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vpp-api/vom/interface.cpp')
-rw-r--r--src/vpp-api/vom/interface.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/vpp-api/vom/interface.cpp b/src/vpp-api/vom/interface.cpp
index 435002a1067..262d9eaf7b6 100644
--- a/src/vpp-api/vom/interface.cpp
+++ b/src/vpp-api/vom/interface.cpp
@@ -169,6 +169,10 @@ interface::sweep()
}
if (m_stats) {
+ if (stats_type_t::DETAILED == m_stats_type) {
+ HW::enqueue(new interface_cmds::collect_detail_stats_change_cmd(
+ m_stats_type, handle_i(), false));
+ }
HW::enqueue(new interface_cmds::stats_disable_cmd(m_hdl.data()));
m_stats.reset();
}
@@ -198,6 +202,18 @@ interface::replay()
HW::enqueue(new interface_cmds::state_change_cmd(m_state, m_hdl));
}
+ if (m_stats) {
+ if (stats_type_t::DETAILED == m_stats_type) {
+ m_stats_type.set(rc_t::NOOP);
+ HW::enqueue(new interface_cmds::collect_detail_stats_change_cmd(
+ m_stats_type, handle_i(), true));
+ }
+ stat_listener& listener = m_stats->listener();
+ listener.status().set(rc_t::NOOP);
+ m_stats.reset(new interface_cmds::stats_enable_cmd(listener, handle_i()));
+ HW::enqueue(m_stats);
+ }
+
if (m_table_id && (m_table_id.data() != route::DEFAULT_TABLE)) {
HW::enqueue(
new interface_cmds::set_table_cmd(m_table_id, l3_proto_t::IPV4, m_hdl));