Skip to content

Commit e319afb

Browse files
committed
canbusload: count full payload for CANFD frames
Signed-off-by: Kurt Van Dijck <[email protected]>
1 parent e9dd86f commit e319afb

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

canbusload.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ int main(int argc, char **argv)
237237
int opt;
238238
char *ptr, *nptr;
239239
struct sockaddr_can addr;
240-
struct can_frame frame;
240+
struct canfd_frame frame;
241241
int nbytes, i;
242242
struct ifreq ifr;
243243
sigset_t sigmask, savesigmask;
@@ -351,6 +351,9 @@ int main(int argc, char **argv)
351351
#ifdef DEBUG
352352
printf("using interface name '%s'.\n", ifr.ifr_name);
353353
#endif
354+
/* try to switch the socket into CAN FD mode */
355+
const int canfd_on = 1;
356+
setsockopt(s[i], SOL_CAN_RAW, CAN_RAW_FD_FRAMES, &canfd_on, sizeof(canfd_on));
354357

355358
if (ioctl(s[i], SIOCGIFINDEX, &ifr) < 0) {
356359
perror("SIOCGIFINDEX");
@@ -402,9 +405,11 @@ int main(int argc, char **argv)
402405
}
403406

404407
stat[i].recv_frames++;
405-
stat[i].recv_bits_payload += frame.can_dlc*8;
406-
stat[i].recv_bits_total += can_frame_length((struct canfd_frame*)&frame,
407-
mode, sizeof(frame));
408+
stat[i].recv_bits_payload += frame.len * 8;
409+
stat[i].recv_bits_dbitrate += can_frame_dbitrate_length(
410+
&frame, mode, sizeof(frame));
411+
stat[i].recv_bits_total += can_frame_length(&frame,
412+
mode, nbytes);
408413
}
409414
}
410415
}

0 commit comments

Comments
 (0)