From b001650c7de2f6c10bad6c4365bef4106bbaedfc Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 29 Aug 2007 13:35:15 +0000 Subject: [PATCH] Wed Aug 29 14:43:00 BST 2007 Richard W.M. Jones * src/xen_internal.c (xenHypervisorDomainInterfaceStats): Swap TX & RX network stats so they appear correct from the point of view of the domain. --- ChangeLog | 6 ++++++ src/xen_internal.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 506bfa76a8..2f607ff183 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Aug 29 14:43:00 BST 2007 Richard W.M. Jones + + * src/xen_internal.c (xenHypervisorDomainInterfaceStats): Swap + TX & RX network stats so they appear correct from the point + of view of the domain. + Wed Aug 29 09:46:17 CEST 2007 Daniel Veillard * src/virsh.c: apply patch from Masayuki Sunou to fix the exit value diff --git a/src/xen_internal.c b/src/xen_internal.c index ebba04de25..148e731b51 100644 --- a/src/xen_internal.c +++ b/src/xen_internal.c @@ -1424,11 +1424,17 @@ xenHypervisorDomainInterfaceStats (virDomainPtr dom, long long tx_errs; long long tx_drop; + /* IMPORTANT NOTE! + * /proc/net/dev vif.nn sees the network from the point + * of view of dom0 / hypervisor. So bytes TRANSMITTED by dom0 + * are bytes RECEIVED by the domain. That's why the TX/RX fields + * appear to be swapped here. + */ if (sscanf (line, "vif%d.%d: %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld %lld", &domid, &port, - &rx_bytes, &rx_packets, &rx_errs, &rx_drop, - &dummy, &dummy, &dummy, &dummy, &tx_bytes, &tx_packets, &tx_errs, &tx_drop, + &dummy, &dummy, &dummy, &dummy, + &rx_bytes, &rx_packets, &rx_errs, &rx_drop, &dummy, &dummy, &dummy, &dummy) != 18) continue;