summaryrefslogtreecommitdiffstats
path: root/src/stateless
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-05-08 17:32:12 +0300
committerimarom <imarom@cisco.com>2016-05-09 16:48:16 +0300
commitdb9145d248720c633dd4da6c785e071198986326 (patch)
tree86e00a08895f65e2840b2bf8a921b9e9298f11a1 /src/stateless
parent75ce59e5652f9094beab854d263a850cfc81a3de (diff)
added duration to remote push
Diffstat (limited to 'src/stateless')
-rw-r--r--src/stateless/cp/trex_stateless_port.cpp10
-rw-r--r--src/stateless/cp/trex_stateless_port.h6
-rw-r--r--src/stateless/dp/trex_stateless_dp_core.cpp20
-rw-r--r--src/stateless/dp/trex_stateless_dp_core.h7
-rw-r--r--src/stateless/dp/trex_stream_node.h4
-rw-r--r--src/stateless/messaging/trex_stateless_messaging.cpp11
-rw-r--r--src/stateless/messaging/trex_stateless_messaging.h5
7 files changed, 49 insertions, 14 deletions
diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp
index aa2d43f3..360cc7d6 100644
--- a/src/stateless/cp/trex_stateless_port.cpp
+++ b/src/stateless/cp/trex_stateless_port.cpp
@@ -416,7 +416,12 @@ TrexStatelessPort::update_traffic(const TrexPortMultiplier &mul, bool force) {
}
void
-TrexStatelessPort::push_remote(const std::string &pcap_filename, double ipg_usec, double speedup, uint32_t count) {
+TrexStatelessPort::push_remote(const std::string &pcap_filename,
+ double ipg_usec,
+ double speedup,
+ uint32_t count,
+ double duration) {
+
/* command allowed only on state stream */
verify_state(PORT_STATE_IDLE | PORT_STATE_STREAMS);
@@ -449,7 +454,8 @@ TrexStatelessPort::push_remote(const std::string &pcap_filename, double ipg_usec
pcap_filename,
ipg_usec,
speedup,
- count);
+ count,
+ duration);
send_message_to_dp(tx_core, push_msg);
/* update subscribers */
diff --git a/src/stateless/cp/trex_stateless_port.h b/src/stateless/cp/trex_stateless_port.h
index ccbfad0d..8856b429 100644
--- a/src/stateless/cp/trex_stateless_port.h
+++ b/src/stateless/cp/trex_stateless_port.h
@@ -216,7 +216,11 @@ public:
* push a PCAP file onto the port
*
*/
- void push_remote(const std::string &pcap_filename, double ipg_usec, double speedup, uint32_t count);
+ void push_remote(const std::string &pcap_filename,
+ double ipg_usec,
+ double speedup,
+ uint32_t count,
+ double duration);
/**
* get the port state
diff --git a/src/stateless/dp/trex_stateless_dp_core.cpp b/src/stateless/dp/trex_stateless_dp_core.cpp
index 6450d0f9..dff5285d 100644
--- a/src/stateless/dp/trex_stateless_dp_core.cpp
+++ b/src/stateless/dp/trex_stateless_dp_core.cpp
@@ -301,7 +301,7 @@ bool TrexStatelessDpPerPort::push_pcap(uint8_t port_id,
assert(m_active_pcap_node == NULL);
m_active_pcap_node = pcap_node;
- m_state = TrexStatelessDpPerPort::ppSTATE_TRANSMITTING;
+ m_state = TrexStatelessDpPerPort::ppSTATE_PCAP_TX;
return (true);
}
@@ -898,7 +898,8 @@ TrexStatelessDpCore::push_pcap(uint8_t port_id,
const std::string &pcap_filename,
double ipg_usec,
double speedup,
- uint32_t count) {
+ uint32_t count,
+ double duration) {
TrexStatelessDpPerPort * lp_port = get_port_db(port_id);
@@ -917,13 +918,12 @@ TrexStatelessDpCore::push_pcap(uint8_t port_id,
return;
}
- m_state = TrexStatelessDpCore::STATE_TRANSMITTING;
- #if 0
- if ( duration > 0.0 ){
+ if (duration > 0.0) {
add_port_duration(duration, port_id, event_id);
}
- #endif
+
+ m_state = TrexStatelessDpCore::STATE_PCAP_TX;
}
@@ -1007,6 +1007,9 @@ bool CGenNodePCAP::create(uint8_t port_id,
m_port_id = port_id;
m_count = count;
+ /* mark this node as slow path */
+ set_slow_path(true);
+
if (ipg_usec != -1) {
/* fixed IPG */
m_ipg_sec = usec_to_sec(ipg_usec / speedup);
@@ -1046,6 +1049,11 @@ bool CGenNodePCAP::create(uint8_t port_id,
return true;
}
+/**
+ * cleanup for PCAP node
+ *
+ * @author imarom (08-May-16)
+ */
void CGenNodePCAP::destroy() {
if (m_raw_packet) {
diff --git a/src/stateless/dp/trex_stateless_dp_core.h b/src/stateless/dp/trex_stateless_dp_core.h
index 115f8873..0941f6f3 100644
--- a/src/stateless/dp/trex_stateless_dp_core.h
+++ b/src/stateless/dp/trex_stateless_dp_core.h
@@ -54,7 +54,8 @@ public:
enum state_e {
ppSTATE_IDLE,
ppSTATE_TRANSMITTING,
- ppSTATE_PAUSE
+ ppSTATE_PAUSE,
+ ppSTATE_PCAP_TX,
};
@@ -117,6 +118,7 @@ public:
enum state_e {
STATE_IDLE,
STATE_TRANSMITTING,
+ STATE_PCAP_TX,
STATE_TERMINATE
};
@@ -175,7 +177,8 @@ public:
const std::string &pcap_filename,
double ipg_usec,
double speedup,
- uint32_t count);
+ uint32_t count,
+ double duration);
/**
diff --git a/src/stateless/dp/trex_stream_node.h b/src/stateless/dp/trex_stream_node.h
index a970c1f7..bdbc5084 100644
--- a/src/stateless/dp/trex_stream_node.h
+++ b/src/stateless/dp/trex_stream_node.h
@@ -406,6 +406,10 @@ public:
double speedup,
uint32_t count);
+ /**
+ * destroy the node cleaning up any data
+ *
+ */
void destroy();
/**
diff --git a/src/stateless/messaging/trex_stateless_messaging.cpp b/src/stateless/messaging/trex_stateless_messaging.cpp
index c0151c76..1cbacb6f 100644
--- a/src/stateless/messaging/trex_stateless_messaging.cpp
+++ b/src/stateless/messaging/trex_stateless_messaging.cpp
@@ -187,7 +187,13 @@ TrexStatelessDpUpdate::clone() {
************************/
bool
TrexStatelessDpPushPCAP::handle(TrexStatelessDpCore *dp_core) {
- dp_core->push_pcap(m_port_id, m_event_id, m_pcap_filename, m_ipg_usec, m_speedup, m_count);
+ dp_core->push_pcap(m_port_id,
+ m_event_id,
+ m_pcap_filename,
+ m_ipg_usec,
+ m_speedup,
+ m_count,
+ m_duration);
return true;
}
@@ -198,7 +204,8 @@ TrexStatelessDpPushPCAP::clone() {
m_pcap_filename,
m_ipg_usec,
m_speedup,
- m_count);
+ m_count,
+ m_duration);
return new_msg;
}
diff --git a/src/stateless/messaging/trex_stateless_messaging.h b/src/stateless/messaging/trex_stateless_messaging.h
index c3de82ee..9b1f2e31 100644
--- a/src/stateless/messaging/trex_stateless_messaging.h
+++ b/src/stateless/messaging/trex_stateless_messaging.h
@@ -258,12 +258,14 @@ public:
const std::string &pcap_filename,
double ipg_usec,
double speedup,
- uint32_t count) : m_pcap_filename(pcap_filename) {
+ uint32_t count,
+ double duration) : m_pcap_filename(pcap_filename) {
m_port_id = port_id;
m_event_id = event_id;
m_ipg_usec = ipg_usec;
m_speedup = speedup;
m_count = count;
+ m_duration = duration;
}
virtual bool handle(TrexStatelessDpCore *dp_core);
@@ -275,6 +277,7 @@ private:
int m_event_id;
double m_ipg_usec;
double m_speedup;
+ double m_duration;
uint32_t m_count;
uint8_t m_port_id;
};