summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdladm
diff options
context:
space:
mode:
authorPrakash Jalan <Prakash.Jalan@Sun.COM>2009-03-30 12:01:03 -0700
committerPrakash Jalan <Prakash.Jalan@Sun.COM>2009-03-30 12:01:03 -0700
commit2d40c3b296fd82c4f1f14694b16f9b39d9fa0e4a (patch)
tree93932f89641f261117512ff479640f0f1dedd1d4 /usr/src/lib/libdladm
parent1a6f4459015a5e6c608d53b5942bd44755933cd5 (diff)
downloadillumos-joyent-2d40c3b296fd82c4f1f14694b16f9b39d9fa0e4a.tar.gz
6658066 dladm show-aggr -s -i 1 outputs incorrect value
6797838 counters in the output of dladm show-aggr -s -i <interval> increases monotonically 6799340 typo in print_aggr_stats_callback() gives wrong stats 6799349 stats by 'dladm show-aggr -s -i <intvl>' overshoot the columns when a new link is added to the aggr
Diffstat (limited to 'usr/src/lib/libdladm')
-rw-r--r--usr/src/lib/libdladm/common/libdlstat.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/usr/src/lib/libdladm/common/libdlstat.c b/usr/src/lib/libdladm/common/libdlstat.c
index 53d4f9cedf..880a2edd57 100644
--- a/usr/src/lib/libdladm/common/libdlstat.c
+++ b/usr/src/lib/libdladm/common/libdlstat.c
@@ -677,15 +677,18 @@ dladm_stats_total(pktsum_t *s1, pktsum_t *s2, pktsum_t *s3)
s1->snaptime = s2->snaptime;
}
+#define DIFF_STAT(s2, s3) ((s2) > (s3) ? (s2 - s3) : 0)
+
+
/* Compute differences between 2 pktsums (s1 = s2 - s3) */
void
dladm_stats_diff(pktsum_t *s1, pktsum_t *s2, pktsum_t *s3)
{
- s1->rbytes = s2->rbytes - s3->rbytes;
- s1->ipackets = s2->ipackets - s3->ipackets;
- s1->ierrors = s2->ierrors - s3->ierrors;
- s1->obytes = s2->obytes - s3->obytes;
- s1->opackets = s2->opackets - s3->opackets;
- s1->oerrors = s2->oerrors - s3->oerrors;
- s1->snaptime = s2->snaptime - s3->snaptime;
+ s1->rbytes = DIFF_STAT(s2->rbytes, s3->rbytes);
+ s1->ipackets = DIFF_STAT(s2->ipackets, s3->ipackets);
+ s1->ierrors = DIFF_STAT(s2->ierrors, s3->ierrors);
+ s1->obytes = DIFF_STAT(s2->obytes, s3->obytes);
+ s1->opackets = DIFF_STAT(s2->opackets, s3->opackets);
+ s1->oerrors = DIFF_STAT(s2->oerrors, s3->oerrors);
+ s1->snaptime = DIFF_STAT(s2->snaptime, s3->snaptime);
}