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.

[参考译文] Linux/WL1835MOD:WL1835MOD 每10秒执行一次大型 Ping 操作

Guru**** 2543270 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/777392/linux-wl1835mod-wl1835mod-large-ping-times-every-10-seconds

器件型号:WL1835MOD
Thread 中讨论的其他器件:WL1271

工具/软件:Linux

您好!

我设置了两个 BeagleBone 无线板。 第一个设置为 AP、第二个连接到第一个。 一个 ping 另一个会导致 ping 时间通常达到110ms 和220ms。

我发现有几个线程报告了看起来相同或类似的问题、但没有一致的解决方案:

e2e.ti.com/.../2371429
e2e.ti.com/.../728430
e2e.ti.com/.../419894
e2e.ti.com/.../678797
e2e.ti.com/.../730376

下面是"ping"的响应时间图 -i 0.1":

请注意、ping 时间每100个数据包或10秒持续尖峰一次。



再现步骤:

BeagleBone Black 搭配 Debian 9.5 2018-10-07物联网、请点击此处:
beagleboard.org/latest-images

此映像随内核4.14.71-ti-r80和 wl18xx-fw-4.bin 版本8.9.0.0.79提供。

这些不能解决问题(TI 在其他主题中建议)
   iw wlan0将 power_save 设置为 off
   echo 0 >/sys/kernel/debug/ieee80211/phy0/wlcore/sleep_auth

也不要解决
   正在禁用蓝牙
   从 github.com/.../linux 升级到内核4.19.24
   使用 CONFIG_CFG80211_DEFAULT_PS=n 重建内核4.19.24

您能调查吗?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查看 wl18xx 驱动程序的调试消息后、可以清楚地看到、高 ping 时间与以下消息相关联:

    [1848.443504] wlcore:cmd configure (47)

    这使我转到 ACX_BA_SESSION _RX_SETUP 命令、该命令在对 wl12xx_acx_set_BA_receiver ssession ()的调用中配置、然后由 wl1271_op_ampdu_action ()调用。

    我修补了模块以禁用 RX AMPDU,方法是保持 wlvif->BA_support = false。 这使 ping 时间标准化、现在仅在 WiFi 扫描期间上升。

    很直观的一点是、AMPDU 会增加延迟。 但是、增加的100ms 延迟是巨大的、而且是意料之外的。 可以调查 AMPDU 实施中是否存在缺陷、并确认我的上述发现?

    我的应用程序对延迟至关重要、能够禁用 AMPDU (无需重新构建驱动程序)也会很有帮助。 现在、我需要构建一个自定义驱动程序。

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Flavio,
    我们通常不在 debian 上进行测试,而是在 Linux SDK 上进行测试。 您是否使用 iperf 测试了吞吐量? 禁用 BA 会话可能会导致吞吐量降低。 您是否注意到监听器跟踪中的 BA 会话每10秒交换一次?

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

    我确实运行了 iperf3、吞吐量大幅下降、但对于我的应用来说仍然足够好。 当然、我更喜欢标称吞吐量、但100-200ms 的延迟对我不起作用。

    我没有嗅探802.11的经验。 我尝试在802.11适配器处于监视器模式的情况下使用 Wireshark、但它没有捕获管理帧。 Wireshark 的文档指出、大多数驱动程序不会将管理帧转发到数据包捕获层、因此可能就是这样。

    如果您可以建议一种嗅探 BA 会话交换的方法(可能是与 BeagleBone Black 无线本身)、我愿意尝试它。

    我的主要目标是确保驾驶员能够正常工作。 根据代码、您能否告知我的补丁是否完全禁用 BA、或者只是驾驶员对它的处理?

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

    由于系统有足够的时间空闲、进入省电模式、在 ping 之间切换到另一个进程/线程、因此单个 ping 应答时间并不能很好地指示任何内容。
    当基站进入省电模式时、它只会针对来自 AP 的下一个信标唤醒。 因此、预计会出现延迟。
    您可以禁用省电:
    iw wlan0将 power_save 设置为 off

    并查看它是否进行了更改。
    但无论如何、我强烈建议不要对驱动程序进行代码更改。

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

    您好、Eyal、

    设置节能模式(iw wlan0 set power_save off)无法解决问题--请查看我的原始帖子以了解我尝试的内容。 我显示的图是 POWER_SAVE = OFF 的情况。 通常、禁用 power_save 和 ELP 有助于解决延迟问题、但不能解决此特定问题。

    我也希望避免更改驱动程序、尤其是因为我不知道 TI 固件的功能或预期。 但我也需要低延迟(100ms 的 ping 操作不正常)、因此我需要 TI 的帮助来确定根本原因并设计正确的解决方案。

    谢谢、

    Flavio

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

    今天、我尝试通过将 core.ht.rx_ba_win_size、core.ht.rx_BA_win_size 和 core.ht.tx_ba_tid_bitmap 设置为0x00来更改 wl18xx-conf.bin 文件、并看到与修改驱动程序相同的 ping 延迟改进。 换言之、ping 时间分布在以下两种情况下看起来大致相同:

    1) 1)将 core.ht.rx_ba_win_size、core.tx_ba_win_size 和 core.tx_ba_tid_bitmap 设置为0x00、同时使用常用 BeagleBone Black 无线内核

    2) 2)使用 wlvif->ba_support = false 修改内核模块、并使用常用 BeagleBone Black Wireless wl18xx-conf.bin

    我已附上 BeagleBone Black Wireless 的原始配置供您参考。

    非常感谢您的建议。

    e2e.ti.com/.../wl18xx_2D00_conf_2D00_original.txt

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

    我不想尝试完全禁用 BA 并具有副作用、而是建议使用 wlconf 从以下位置更改 BA 窗口大小:
    core.ht.rx_BA_win_size = 0x20
    core.ht.TX_BA_win_size = 0x40

    更改为(例如):
    core.ht.rx_BA_win_size = 0x40
    core.ht.TX_BA_win_size = 0x80

    这也可以帮助您处理与 ping 大小相关的响应时间、同时仍保持该机制处于启用状态。

    此致、
    Eyal