优化wifi的性能,LWIP_TCP_WND是不是指的是DYNAMIC_RX_BUFFER动态接受缓冲区的缓冲区大小

不是一回事。

  • CONFIG_LWIP_TCP_WND_DEFAULT(LWIP_TCP_WND) :指 lwIP 里每个 TCP 连接的"接收窗口"(receive window) ,单位是 字节。它决定你对端能"最多连续发多少未确认的数据"给你,从而影响吞吐(窗口越大,链路 RTT 下越能跑满速)。

  • CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM :指 Wi-Fi 驱动层用于接收数据帧的"动态 RX 缓冲区数量"(是"个数",不是 TCP 的窗口大小)。每个 buffer 本质上承载一帧/一段数据,大小由驱动内部固定策略决定(你主要能调的是"数量",不是每个 buffer 的尺寸)。

两者的关系可以这样理解:

它们是不同层的"两个水桶",但会互相卡脖子

  • Wi-Fi RX buffers(dynamic/static)太少:空口收到的数据来不及搬运/投递到 lwIP,就会 丢包/重传,吞吐上不去。

  • TCP WND 太小:即便 Wi-Fi 很能收,对端也会因为你"广告窗口小"而 不敢多发,吞吐同样上不去。

所以你截图里那种"WND 要和 WIFI_DYNAMIC_RX_BUFFER_NUM 匹配"的说法,更准确的含义是:

TCP 窗口不要设置得远大于系统实际能缓存/处理的接收能力 (Wi-Fi 驱动 RX buffer + lwIP pbuf + 应用读取速度)。

否则窗口大也白搭,反而更容易触发内存压力、丢包、抖动。


怎么调更合理(经验规则)

  1. WND 一定按 MSS 的整数倍调
    WND ≈ N * MSS(MSS 常见 1460),N 常用 4/8/16/32。

    例如:8*MSS=11680、16*MSS=23360、32*MSS=46720。

  2. C3 这种内存紧张平台别盲目拉很大

    WND 每个 TCP 连接都会占用更多 pbuf/缓存压力;并发连接一多就更明显。

    如果你只有 1 条 TCP 流想跑快:可以把 WND 逐步从 16*MSS 往 32*MSS 试。

    如果你有多连接:WND 反而要保守一些。

  3. 配套项(经常一起调)

  • CONFIG_LWIP_TCP_WND_DEFAULT(接收窗口)

  • CONFIG_LWIP_TCP_SND_BUF_DEFAULT(发送缓冲,影响上行吞吐)

  • CONFIG_LWIP_TCP_SND_QUEUELEN(队列长度)

  • CONFIG_LWIP_TCP_MSS(MSS)

  • Wi-Fi:CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM / STATIC_RX_BUFFER_NUM / RX_BA_WIN


结论回答你的问题

LWIP_TCP_WND_DEFAULT 不是指 DYNAMIC_RX_BUFFER 的大小 ;

它是 TCP 层窗口大小(字节) ,而 DYNAMIC_RX_BUFFER_NUM 是 Wi-Fi 驱动接收缓冲区数量(个数)。两者需要"相互匹配",但不是同一个参数、也不是同一个单位。

相关推荐
草莓熊Lotso1 小时前
【C++ 基于微服务的即时通讯系统】etcd + brpc 从安装到服务注册发现全链路实战
网络·数据库·c++·redis·微服务·etcd
Chenyu_3106 小时前
DPDK、TC 和 XDP:Linux 高性能网络到底在优化什么
linux·服务器·网络·缓存
徐同保7 小时前
免费ssl证书全流程AI配置(含七牛云cdn)
网络·网络协议·ssl
lisw057 小时前
制造业信息化:现代工业的发展趋势!
大数据·网络·人工智能
陈让然8 小时前
WSL 桥接设置静态IP(快速)
linux·网络·ubuntu
持敬chijing8 小时前
白盒测试与代码审计-js登录逆向实战
javascript·网络·安全·web安全·网络安全·网络攻击模型
裕晟资质规划9 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
刘胡子大叔9 小时前
备份包只有 1.5K?
linux·服务器·网络
幻智星科技10 小时前
一个开源的纯FPGA网口采集卡
网络协议·fpga开发·udp
姜鱼问生11 小时前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器