summaryrefslogtreecommitdiffstats
path: root/src/stateless/dp/trex_stream_node.h
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2015-11-24 11:54:58 +0200
committerimarom <imarom@cisco.com>2015-11-24 11:54:58 +0200
commitac6f8e7c7c4e957a31c19c1fe4a0997009c6e733 (patch)
tree721101231fb692fed6028b21628cb861f3c64019 /src/stateless/dp/trex_stream_node.h
parent161a85c57c3d2a165e4fa94140d67db05714a7d3 (diff)
parent1e1c11059b7f7fcb5c160dffe2df832a8adf719d (diff)
Merge branch 'master' of csi-sceasr-b45:/auto/proj-pcube-b/apps/PL-b/tools/repo//trex-core
Diffstat (limited to 'src/stateless/dp/trex_stream_node.h')
-rw-r--r--src/stateless/dp/trex_stream_node.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/stateless/dp/trex_stream_node.h b/src/stateless/dp/trex_stream_node.h
index 1e53887b..ccf99eaa 100644
--- a/src/stateless/dp/trex_stream_node.h
+++ b/src/stateless/dp/trex_stream_node.h
@@ -29,6 +29,7 @@ class TrexStatelessDpCore;
#include <trex_stream.h>
class TrexStatelessCpToDpMsgBase;
+class CFlowGenListPerThread;
struct CGenNodeCommand : public CGenNodeBase {
@@ -47,6 +48,7 @@ public:
static_assert(sizeof(CGenNodeCommand) == sizeof(CGenNode), "sizeof(CGenNodeCommand) != sizeof(CGenNode)" );
+
/* this is a event for stateless */
struct CGenNodeStateless : public CGenNodeBase {
friend class TrexStatelessDpCore;
@@ -73,7 +75,7 @@ private:
stream_state_t m_state;
uint8_t m_port_id;
uint8_t m_stream_type; /* see TrexStream::STREAM_TYPE ,stream_type_t */
- uint8_t m_pad;
+ uint8_t m_pause;
uint32_t m_single_burst; /* the number of bursts in case of burst */
uint32_t m_single_burst_refill;
@@ -111,7 +113,18 @@ public:
/* only to be safe */
m_ref_stream_info= NULL;
m_next_stream= NULL;
+ }
+ bool is_pause(){
+ return (m_pause==1?true:false);
+ }
+
+ void set_pause(bool enable){
+ if ( enable ){
+ m_pause=1;
+ }else{
+ m_pause=0;
+ }
}
inline uint8_t get_stream_type(){
@@ -142,7 +155,10 @@ public:
void refresh();
inline void handle_continues(CFlowGenListPerThread *thread) {
- thread->m_node_gen.m_v_if->send_node( (CGenNode *)this);
+
+ if (unlikely (is_pause()==false)) {
+ thread->m_node_gen.m_v_if->send_node( (CGenNode *)this);
+ }
/* in case of continues */
m_time += m_next_time_offset;