com/can: attempt to release invalid resources when sender is full

Attempt to release invalid resources when sender is full.

Signed-off-by: gaohedong <gaohedong@xiaomi.com>
This commit is contained in:
gaohedong
2024-10-21 18:32:01 +08:00
committed by Xiang Xiao
parent ae59225898
commit 3f553999da
+15
View File
@@ -647,6 +647,21 @@ static ssize_t can_write(FAR struct file *filep, FAR const char *buffer,
while (TX_FULL(sender))
{
/* The transmit sender is full. In order to resolve the Lower half
* interrupt exception, attempt to release invalid unconfirm
* messages and trigger can_xmit.
*/
if (dev_txempty(dev))
{
can_send_done(sender);
if (!TX_FULL(sender))
{
break;
}
}
/* The transmit sender is full -- non-blocking mode selected? */
if ((filep->f_oflags & O_NONBLOCK) != 0)