summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuotao Fu <l.fu@pengutronix.de>2010-04-30 16:00:21 +0200
committerLuotao Fu <l.fu@pengutronix.de>2010-04-30 16:00:21 +0200
commitf4be322d2d4185e4cf79870c8f7905a68713bf2a (patch)
tree979941b15d36579801057f039f0d7df32a5f94f4
parent5b3335125c920294e0e40dc9ad0a3e9f2035c849 (diff)
downloadcanutils-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.c20
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)