summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/rpc-server/commands/trex_rpc_cmd_general.cpp4
-rw-r--r--src/rpc-server/commands/trex_rpc_cmd_stream.cpp15
-rw-r--r--src/stateless/cp/trex_stateless_port.cpp3
-rw-r--r--src/stateless/cp/trex_stateless_port.h14
4 files changed, 31 insertions, 5 deletions
diff --git a/src/rpc-server/commands/trex_rpc_cmd_general.cpp b/src/rpc-server/commands/trex_rpc_cmd_general.cpp
index 6ac88352..9b3b59a7 100644
--- a/src/rpc-server/commands/trex_rpc_cmd_general.cpp
+++ b/src/rpc-server/commands/trex_rpc_cmd_general.cpp
@@ -178,6 +178,10 @@ TrexRpcCmdGetSysInfo::_run(const Json::Value &params, Json::Value &result) {
section["ports"][i]["driver"] = driver;
+ section["ports"][i]["rx"]["caps"] = port->get_rx_caps();
+ section["ports"][i]["rx"]["counters"] = port->get_rx_count_num();
+
+
switch (speed) {
case TrexPlatformApi::SPEED_1G:
section["ports"][i]["speed"] = 1;
diff --git a/src/rpc-server/commands/trex_rpc_cmd_stream.cpp b/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
index 984c3f8e..86759f99 100644
--- a/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
+++ b/src/rpc-server/commands/trex_rpc_cmd_stream.cpp
@@ -105,18 +105,23 @@ TrexRpcCmdAddStream::_run(const Json::Value &params, Json::Value &result) {
stream->m_rx_check.m_enabled = parse_bool(rx, "enabled", result);
+ TrexStatelessPort *port = get_stateless_obj()->get_port_by_id(stream->m_port_id);
+
/* if it is enabled - we need more fields */
if (stream->m_rx_check.m_enabled) {
- stream->m_rx_check.m_user_id = parse_int(rx, "stream_id", result);
- stream->m_rx_check.m_seq_enabled = parse_bool(rx, "seq_enabled", result);
- stream->m_rx_check.m_latency = parse_bool(rx, "latency_enabled", result);
+
+ if (port->get_rx_caps() == 0) {
+ generate_parse_err(result, "RX stats is not supported on this interface");
+ }
+
+ stream->m_rx_check.m_user_id = parse_int(rx, "stream_id", result);
+ stream->m_rx_check.m_seq_enabled = parse_bool(rx, "seq_enabled", result);
+ stream->m_rx_check.m_latency = parse_bool(rx, "latency_enabled", result);
}
/* make sure this is a valid stream to add */
validate_stream(stream, result);
- TrexStatelessPort *port = get_stateless_obj()->get_port_by_id(stream->m_port_id);
-
try {
port->add_stream(stream.get());
stream.release();
diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp
index 88c38112..d2463925 100644
--- a/src/stateless/cp/trex_stateless_port.cpp
+++ b/src/stateless/cp/trex_stateless_port.cpp
@@ -61,6 +61,9 @@ TrexStatelessPort::TrexStatelessPort(uint8_t port_id, const TrexPlatformApi *api
/* get the platform specific data */
api->get_interface_info(port_id, m_driver_name, m_speed, m_has_crc);
+ /* get RX caps */
+ api->get_interface_stat_info(port_id, m_rx_count_num, m_rx_caps);
+
/* get the DP cores belonging to this port */
api->port_id_to_cores(m_port_id, core_pair_list);
diff --git a/src/stateless/cp/trex_stateless_port.h b/src/stateless/cp/trex_stateless_port.h
index 434181c4..a956c421 100644
--- a/src/stateless/cp/trex_stateless_port.h
+++ b/src/stateless/cp/trex_stateless_port.h
@@ -284,6 +284,18 @@ public:
uint64_t get_port_speed_bps() const;
/**
+ * return RX caps
+ *
+ */
+ int get_rx_caps() const {
+ return m_rx_caps;
+ }
+
+ uint16_t get_rx_count_num() const {
+ return m_rx_count_num;
+ }
+
+ /**
* return true if port adds CRC to a packet (not occurs for
* VNICs)
*
@@ -376,6 +388,8 @@ private:
port_state_e m_port_state;
std::string m_driver_name;
bool m_has_crc;
+ uint16_t m_rx_count_num;
+ uint16_t m_rx_caps;
TrexPlatformApi::driver_speed_e m_speed;