This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 33f03fc98c0fe5cd5ce2fc99bbd684fb2d8c790b
Author: Tiago Medicci Serrano <[email protected]>
AuthorDate: Fri Aug 4 17:22:05 2023 -0300

    esp32s3/wlan: Always run `wlan_rxpoll` work queue
    
    Even if we were unable to get a free IOB, trigger the work queue
    to make sure that no old packet is waiting to be handled by the
    network upper layers.
---
 arch/xtensa/src/esp32s3/esp32s3_wlan.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/arch/xtensa/src/esp32s3/esp32s3_wlan.c 
b/arch/xtensa/src/esp32s3/esp32s3_wlan.c
index 9a27d1dda9..70f0b7f9dc 100644
--- a/arch/xtensa/src/esp32s3/esp32s3_wlan.c
+++ b/arch/xtensa/src/esp32s3/esp32s3_wlan.c
@@ -448,27 +448,21 @@ static int wlan_rx_done(struct wlan_priv_s *priv, void 
*buffer,
       goto out;
     }
 
+out:
+
   if (eb != NULL)
     {
       esp_wifi_free_eb(eb);
     }
 
-  if (work_available(&priv->rxwork))
-    {
-      work_queue(WLAN_WORK, &priv->rxwork, wlan_rxpoll, priv, 0);
-    }
-
-  return 0;
-
-out:
-  if (iob != NULL)
+  if (ret != OK && iob != NULL)
     {
       iob_free_chain(iob);
     }
 
-  if (eb != NULL)
+  if (work_available(&priv->rxwork))
     {
-      esp_wifi_free_eb(eb);
+      work_queue(WLAN_WORK, &priv->rxwork, wlan_rxpoll, priv, 0);
     }
 
   wlan_txavail(&priv->dev);

Reply via email to