ip: Add violation counters to VF statisctics
Extend VFs statistics by receive and transmit violation counters.
Example: "ip -s link show dev enp5s0f0"
6: enp5s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 24:8a:07:a5:28:f0 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 2
TX: bytes packets errors dropped carrier collsns
1406 17 0 0 0 0
vf 0 MAC 00:00:ca:fe:ca:fe, vlan 5, spoof checking off, link-state auto, trust off, query_rss off
RX: bytes packets mcast bcast dropped
1666 29 14 32 0
TX: bytes packets dropped
2880 44 2412
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
parent
8b099da560
commit
8c7acf3a7a
|
|
@ -562,6 +562,9 @@ static void print_vf_stats64(FILE *fp, struct rtattr *vfstats)
|
|||
rta_getattr_u64(vf[IFLA_VF_STATS_MULTICAST]));
|
||||
print_u64(PRINT_JSON, "broadcast", NULL,
|
||||
rta_getattr_u64(vf[IFLA_VF_STATS_BROADCAST]));
|
||||
if (vf[IFLA_VF_STATS_RX_DROPPED])
|
||||
print_u64(PRINT_JSON, "dropped", NULL,
|
||||
rta_getattr_u64(vf[IFLA_VF_STATS_RX_DROPPED]));
|
||||
close_json_object();
|
||||
|
||||
/* TX stats */
|
||||
|
|
@ -570,26 +573,39 @@ static void print_vf_stats64(FILE *fp, struct rtattr *vfstats)
|
|||
rta_getattr_u64(vf[IFLA_VF_STATS_TX_BYTES]));
|
||||
print_u64(PRINT_JSON, "tx_packets", NULL,
|
||||
rta_getattr_u64(vf[IFLA_VF_STATS_TX_PACKETS]));
|
||||
if (vf[IFLA_VF_STATS_TX_DROPPED])
|
||||
print_u64(PRINT_JSON, "dropped", NULL,
|
||||
rta_getattr_u64(vf[IFLA_VF_STATS_TX_DROPPED]));
|
||||
close_json_object();
|
||||
close_json_object();
|
||||
} else {
|
||||
/* RX stats */
|
||||
fprintf(fp, "%s", _SL_);
|
||||
fprintf(fp, " RX: bytes packets mcast bcast %s", _SL_);
|
||||
fprintf(fp, " RX: bytes packets mcast bcast ");
|
||||
if (vf[IFLA_VF_STATS_RX_DROPPED])
|
||||
fprintf(fp, " dropped ");
|
||||
fprintf(fp, "%s", _SL_);
|
||||
fprintf(fp, " ");
|
||||
|
||||
print_num(fp, 10, rta_getattr_u64(vf[IFLA_VF_STATS_RX_BYTES]));
|
||||
print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_RX_PACKETS]));
|
||||
print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_MULTICAST]));
|
||||
print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_BROADCAST]));
|
||||
if (vf[IFLA_VF_STATS_RX_DROPPED])
|
||||
print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_RX_DROPPED]));
|
||||
|
||||
/* TX stats */
|
||||
fprintf(fp, "%s", _SL_);
|
||||
fprintf(fp, " TX: bytes packets %s", _SL_);
|
||||
fprintf(fp, " TX: bytes packets ");
|
||||
if (vf[IFLA_VF_STATS_TX_DROPPED])
|
||||
fprintf(fp, " dropped ");
|
||||
fprintf(fp, "%s", _SL_);
|
||||
fprintf(fp, " ");
|
||||
|
||||
print_num(fp, 10, rta_getattr_u64(vf[IFLA_VF_STATS_TX_BYTES]));
|
||||
print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_TX_PACKETS]));
|
||||
if (vf[IFLA_VF_STATS_TX_DROPPED])
|
||||
print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_TX_DROPPED]));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue