Linux kernel 为什么iwlist扫描几乎每次都返回缓存结果?

Linux kernel 为什么iwlist扫描几乎每次都返回缓存结果?,linux-kernel,driver,wireless,Linux Kernel,Driver,Wireless,我有一个运行linux内核2.6.32的机顶盒(无法升级,请不要建议)。我正在使用配置为使用WEXT驱动程序的Realtek 8192CU驱动程序。什么会导致iwlist扫描不断返回缓存结果?似乎当机顶盒启动并进行第一次扫描时,它会得到一个准确的列表,并连接到一个接入点。然而,随后的扫描返回完全相同的信息(甚至信号强度和质量都是相同的) 很少,扫描会返回新的结果,但我找不到成功扫描之间的时间段(有时是几个小时)的任何模式 当新结果集可用时,dmesg中会显示“调查完成事件(xx)”消息 使用wp

我有一个运行linux内核2.6.32的机顶盒(无法升级,请不要建议)。我正在使用配置为使用WEXT驱动程序的Realtek 8192CU驱动程序。什么会导致iwlist扫描不断返回缓存结果?似乎当机顶盒启动并进行第一次扫描时,它会得到一个准确的列表,并连接到一个接入点。然而,随后的扫描返回完全相同的信息(甚至信号强度和质量都是相同的)

很少,扫描会返回新的结果,但我找不到成功扫描之间的时间段(有时是几个小时)的任何模式

当新结果集可用时,dmesg中会显示“调查完成事件(xx)”消息

使用wpa_cli,我运行以下命令并获得响应

>scan ra0
OK
<3>CTRL-EVENT-SCAN-RESULTS
>扫描ra0
好啊
CTRL-EVENT-SCAN-RESULTS
但是,“wpa_cli扫描_结果”返回的缓存信息与iwlist完全相同,dmesg中没有“survey done event(xx)”消息

有人能解释一下这里可能发生的事情吗?我想弄清楚如何可靠地触发新AP的扫描


提前谢谢你的帮助

希望有人觉得这很有用

在对8192cu驱动程序进行了大量挖掘之后,如果它认为自己“忙于”交通,它似乎不会启动扫描。它将只返回缓存的扫描结果。在我安装了硬件的环境中,有大量的多播流量,导致它几乎一直处于“繁忙”状态

为了解决这个问题,我必须在core/rtw_cmd.c中编辑一行。这是区别

1826c1826,1829
<       if( pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 100 ||
---
>       //  in large networks with lots of multicast traffic,
>       //  I needed to increase the Rx threshold for bBusyTraffic
>       //  so that AP scanning would work
>       if( pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 500 || // 100 ||
1831c1834
<           if(pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 100)
---
>           if(pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 500) // 100)
1826C18261829
LinkDetectInfo.NumRxOkInPeriod>100||
---
>//在具有大量多播流量的大型网络中,
>//我需要增加bBusyTraffic的接收阈值
>//这样AP扫描就可以工作了
>如果(pmlmepriv->LinkDetectInfo.NumRxOkInPeriod>500 | |//100||
1831c1834
LinkDetectInfo.NumRxOkInPeriod>100)
---
>if(pmlmepriv->LinkDetectInfo.NumRxOkInPeriod>500)//100)

遇到了相同的问题。发现如果以root用户身份运行该命令,每次都会重置缓存。

已经有一段时间了,但我认为wpa_supplicant具有配置设置,可以使其更主动地发现新的访问点。当然,大多数行为都会导致它如何调用WEXT ex驱动程序的提示。但这不仅仅是没有发现新的AP。当前AP的强度没有被更新。看起来好像从未进行过扫描。感谢您的提示!这应该是公认的答案。