This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3551E:奇怪的 TI LWIP 套接字 OPT 补丁/更改

Guru**** 2893300 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1641008/cc3551e-strange-ti-lwip-socket-opt-patch-change

器件型号: CC3551E

大家好、我一直在调试一些非常奇怪的问题、最终在 TI LWIP 中找到了根本原因。

由于某种原因、TI 更改了#define TCP_NOTELAY  0x01 => 0x00

我很困惑为什么这个编辑存在。 如果目的是让 TI 始终启用此功能或某种功能、则应该在 TI 参考/演示应用中通过 setsockopts 完成、而不是直接在 LWIP 中编辑。  

这不是我看到的配置、它是一个在 switch case 代码中用作“密钥“的定义: https://github.com/lwip-tcpip/lwip/blob/bef26c44236a078d4352e76392ef16f019bea501/src /api/sockets.c#L3092

 

TI: https://github.com/TexasInstruments/simplelink-wifi-sdk/blob/46ca4ee7da9bb189991d7d14d5fa79140f9555ba/source/third_party/lwip/lwip-stack/src 279.

LWIP: https://github.com/lwip-tcpip/lwip/blob/bef26c44236a078d4352e76392ef16f019bea501/src / include/lwip/sockets.h#L279.

 

也不相关、但您是否有计划更新到 LWIP 2.2.2.X?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jakob:

    我可以与我们的后端团队讨论为什么以这种方式实施这种方法、然后返回给您。

    为了帮助推动这一讨论、您能否详细介绍一下向您介绍的问题?  您的代码尝试做什么、而是发生了什么? 这将有助于我解释为什么这是一个应该解决的问题、因为我们在 cc35xx 的 tcp_Nodelay 特定的论坛上没有任何其他帖子。

    我也会研究任何更新 LWIP 的计划。

    此致、

    Josh Prushing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,谢谢你回来!

    此 TCP_NODELAY 导致问题的原因是、当 TI 更改此值(注意 “key“,而非实际值)时、它会打破 BSD 兼容性、即 LWIP 套接字选项不再与 BSD 套接字选项匹配。

    在默认的 LWIP 和 BSD 套接字中、 TCP_NODELAY 为 0x01、并且您将其  设置为 0、会导致使用 BSD 套接字的套接字 API OPts 使 TCP_NODELAY 既不可设置也不可清除。

    需要注意的是、TI 的这次更改(就我所见而言)不会更改默认行为、我想这就是为什么一开始就更改了默认行为(注释也被更改)、或者这是我能想到的唯一原因。  

    当然、如果您使用将 tcp_nodelay 定义为 TI 更改的 lwip include、您的代码仍然有效。 因此、这可能是之前没人注意到这一点的原因、我们失败并导致 ranom 测试失败的原因是我们使用了套接字选项的 BSD 套接字定义(在通用共享代码中)、而不是 ti lwip 包括、因此这个设置对我们不起作用、因为我们输入的是“key“ 0x01、TI LWIP 忽略了这一点。

    关于 LWIP 更新、CC35XX 今天使用 LWIP 2.1.2、自 2018 年以来、有一些修复和特性、 STABLE-2.2.1 可能是最佳选择。  github.com/.../CHANGELOG

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jakob:

    感谢您的反馈、我已联系我们的后端团队、希望我在下周结束前为您提供回复。

    此致、

    Josh Prushing