فهرست منبع

esp_wifi/lwip: support TCP window scale

Support enable/disable TCP Window scale feature via menuconfig
liu zhifu 6 سال پیش
والد
کامیت
d1e7d04f9b
4فایلهای تغییر یافته به همراه35 افزوده شده و 4 حذف شده
  1. 2 1
      components/esp_wifi/Kconfig
  2. 1 1
      components/esp_wifi/lib_esp32
  3. 19 2
      components/lwip/Kconfig
  4. 13 0
      components/lwip/port/esp32/include/lwipopts.h

+ 2 - 1
components/esp_wifi/Kconfig

@@ -61,7 +61,8 @@ menu Wi-Fi
 
 
     config ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM
     config ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM
         int "Max number of WiFi dynamic RX buffers"
         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
         default 32
         help
         help
             Set the number of WiFi dynamic RX buffers, 0 means unlimited RX buffers will be allocated
             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
     config LWIP_TCPIP_RECVMBOX_SIZE
         int "TCPIP task receive mail box size"
         int "TCPIP task receive mail box size"
         default 32
         default 32
-        range 6 64
+        range 6 64 if !LWIP_WND_SCALE
+        range 6 1024 if LWIP_WND_SCALE
         help
         help
             Set TCPIP task receive mail box size. Generally bigger value means higher throughput
             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.
             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
         config LWIP_TCP_RECVMBOX_SIZE
             int "Default TCP receive mail box size"
             int "Default TCP receive mail box size"
             default 6
             default 6
-            range 6 64
+            range 6 64 if !LWIP_WND_SCALE
+            range 6 1024 if LWIP_WND_SCALE
             help
             help
                 Set TCP receive mail box size. Generally bigger value means higher throughput
                 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
                 but more memory. The recommended value is: LWIP_TCP_WND_DEFAULT/TCP_MSS + 2, e.g. if
@@ -401,6 +403,21 @@ menu "LWIP"
 
 
         endchoice
         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
     endmenu # TCP
 
 
     menu "UDP"
     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"
 #error "One of CONFIG_TCP_OVERSIZE_xxx options should be set by sdkconfig"
 #endif
 #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 ----------
    ---------- Pbuf options ----------