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;
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();
/* 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);
*/
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)
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;