diff --git a/components/drivers/can/can.c b/components/drivers/can/can.c index 078d8bb64a29565ae746b695e2c9efd305b59943..0769c79fd7a40a181359d8bb0b75baf2b02835e0 100644 --- a/components/drivers/can/can.c +++ b/components/drivers/can/can.c @@ -854,7 +854,7 @@ void rt_hw_can_isr(struct rt_can_device *can, int event) level = rt_hw_interrupt_disable(); /* get rx length */ - rx_length = rx_fifo->freenumbers * sizeof(struct rt_can_msg); + rx_length = rt_list_len(&rx_fifo->uselist)* sizeof(struct rt_can_msg); rt_hw_interrupt_enable(level); can->parent.rx_indicate(&can->parent, rx_length);