diff options
author | Prakash Jalan <Prakash.Jalan@Sun.COM> | 2009-03-30 12:01:03 -0700 |
---|---|---|
committer | Prakash Jalan <Prakash.Jalan@Sun.COM> | 2009-03-30 12:01:03 -0700 |
commit | 2d40c3b296fd82c4f1f14694b16f9b39d9fa0e4a (patch) | |
tree | 93932f89641f261117512ff479640f0f1dedd1d4 /usr/src/lib/libdladm | |
parent | 1a6f4459015a5e6c608d53b5942bd44755933cd5 (diff) | |
download | illumos-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.c | 17 |
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); } |