mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-12-29 07:10:26 +00:00
Add displaying VF traffic statistics
Enable reading and displaying SRIOV VFs traffic statistics through the host PF netdevice using the nested IFLA_VF_STATS attribute. Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
This commit is contained in:
parent
f638e9f7c8
commit
a1b99717c7
@ -287,6 +287,8 @@ static void print_af_spec(FILE *fp, struct rtattr *af_spec_attr)
|
||||
}
|
||||
}
|
||||
|
||||
static void print_vf_stats64(FILE *fp, struct rtattr *vfstats);
|
||||
|
||||
static void print_vfinfo(FILE *fp, struct rtattr *vfinfo)
|
||||
{
|
||||
struct ifla_vf_mac *vf_mac;
|
||||
@ -367,6 +369,8 @@ static void print_vfinfo(FILE *fp, struct rtattr *vfinfo)
|
||||
else
|
||||
fprintf(fp, ", link-state disable");
|
||||
}
|
||||
if (vf[IFLA_VF_STATS] && show_stats)
|
||||
print_vf_stats64(fp, vf[IFLA_VF_STATS]);
|
||||
}
|
||||
|
||||
static void print_num(FILE *fp, unsigned width, uint64_t count)
|
||||
@ -408,6 +412,36 @@ static void print_num(FILE *fp, unsigned width, uint64_t count)
|
||||
fprintf(fp, "%-*s ", width, buf);
|
||||
}
|
||||
|
||||
static void print_vf_stats64(FILE *fp, struct rtattr *vfstats)
|
||||
{
|
||||
struct rtattr *vf[IFLA_VF_STATS_MAX + 1] = {};
|
||||
|
||||
if (vfstats->rta_type != IFLA_VF_STATS) {
|
||||
fprintf(stderr, "BUG: rta type is %d\n", vfstats->rta_type);
|
||||
return;
|
||||
}
|
||||
|
||||
parse_rtattr_nested(vf, IFLA_VF_MAX, vfstats);
|
||||
|
||||
/* RX stats */
|
||||
fprintf(fp, "%s", _SL_);
|
||||
fprintf(fp, " RX: bytes packets mcast bcast %s", _SL_);
|
||||
fprintf(fp, " ");
|
||||
|
||||
print_num(fp, 10, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_RX_BYTES]));
|
||||
print_num(fp, 8, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_RX_PACKETS]));
|
||||
print_num(fp, 7, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_MULTICAST]));
|
||||
print_num(fp, 7, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_BROADCAST]));
|
||||
|
||||
/* TX stats */
|
||||
fprintf(fp, "%s", _SL_);
|
||||
fprintf(fp, " TX: bytes packets %s", _SL_);
|
||||
fprintf(fp, " ");
|
||||
|
||||
print_num(fp, 10, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_TX_BYTES]));
|
||||
print_num(fp, 8, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_TX_PACKETS]));
|
||||
}
|
||||
|
||||
static void print_link_stats64(FILE *fp, const struct rtnl_link_stats64 *s,
|
||||
const struct rtattr *carrier_changes)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user