MCPcopy Create free account
hub / github.com/F-Stack/f-stack / nic_stats_display

Function nic_stats_display

dpdk/app/test-pmd/config.c:276–357  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

274}
275
276void
277nic_stats_display(portid_t port_id)
278{
279 static uint64_t prev_pkts_rx[RTE_MAX_ETHPORTS];
280 static uint64_t prev_pkts_tx[RTE_MAX_ETHPORTS];
281 static uint64_t prev_bytes_rx[RTE_MAX_ETHPORTS];
282 static uint64_t prev_bytes_tx[RTE_MAX_ETHPORTS];
283 static uint64_t prev_ns[RTE_MAX_ETHPORTS];
284 struct timespec cur_time;
285 uint64_t diff_pkts_rx, diff_pkts_tx, diff_bytes_rx, diff_bytes_tx,
286 diff_ns;
287 uint64_t mpps_rx, mpps_tx, mbps_rx, mbps_tx;
288 struct rte_eth_stats stats;
289 static const char *nic_stats_border = "########################";
290 int ret;
291
292 if (port_id_is_invalid(port_id, ENABLED_WARN)) {
293 print_valid_ports();
294 return;
295 }
296 ret = rte_eth_stats_get(port_id, &stats);
297 if (ret != 0) {
298 fprintf(stderr,
299 "%s: Error: failed to get stats (port %u): %d",
300 __func__, port_id, ret);
301 return;
302 }
303 printf("\n %s NIC statistics for port %-2d %s\n",
304 nic_stats_border, port_id, nic_stats_border);
305
306 printf(" RX-packets: %-10"PRIu64" RX-missed: %-10"PRIu64" RX-bytes: "
307 "%-"PRIu64"\n", stats.ipackets, stats.imissed, stats.ibytes);
308 printf(" RX-errors: %-"PRIu64"\n", stats.ierrors);
309 printf(" RX-nombuf: %-10"PRIu64"\n", stats.rx_nombuf);
310 printf(" TX-packets: %-10"PRIu64" TX-errors: %-10"PRIu64" TX-bytes: "
311 "%-"PRIu64"\n", stats.opackets, stats.oerrors, stats.obytes);
312
313 diff_ns = 0;
314 if (clock_gettime(CLOCK_TYPE_ID, &cur_time) == 0) {
315 uint64_t ns;
316
317 ns = cur_time.tv_sec * NS_PER_SEC;
318 ns += cur_time.tv_nsec;
319
320 if (prev_ns[port_id] != 0)
321 diff_ns = ns - prev_ns[port_id];
322 prev_ns[port_id] = ns;
323 }
324
325 diff_pkts_rx = (stats.ipackets > prev_pkts_rx[port_id]) ?
326 (stats.ipackets - prev_pkts_rx[port_id]) : 0;
327 diff_pkts_tx = (stats.opackets > prev_pkts_tx[port_id]) ?
328 (stats.opackets - prev_pkts_tx[port_id]) : 0;
329 prev_pkts_rx[port_id] = stats.ipackets;
330 prev_pkts_tx[port_id] = stats.opackets;
331 mpps_rx = diff_ns > 0 ?
332 (double)diff_pkts_rx / diff_ns * NS_PER_SEC : 0;
333 mpps_tx = diff_ns > 0 ?

Callers 3

print_statsFunction · 0.70
cmd_showportall_parsedFunction · 0.70
cmd_showport_parsedFunction · 0.70

Calls 5

port_id_is_invalidFunction · 0.85
print_valid_portsFunction · 0.85
rte_eth_stats_getFunction · 0.85
printfFunction · 0.50

Tested by 1

print_statsFunction · 0.56