]> granicus.if.org Git - esp-idf/commitdiff
lwip: remove tx flow control code
authorLiu Zhi Fu <liuzhifu@espressif.com>
Tue, 1 Nov 2016 07:25:46 +0000 (15:25 +0800)
committerLiu Zhi Fu <liuzhifu@espressif.com>
Tue, 1 Nov 2016 07:25:46 +0000 (15:25 +0800)
components/lwip/api/sockets.c
components/lwip/include/lwip/port/lwipopts.h

index df658578af4008ba78133ad292adfee667a0aa72..1529382f5061e22930996547d54b62e900bba201 100755 (executable)
@@ -382,34 +382,6 @@ static void lwip_socket_unregister_membership(int s, const ip4_addr_t *if_addr,
 static void lwip_socket_drop_registered_memberships(int s);
 #endif /* LWIP_IGMP */
 
-#if ESP_LWIP
-#include "esp_wifi_internal.h"
-#include "esp_system.h"
-
-/* Please be notified that this flow control is just a workaround for fixing wifi Q full issue. 
- * Under UDP/TCP pressure test, we found that the sockets may cause wifi tx queue full if the socket
- * sending speed is faster than the wifi sending speed, it will finally cause the packet to be dropped
- * in wifi layer, it's not acceptable in some application. That's why we introdue the tx flow control here.
- * However, current solution is just a workaround, we need to consider the return value of wifi tx interface,
- * and feedback the return value to lwip and let lwip do the flow control itself.
- */ 
-static inline void esp32_tx_flow_ctrl(void)
-{
-//TODO we need to do flow control for UDP
-#if 0
-  uint8_t _wait_delay = 1;
-
-  while ((system_get_free_heap_size() < HEAP_HIGHWAT) || esp_wifi_internal_tx_is_stop()){
-     vTaskDelay(_wait_delay/portTICK_RATE_MS);
-     if (_wait_delay < 64) _wait_delay *= 2;
-  }
-#endif
-}
-
-#else
-#define esp32_tx_flow_ctrl() 
-#endif
-
 /** The global array of available sockets */
 static struct lwip_sock sockets[NUM_SOCKETS];
 #if ESP_THREAD_SAFE
@@ -1392,8 +1364,6 @@ lwip_sendto(int s, const void *data, size_t size, int flags,
 #endif /* LWIP_TCP */
   }
 
-  esp32_tx_flow_ctrl();
-
   if ((to != NULL) && !SOCK_ADDR_TYPE_MATCH(to, sock)) {
     /* sockaddr does not match socket type (IPv4/IPv6) */
     sock_set_errno(sock, err_to_errno(ERR_VAL));
index 67a62b8227af09cf45af38d3323d11cc5ea8f1db..b970ae553921b4d5fdac5b21d5203fd84563d64c 100755 (executable)
@@ -523,7 +523,6 @@ extern unsigned long os_random(void);
 #define ESP_IP4_ATON                    1
 #define ESP_LIGHT_SLEEP                 1
 
-
 #define TCP_WND_DEFAULT                      (4*TCP_MSS)
 #define TCP_SND_BUF_DEFAULT                  (2*TCP_MSS)
 
@@ -550,8 +549,6 @@ extern unsigned char misc_prof_get_tcp_snd_buf(void);
 #define CHECKSUM_CHECK_UDP              0
 #define CHECKSUM_CHECK_IP               0
 
-#define HEAP_HIGHWAT                    20*1024
-
 #define LWIP_NETCONN_FULLDUPLEX         1
 #define LWIP_NETCONN_SEM_PER_THREAD     1