From bf1adc1e55cadbd2bcd37e7feee86b0fe72b717b Mon Sep 17 00:00:00 2001 From: Gregory Nutt <gnutt@nuttx.org> Date: Wed, 15 Jul 2015 19:52:08 -0600 Subject: [PATCH] Another CAN driver fix: From inspection, it appears that RTR counter was not being handled correctly --- drivers/can.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/can.c b/drivers/can.c index 8a893856f4..4f2e5f9544 100644 --- a/drivers/can.c +++ b/drivers/can.c @@ -707,6 +707,7 @@ int can_register(FAR const char *path, FAR struct can_dev_s *dev) dev->cd_ocount = 0; dev->cd_ntxwaiters = 0; dev->cd_nrxwaiters = 0; + dev->cd_npendrtr = 0; sem_init(&dev->cd_xmit.tx_sem, 0, 0); sem_init(&dev->cd_recv.rx_sem, 0, 0); @@ -716,7 +717,6 @@ int can_register(FAR const char *path, FAR struct can_dev_s *dev) { sem_init(&dev->cd_rtr[i].cr_sem, 0, 0); dev->cd_rtr[i].cr_msg = NULL; - dev->cd_npendrtr--; } /* Initialize/reset the CAN hardware */ @@ -798,6 +798,7 @@ int can_receive(FAR struct can_dev_s *dev, FAR struct can_hdr_s *hdr, /* Mark the entry unused */ rtr->cr_msg = NULL; + dev->cd_npendrtr--; /* And restart the waiting thread */ -- GitLab