summaryrefslogtreecommitdiffstats
path: root/src/stateless
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2015-10-11 10:18:01 +0200
committerimarom <imarom@cisco.com>2015-10-11 10:18:01 +0200
commit3b827c9584c28d3f1f573e372f646edfe9f5f007 (patch)
tree30b98e514bc3a827196eb5c7457af6a9563a49d6 /src/stateless
parentd7af282dc1cd629c251a937c9aa88a9a5a47030b (diff)
some DP base files
Diffstat (limited to 'src/stateless')
-rw-r--r--src/stateless/cp/trex_stateless.cpp11
-rw-r--r--src/stateless/cp/trex_stateless.h11
-rw-r--r--src/stateless/cp/trex_stateless_port.cpp13
-rw-r--r--src/stateless/dp/trex_stateless_dp_core.cpp37
-rw-r--r--src/stateless/dp/trex_stateless_dp_core.h42
5 files changed, 103 insertions, 11 deletions
diff --git a/src/stateless/cp/trex_stateless.cpp b/src/stateless/cp/trex_stateless.cpp
index 872fdd92..20e001c9 100644
--- a/src/stateless/cp/trex_stateless.cpp
+++ b/src/stateless/cp/trex_stateless.cpp
@@ -63,6 +63,9 @@ void TrexStateless::configure(const TrexStatelessCfg &cfg) {
/* cores */
instance.m_dp_core_count = cfg.m_dp_core_count;
+ for (int i = 0; i < instance.m_dp_core_count; i++) {
+ instance.m_dp_cores.push_back(new TrexStatelessDpCore(i));
+ }
/* done */
instance.m_is_configured = true;
@@ -90,12 +93,8 @@ TrexStateless::launch_control_plane() {
}
void
-TrexStateless::launch_on_dp_core() {
- //std::cout << "\n on DP core \n";
-
- while (true) {
- sleep(1);
- }
+TrexStateless::launch_on_dp_core(uint8_t core_id) {
+ m_dp_cores[core_id - 1]->run();
}
/**
diff --git a/src/stateless/cp/trex_stateless.h b/src/stateless/cp/trex_stateless.h
index 5c674fd6..ef612e84 100644
--- a/src/stateless/cp/trex_stateless.h
+++ b/src/stateless/cp/trex_stateless.h
@@ -26,6 +26,8 @@ limitations under the License.
#include <stdexcept>
#include <trex_stream.h>
+#include <trex_stateless_port.h>
+#include <trex_stateless_dp_core.h>
#include <trex_rpc_server_api.h>
/**
@@ -141,7 +143,7 @@ public:
* launch on a single DP core
*
*/
- void launch_on_dp_core();
+ void launch_on_dp_core(uint8_t core_id);
TrexStatelessPort * get_port_by_id(uint8_t port_id);
uint8_t get_port_count();
@@ -181,11 +183,12 @@ protected:
TrexRpcServer *m_rpc_server;
/* ports */
- std::vector <TrexStatelessPort *> m_ports;
- uint8_t m_port_count;
+ std::vector <TrexStatelessPort *> m_ports;
+ uint8_t m_port_count;
/* cores */
- uint8_t m_dp_core_count;
+ std::vector <TrexStatelessDpCore *> m_dp_cores;
+ uint8_t m_dp_core_count;
/* stats */
TrexStatelessStats m_stats;
diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp
index 031efb58..240b7582 100644
--- a/src/stateless/cp/trex_stateless_port.cpp
+++ b/src/stateless/cp/trex_stateless_port.cpp
@@ -22,6 +22,13 @@ limitations under the License.
#include <trex_stateless_port.h>
#include <string>
+// DPDK c++ issue
+#define UINT8_MAX 255
+#define UINT16_MAX 0xFFFF
+// DPDK c++ issue
+
+#include <rte_ethdev.h>
+
using namespace std;
/***************************
@@ -143,7 +150,11 @@ TrexStatelessPort::update_stats() {
#else
/* real update work */
- #endif
+ struct rte_eth_stats stats;
+ rte_eth_stats_get(m_port_id, &stats);
+ printf("ipackets is %u\n", stats.ipackets);
+ printf("opackets is %u\n", stats.opackets);
+ #endif
}
const TrexPortStats &
diff --git a/src/stateless/dp/trex_stateless_dp_core.cpp b/src/stateless/dp/trex_stateless_dp_core.cpp
new file mode 100644
index 00000000..4e9309ab
--- /dev/null
+++ b/src/stateless/dp/trex_stateless_dp_core.cpp
@@ -0,0 +1,37 @@
+/*
+ Itay Marom
+ Cisco Systems, Inc.
+*/
+
+/*
+Copyright (c) 2015-2015 Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+#include <trex_stateless_dp_core.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <trex_stateless.h>
+
+TrexStatelessDpCore::TrexStatelessDpCore(uint8_t core_id) : m_core_id(core_id) {
+}
+
+void
+TrexStatelessDpCore::run() {
+ printf("On DP core %d\n", m_core_id);
+ while (true) {
+ sleep(1);
+ TrexStateless::get_instance().get_port_by_id(0)->update_stats();
+ }
+}
diff --git a/src/stateless/dp/trex_stateless_dp_core.h b/src/stateless/dp/trex_stateless_dp_core.h
new file mode 100644
index 00000000..d428bac2
--- /dev/null
+++ b/src/stateless/dp/trex_stateless_dp_core.h
@@ -0,0 +1,42 @@
+/*
+ Itay Marom
+ Cisco Systems, Inc.
+*/
+
+/*
+Copyright (c) 2015-2015 Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+#ifndef __TREX_STATELESS_DP_CORE_H__
+#define __TREX_STATELESS_DP_CORE_H__
+
+#include <stdint.h>
+
+/**
+ * stateless DP core object
+ *
+ */
+class TrexStatelessDpCore {
+public:
+
+ TrexStatelessDpCore(uint8_t core_id);
+
+ /* starts the DP core run */
+ void run();
+
+private:
+ uint8_t m_core_id;
+};
+
+#endif /* __TREX_STATELESS_DP_CORE_H__ */