diff options
author | Luotao Fu <l.fu@pengutronix.de> | 2010-04-30 16:00:21 +0200 |
---|---|---|
committer | Luotao Fu <l.fu@pengutronix.de> | 2010-04-30 16:00:21 +0200 |
commit | f4be322d2d4185e4cf79870c8f7905a68713bf2a (patch) | |
tree | 979941b15d36579801057f039f0d7df32a5f94f4 | |
parent | 5b3335125c920294e0e40dc9ad0a3e9f2035c849 (diff) | |
download | canutils-f4be322d2d4185e4cf79870c8f7905a68713bf2a.tar.gz canutils-f4be322d2d4185e4cf79870c8f7905a68713bf2a.tar.xz |
[canconfig] fetch berr counter only if berr reporting is enabled
Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
-rw-r--r-- | src/canconfig.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/canconfig.c b/src/canconfig.c index b5ca39d..9cd4e01 100644 --- a/src/canconfig.c +++ b/src/canconfig.c @@ -487,15 +487,25 @@ static void cmd_restart_ms(int argc, char *argv[], const char *name) static void do_show_berr_counter(const char *name) { struct can_berr_counter bc; + struct can_ctrlmode cm; - memset(&bc, 0, sizeof(struct can_berr_counter)); - - if (can_get_berr_counter(name, &bc) < 0) { - fprintf(stderr, "%s: failed to get berr counters\n", name); + if (can_get_ctrlmode(name, &cm) < 0) { + fprintf(stderr, "%s: failed to get controlmode\n", name); exit(EXIT_FAILURE); } - fprintf(stdout, "%s txerr: %u rxerr: %u\n", name, bc.txerr, bc.rxerr); + if (cm.flags & CAN_CTRLMODE_BERR_REPORTING) { + memset(&bc, 0, sizeof(struct can_berr_counter)); + + if (can_get_berr_counter(name, &bc) < 0) { + fprintf(stderr, "%s: failed to get berr counters\n", + name); + exit(EXIT_FAILURE); + } + + fprintf(stdout, "%s txerr: %u rxerr: %u\n", + name, bc.txerr, bc.rxerr); + } } static void cmd_berr_counter(int argc, char *argv[], const char *name) |