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/WL1831MOD:WiFi 内核崩溃、吞吐量低

Guru**** 2524550 points
Other Parts Discussed in Thread: WL1831MOD, WL1831

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/590463/linux-wl1831mod-wifi-kernel-crashes-and-low-throughput

器件型号:WL1831MOD
Thread 中讨论的其他器件: WL1831

工具/软件:Linux

您好!

我们一直在使用 WL1831MOD 进行 WiFi 连接、并且遇到了一些性能问题:

  • WiFi 内核扫描崩溃: 在扫描 WiFi 接入点时、我们一直遇到这种崩溃的情况、但我们在所有 设备上都看不到这种情况。 我已附上我们在本帖子末尾看到的错误日志。 我们仍在尝试确定重现此错误的过程。 当机器显示此错误一次时,它会在扫描和重新启动时持续生成该错误,但我们没有找到可靠的方法来首次触发该错误。
  • 低吞吐量: 偶尔、我们看到吞吐量大约为1-3兆位/秒。 这个问题往往是间歇性的、我们还没有找到一种可靠地重现它的方法。
  • 下载速度慢: 在我们看到吞吐量更高的测试期间、我们将看到 TCP 吞吐量大约为每秒40兆位。 有了这个吞吐量、我们应该在 ~20秒内下载一个100 MB 的文件。 不过、通过 HTTP 下载100 MB 文件时、我们看到下载时间为~45秒或更长。

系统详细信息:

  • 主机平台:Freescale I.MX.6四核
  • 操作系统:基于 Yocto Jethro 的自定义构建
  • WiLinkTm芯片类型:WL1831MOD
  • 天线:Laird Technologies CAF94505
  • WL18xx MAC 固件版本:8.9.0.0.2.55
  • WL18xx PHY 固件版本:8.2.0.1.233
  • WL18xx 软件驱动程序版本:R8.6_SP1

是否有任何关于导致这些问题的原因的想法、或者我们接下来应该研究什么?

谢谢、

Eric

内核崩溃日志:

root@var-som-MX6:~# iw dev wlan0 scan
[354.734144] wlcore:收到错误软件看门狗中断! 正在开始恢复。
[354.741296]------ [在此处剪切]-----
[354.746154]警告:CPU:0 PID:688 at /var/lib/jenkins/jobs/Ax-Develop/workspace/yocto/build/tmp/work/var_som_mx6-poky-linux-gnueabi/ti-compat-wireless-wl18xx/R8.6_SP1-r0/compat-wireless/drivers/net/wireless/ti/wlcore/main.c:797 wl12xx_queue_recovery_work.part.9+0x58/0x5c [wlcore]()
[354.771523]链接的模块:wl18xx (O) wlcore (O)
IRQ 80211 (O) wlcore_mcu v_mcu (O) gpu v_mcu v248_mcu v_mc+ mcu v_mcu (o v_mcu v_mcu v_mcu v24_mcu) v_mcu v_mcu (v_mcu v_mcu v_mcu v_mcu v_mcu v_mcu v_mcu v_mcu v2418xx (o v_mcu v_mcu v_mcu v_mcu v_ w o 364.1.15-6QP+g2ea728e #1
[354.802689]硬件名称:Freescale i.MX6 Quad/DualLite (设备树)
[354.809279][<800177ec>](warn_backtrace)(从[<800cc>](show_stack+0x80010/0x80013364]+[<80036834]+8064][<800_trackn_000[<80036834]+800_000[<80036834]+800_000[<8064]+800_000[_000[<800_000[<800_00064]+800_000[<800_00064][<800_000[<800_00017[<800_0003]+800_00017[<800_000[<800_0003c]+800_000[<800_000[_00017[<800_000[<800_00017[<800_0003c][<800_000[<800_0003]+800_000[<800_0003]+




[354.852161][<7f165ffc>](wl12xx_queue_recovery_work.part.9 [wlcore])(wlcore_IRQ +0x184/0x18c [wlcore])[<7f1662fc>](wlcore_IRQ
+800c>


)[0x800248+800c+800c][<w384c+800c+800c][w800c+800c][w800c+800c](w384c+800c+800c+800c][w800c+800c][w800c+800c](w384eirc+800c+800c+800c+800c+800c][w800c+800c][w800c+800c+800c][w800c+800c+800c][w800c][w800c+800c+800c][w800c](w384e800c+800c+800c+800c][w800c+800c][w800c][

正在进行硬件恢复。 固件






更新:版本8.9.0.2.55 [354.90566] wlcore:PC:0x117538、HINT_STS:0x00000000计数:13 [ 354.912260] wlcore:down [ 354.914805] wlcore:down [ 354.918478] ie80211 phy0:hardware restart was requested [ 355.912260] wlcore:version 355.385.256] wlcore:v1.5] wlcore [354.958.2](wlcore:v1.55.385.2.58.2] wlcore:wlcore (wlcore:wv1.528.5.385.2.58.2.528.2.528.5.528.5.528.5.2.5]] wv
扫描已中止! 

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

    扫描期间的崩溃通常与未正确接收 WLAN_IRQ GPIO 引脚的中断有关。
    您使用什么配置? 如果您在.dts 文件中使用 IRQ_TYPE_LEVEL_HIGH、您可以尝试更改为 IRQ_TYPE_EDGE_FALLING 或 IRQ_TYPE_EDGE_RISING、看看它是否有用?

    此外、您还提到了您正在使用 FW 8.9.0.2.55。 R8.6_SP1的正式固件是8.9.0.1.55、那么您是否获得了特殊的固件版本?

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

    您好、Eyal、

    配置已设置为 IRQ_TYPE_EDGE_RISING。

    关于固件版本、我们将使用 Variscite 为 IMX 6提供的自定义错误修复、该修复程序位于 :https://github.com/varigit/meta-variscite-imx/tree/imx-4.1.15-1.2.0_ga-var01/recipes-connectivity/wl18xx-firmware/wl18xx-firmware。 与8.9.0.2.55相对应。

    谢谢、

    Eric

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

    尊敬的 Eric:

    您可以尝试更改 IRQ_TYPE_EDGE_FALLING 吗? 也许这个平台上的上拉配置决定了它吗?

    我们不在内部使用 Variscite 平台的支持。您是否已经尝试联系他们的支持?

    他们应该能够为您提供有关此问题的更好的答案、因为它看起来是特定于平台的。

    您可以尝试禁用 ELP、如所示:

    并查看它是否进行了更改?

    此致、

    Eyal

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

    您好、Eyal、

    感谢您的建议。 我会尝试这些、并会返回给您!

    谢谢、

    Eric

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

    大家好、

    感谢您耐心等待我的延迟回复。 在过去几周里、我们一直在与 Variscite 支持部门合作来解决这些问题、并且我们能够解决其中一个问题。 以下是我们目前所处位置的总结:

    • WiFi 内核扫描崩溃:从 IRQ_TYPE_EDGE_RISING 更改为 IRQ_TYPE_EDGE_FALLING 无法解决问题(它实际上使情况更糟、因为 WiFi 在更改后无法正常工作)。 遗憾的是、我们无法可靠地重现崩溃问题、因此我们没有更多的事情要做。 您是否对下一步尝试的内容有任何建议? 如果没有、我们可以在获得更多信息之前列出此问题。
    • 低吞吐量:我们能够解决这个问题。 根本原因是配置错误--我们使用的是 WL1831,但发现该模块连接到5GHz 网络,连接到这些网络时吞吐量极低。 正确运行 configure_device.sh 脚本后、5GHz 网络不再可见、从而解决了此问题。
    • 下载速度慢:此问题仍然存在。 运行"iw wlan0 link "时、输出显示支持的吞吐量为72.2 Mbit/s、但我们在吞吐量测试期间观察到的吞吐量仅为40 Mbit/s 此外、下载一个100 MB 文件仍需要大约1分钟的时间才能完成、这似乎比理论和观察到的吞吐量要长很多。 您是否对导致此问题的原因有任何看法? 我们无法确定可能导致这种情况的 Variscite 平台问题、因此我们不确定根本原因是什么。

    谢谢、

    Eric

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

    使用 iw wlan0 link 并不是一个好的指示、因为它只显示最新数据包使用的速率、而不是实际 UDP 吞吐量。
    您需要在 iperf UDP 测试期间使用 wirelessarelarcarth/omnpeek 捕获空气、并查看实际日志以查看在空中看到 UDP trafic 的速率。
    是否确定您的.ini 文件配置? 您的之类的问题通常与此相关。 此外、组装好的2.4GHz 天线的数量也很关键。

    您使用的是哪个模块? 这是一个 TI 模块、是什么?
    您能否提供 wl18xx-conf.bin 的转储文件作为中的说明:

    www.ti.com/.../swra489.pdf

    有关将 wl18xx-conf.bin 的内容转储到文本文件的信息、请参阅第4节。

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

    您好、Eyal、

    感谢您对 iw wlan0 link 的澄清、我假设这是一个理论吞吐量。 关于.ini 文件配置,我不是100%确定—这些文件目前由 Variscite 元层处理,我自己也没有触及过它们。 为了确保正确设置,我应该寻找什么? 看起来系统当前正在从此 repo 提取文件:Git://git.ti.com/wilink8-wlan/18xx-ti-utils.git. 看看该 repo 中的文件名,它看起来不像1831中有一个.ini 文件?

    我们使用的是 WL1831MOD、随附了转储 wl18xx-conf.bin。

    感谢你的帮助、
    Eric

    e2e.ti.com/.../3542.wl18xx_2D00_conf_2D00_dump.txt

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

    尊敬的 Eric:

    基于1831的模块是基于单个2.4GHz WiFi 天线的模块、因此不支持 MIMO。

    这是基于1831的模块与基于1835的模块之间的主要区别。

    另外、根据您的转储文件的浏览、conf 文件也被设置为这样的文件(配置为一个组装天线)、这与您的模块相匹配:

    wl18xx.phy.number_for_Assembled_ant2_4 = 0x01

    仅使用单个天线、您获得的吞吐量(大约40Mbps)在露天环境中看起来确实是合理的。

    如果您使用的是"干净"房间、您可以在 SISO 中达到大约60Mbps 的速率。

    希望这对您有所帮助。

    此致、

    Eyal

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

    您好、Eyal、

    感谢您的说明。 很高兴知道我们获得了合理的吞吐量。 我最初的问题是吞吐量与 iw wlan0 link 显示的数据不匹配、但在您先前对该命令的解释之后、这不再是问题。

    但是、我仍然很困惑我们的下载速度为何如此慢。 对于40 Mbit/s、我预计在大约20秒内下载100 MB 的文件。 不过、我们仍然看到下载速度接近1分钟、但这并不会增加。 对此有什么想法吗?

    谢谢、

    Eric

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

    尊敬的 Eric:

    在进行文件下载测试时、您不仅要检查 WiFi 链接、还要检查整个系统。

    您的系统可能正在从存储设备读取卡盘、并通过网络堆栈将其发送到 WLAN 接口。

    这可能是您的纯 iperf 测试花费更长时间的原因。

    如果您对随每个数据包一起发送的"块大小"有任何控制、并且可以增加数据包、您可能会增加整体吞吐量。

    BR、

    Eyal

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

    您好、Eyal、

    在今天的测试中、我们遇到了以下错误。 是什么导致了这些情况? 这些是正常现象、还是有修复方法?

    [1998.117170] wlcore:警告 RX 中损坏的数据包:status:0x1 len:393
    [2012.079448] wlcore:警告 RX 中损坏的数据包:status:0x1 len:100
    [2013.146517] wlcore:警告 RX 中损坏的数据包:status:0x1 len:100
    [2024.310514] wlcore:警告:RX 中损坏的数据包:0x1 len: 100[2028.1990027]
    wlcore:WARNING corrupted packet in RX:status:0x1 len:393
    [2035.182451] wlcore:WARNING corrupted packet in RX:status:0x1 len:100[2038.190196]
    wlcore:WARNING corrupted packet in RX:status:0x1 len:100 

    (我还将在运行更多测试后向您返回下载速度的进度)

    谢谢、

    Eric