diff options
author | imarom <imarom@cisco.com> | 2015-10-11 10:18:01 +0200 |
---|---|---|
committer | imarom <imarom@cisco.com> | 2015-10-11 10:18:01 +0200 |
commit | 3b827c9584c28d3f1f573e372f646edfe9f5f007 (patch) | |
tree | 30b98e514bc3a827196eb5c7457af6a9563a49d6 /src | |
parent | d7af282dc1cd629c251a937c9aa88a9a5a47030b (diff) |
some DP base files
Diffstat (limited to 'src')
-rwxr-xr-x | src/main_dpdk.cpp | 2 | ||||
-rw-r--r-- | src/stateless/cp/trex_stateless.cpp | 11 | ||||
-rw-r--r-- | src/stateless/cp/trex_stateless.h | 11 | ||||
-rw-r--r-- | src/stateless/cp/trex_stateless_port.cpp | 13 | ||||
-rw-r--r-- | src/stateless/dp/trex_stateless_dp_core.cpp | 37 | ||||
-rw-r--r-- | src/stateless/dp/trex_stateless_dp_core.h | 42 |
6 files changed, 104 insertions, 12 deletions
diff --git a/src/main_dpdk.cpp b/src/main_dpdk.cpp index e3d13f2b..36d5052e 100755 --- a/src/main_dpdk.cpp +++ b/src/main_dpdk.cpp @@ -4215,7 +4215,7 @@ static int stateless_entry(__attribute__((unused)) void *dummy) { if (lpsock->thread_phy_is_master( phy_id )) { TrexStateless::get_instance().launch_control_plane(); } else { - TrexStateless::get_instance().launch_on_dp_core(); + TrexStateless::get_instance().launch_on_dp_core(phy_id); } return (0); 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__ */ |