diff --git a/net/tcp/tcp_callback.c b/net/tcp/tcp_callback.c index e40c480e6d7..4741d20cb76 100644 --- a/net/tcp/tcp_callback.c +++ b/net/tcp/tcp_callback.c @@ -319,8 +319,10 @@ uint16_t tcp_datahandler(FAR struct tcp_conn_s *conn, FAR uint8_t *buffer, /* Provide notification(s) that additional TCP read-ahead data is * available. */ - - tcp_readahead_signal(conn); + if (queue == &conn->readahead) + { + tcp_readahead_signal(conn); + } #endif ninfo("Buffered %d bytes\n", buflen); diff --git a/net/tcp/tcp_input.c b/net/tcp/tcp_input.c index b848baa82f1..f80ff17406b 100644 --- a/net/tcp/tcp_input.c +++ b/net/tcp/tcp_input.c @@ -1150,6 +1150,15 @@ static void tcp_process_cache(FAR struct net_driver_s *dev, uint8_t domain, dev->d_len = iob->io_pktlen - NET_LL_HDRLEN(dev); + if (IFF_IS_IPv4(dev->d_flags)) + { + tcp_ipv4_select(dev); + } + else + { + tcp_ipv6_select(dev); + } + tcp_input(dev, domain, iplen, NULL); iob_free_queue(iob, &conn->pendingahead,