From 019fc0ad78a160aad7bd9182fc315e211e2850a7 Mon Sep 17 00:00:00 2001 From: Alexander Lunev Date: Fri, 14 Jan 2022 11:22:58 +0300 Subject: [PATCH] sim/netdev: eliminated RX data stream congestion in case of high TX network traffic. In case of high TX network traffic, netdriver_loop() that reads data from netdev was invoked via up_idle() only after high TX network traffic had stopped. That resulted in massive delay and drop of TCP ACK packets and any other packets from netdev (tun/tap device). --- arch/sim/src/sim/up_netdriver.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/sim/src/sim/up_netdriver.c b/arch/sim/src/sim/up_netdriver.c index 7d3ab17096..1bcc35b7fa 100644 --- a/arch/sim/src/sim/up_netdriver.c +++ b/arch/sim/src/sim/up_netdriver.c @@ -315,6 +315,12 @@ static int netdriver_txavail(FAR struct net_driver_s *dev) work_queue(LPWORK, &g_avail_work, netdriver_txavail_work, dev, 0); } + /* Check RX data availability and read the data from the network device now + * to prevent RX data stream congestion in case of high TX network traffic. + */ + + netdriver_loop(); + return OK; }