validate_type('total', total, bool)
validate_type('core_mask', core_mask, (int, list))
+ # verify link status
+ ports_link_down = [port_id for port_id in ports if self.ports[port_id].attr.get('link',{}).get('up') == False]
+ if not force and ports_link_down:
+ raise STLError("Port(s) %s - link DOWN - check the connection or specify 'force'" % ports_link_down)
+
#########################
# decode core mask argument
decoded_mask = self.__decode_core_mask(ports, core_mask)
"--": "",
"---": "",
"link speed": "{speed} Gb/s".format(speed=info['speed']),
- "status": info['status'],
- "link": info['link'],
+ "port status": info['status'],
+ "link status": info['link'],
"promiscuous" : info['prom'],
"flow ctrl" : info['fc'],
}
def _generate_latency_stats(self):
lat_stats = self._latency_stats_ref
- latency_window_size = 10
+ latency_window_size = 14
# for TUI - maximum 5
pg_ids = list(filter(is_intable, lat_stats.latest_stats.keys()))[:5]
stats_table.set_cols_width([10, 3, 6] + [3] * (show_len - 1))
stats_table.set_cols_dtype(['t'] * (show_len + 2))
- for i in range(min(14, len(cpu_stats))):
+ for i in range(min(18, len(cpu_stats))):
history = cpu_stats[i]["history"]
ports = cpu_stats[i]["ports"]
avg = int(round(sum(history[:avg_len]) / avg_len))
return_stats_data = {}
per_field_status = OrderedDict([("driver", []),
("description", []),
+ ("link status", []),
("link speed", []),
- ("link", []),
- ("status", []),
+ ("port status", []),
("promiscuous", []),
("flow ctrl", []),
("--", []),
/* on start - we can only provide absolute values */
assert(mul.m_op == TrexPortMultiplier::OP_ABS);
+ /* check link state */
+ if ( !platform_api->getPortAttrObj()->is_link_up(m_port_id) && !force ) {
+ throw TrexException("Link state is DOWN.");
+ }
+
/* caclulate the effective factor for DP */
double factor = calculate_effective_factor(mul, force);
- /* zero factor */
- if (factor == 0) {
- throw TrexException("Zero multiplier, nothing to send.");
- }
-
StreamsFeeder feeder(this);
/* compiler it */
throw TrexException(ss.str());
}
+ /* L1 BW must be positive */
+ if (expected_l1_rate <= 0){
+ stringstream ss;
+ ss << "Effective bandwidth must be positive, got: " << expected_l1_rate;
+ throw TrexException(ss.str());
+ }
+
+ /* factor must be positive */
+ if (factor <= 0) {
+ stringstream ss;
+ ss << "Factor must be positive, got: " << factor;
+ throw TrexException(ss.str());
+ }
+
return factor;
}