diff --git a/configs/sabre-6quad/README.txt b/configs/sabre-6quad/README.txt index 64f4011ddf..22c8de745c 100644 --- a/configs/sabre-6quad/README.txt +++ b/configs/sabre-6quad/README.txt @@ -4,6 +4,12 @@ README.txt This directory holds a port of NuttX to the NXP/Freescale Sabre board featuring the iMX 6Quad CPU. +This is a minimal port, used primarily for verifying SMP operation. More +recently, a port to the i.MX RT was added. This port has gotten more +support since it is better aligned with usage in embedded systems. The +i.MX6 and the i.MX6 share IOMUXing and some peripherals. It ought to be +a simple matter to backport some of the common drivers from i.MXRT to i.MX6. + Contents ======== diff --git a/net/tcp/tcp_send_buffered.c b/net/tcp/tcp_send_buffered.c index 60ecb27129..c5d70b0e66 100644 --- a/net/tcp/tcp_send_buffered.c +++ b/net/tcp/tcp_send_buffered.c @@ -68,6 +68,7 @@ #include #include #include +#include #include "netdev/netdev.h" #include "devif/devif.h" @@ -1175,7 +1176,20 @@ ssize_t psock_tcp_send(FAR struct socket *psock, FAR const void *buf, } else { + int count; + int blresult; + + /* iob_copyin might wait for buffers to be freed, but if network is + * locked this might never happen, since network driver is also locked, + * therefore we need to break the lock + */ + + blresult = net_breaklock(&count); result = TCP_WBCOPYIN(wrb, (FAR uint8_t *)buf, len); + if (blresult >= 0) + { + net_restorelock(count); + } } /* Dump I/O buffer chain */