From 60fbd456c4d804adc903839f916c9c2bbe272d94 Mon Sep 17 00:00:00 2001 From: imarom Date: Tue, 8 Mar 2016 09:20:02 +0200 Subject: RX stats - major refactor --- src/sim/trex_sim.h | 2 ++ src/sim/trex_sim_stateless.cpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) (limited to 'src/sim') diff --git a/src/sim/trex_sim.h b/src/sim/trex_sim.h index 59184b75..5aeeb226 100644 --- a/src/sim/trex_sim.h +++ b/src/sim/trex_sim.h @@ -149,7 +149,9 @@ private: uint64_t &simulated_pkts, uint64_t &written_pkts); + void cleanup(); void flush_dp_to_cp_messages_core(int core_index); + void flush_cp_to_dp_messages_core(int core_index); void validate_response(const Json::Value &resp); diff --git a/src/sim/trex_sim_stateless.cpp b/src/sim/trex_sim_stateless.cpp index 87c61ae2..ffe377f4 100644 --- a/src/sim/trex_sim_stateless.cpp +++ b/src/sim/trex_sim_stateless.cpp @@ -347,6 +347,10 @@ SimStateless::run_dp(const std::string &out_filename) { } } + /* cleanup */ + cleanup(); + + std::cout << "\n\nSimulation summary:\n"; std::cout << "-------------------\n\n"; std::cout << "simulated " << simulated_pkts_cnt << " packets\n"; @@ -360,6 +364,18 @@ SimStateless::run_dp(const std::string &out_filename) { std::cout << "\n"; } +void +SimStateless::cleanup() { + + for (int port_id = 0; port_id < get_stateless_obj()->get_port_count(); port_id++) { + get_stateless_obj()->get_port_by_id(port_id)->stop_traffic(); + get_stateless_obj()->get_port_by_id(port_id)->remove_and_delete_all_streams(); + } + for (int i = 0; i < m_dp_core_count; i++) { + flush_cp_to_dp_messages_core(i); + flush_dp_to_cp_messages_core(i); + } +} uint64_t SimStateless::get_limit_per_core(int core_index) { @@ -418,6 +434,23 @@ SimStateless::flush_dp_to_cp_messages_core(int core_index) { } } +void +SimStateless::flush_cp_to_dp_messages_core(int core_index) { + + CNodeRing *ring = CMsgIns::Ins()->getCpDp()->getRingCpToDp(core_index); + + while ( true ) { + CGenNode * node = NULL; + if (ring->Dequeue(node) != 0) { + break; + } + assert(node); + + TrexStatelessCpToDpMsgBase * msg = (TrexStatelessCpToDpMsgBase *)node; + delete msg; + } +} + bool SimStateless::should_capture_core(int i) { -- cgit 1.2.3-korg