Skip to content

Commit 3f55399

Browse files
HedongGaoxiaoxiang781216
authored andcommitted
com/can: attempt to release invalid resources when sender is full
Attempt to release invalid resources when sender is full. Signed-off-by: gaohedong <[email protected]>
1 parent ae59225 commit 3f55399

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

drivers/can/can.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,21 @@ static ssize_t can_write(FAR struct file *filep, FAR const char *buffer,
647647

648648
while (TX_FULL(sender))
649649
{
650+
/* The transmit sender is full. In order to resolve the Lower half
651+
* interrupt exception, attempt to release invalid unconfirm
652+
* messages and trigger can_xmit.
653+
*/
654+
655+
if (dev_txempty(dev))
656+
{
657+
can_send_done(sender);
658+
659+
if (!TX_FULL(sender))
660+
{
661+
break;
662+
}
663+
}
664+
650665
/* The transmit sender is full -- non-blocking mode selected? */
651666

652667
if ((filep->f_oflags & O_NONBLOCK) != 0)

0 commit comments

Comments
 (0)