Просмотр исходного кода

esp_wifi/lwip: support TCP window scale

Support enable/disable TCP Window scale feature via menuconfig
liu zhifu 6 лет назад
Родитель
Сommit
d1e7d04f9b

+ 2 - 1
components/esp_wifi/Kconfig

@@ -61,7 +61,8 @@ menu Wi-Fi
 
     config ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM
         int "Max number of WiFi dynamic RX buffers"
-        range 0 128
+        range 0 128 if !LWIP_WND_SCALE
+        range 0 1024 if LWIP_WND_SCALE
         default 32
         help
             Set the number of WiFi dynamic RX buffers, 0 means unlimited RX buffers will be allocated

+ 1 - 1
components/esp_wifi/lib_esp32

@@ -1 +1 @@
-Subproject commit eb27c814d5d178698bb45c6ad675c0dce9427fa1
+Subproject commit b8b96f985aee155682a2907c6c0f3b693bb43785

+ 19 - 2
components/lwip/Kconfig

@@ -148,7 +148,8 @@ menu "LWIP"
     config LWIP_TCPIP_RECVMBOX_SIZE
         int "TCPIP task receive mail box size"
         default 32
-        range 6 64
+        range 6 64 if !LWIP_WND_SCALE
+        range 6 1024 if LWIP_WND_SCALE
         help
             Set TCPIP task receive mail box size. Generally bigger value means higher throughput
             but more memory. The value should be bigger than UDP/TCP mail box size.
@@ -341,7 +342,8 @@ menu "LWIP"
         config LWIP_TCP_RECVMBOX_SIZE
             int "Default TCP receive mail box size"
             default 6
-            range 6 64
+            range 6 64 if !LWIP_WND_SCALE
+            range 6 1024 if LWIP_WND_SCALE
             help
                 Set TCP receive mail box size. Generally bigger value means higher throughput
                 but more memory. The recommended value is: LWIP_TCP_WND_DEFAULT/TCP_MSS + 2, e.g. if
@@ -401,6 +403,21 @@ menu "LWIP"
 
         endchoice
 
+        config LWIP_WND_SCALE
+            bool "Support TCP window scale"
+            depends on SPIRAM_TRY_ALLOCATE_WIFI_LWIP
+            default n
+            help
+                Enable this feature to support TCP window scaling.
+
+        config LWIP_TCP_RCV_SCALE
+            int "Set TCP receiving window scaling factor"
+            depends on LWIP_WND_SCALE
+            range 0 14
+            default 0
+            help
+                Enable this feature to support TCP window scaling.
+
     endmenu # TCP
 
     menu "UDP"

+ 13 - 0
components/lwip/port/esp32/include/lwipopts.h

@@ -363,6 +363,19 @@
 #error "One of CONFIG_TCP_OVERSIZE_xxx options should be set by sdkconfig"
 #endif
 
+/**
+ * LWIP_WND_SCALE and TCP_RCV_SCALE:
+ * Set LWIP_WND_SCALE to 1 to enable window scaling.
+ * Set TCP_RCV_SCALE to the desired scaling factor (shift count in the
+ * range of [0..14]).
+ * When LWIP_WND_SCALE is enabled but TCP_RCV_SCALE is 0, we can use a large
+ * send window while having a small receive window only.
+ */
+#ifdef CONFIG_LWIP_WND_SCALE
+#define LWIP_WND_SCALE                  1
+#define TCP_RCV_SCALE                   CONFIG_LWIP_TCP_RCV_SCALE
+#endif
+
 /*
    ----------------------------------
    ---------- Pbuf options ----------