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

时间:2013-08-16 15:55:45

标签: linux-kernel driver wireless

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

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

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

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

>scan ra0
OK
<3>CTRL-EVENT-SCAN-RESULTS

但是,'wpa_cli scan_results'返回与iwlist完全相同的缓存信息,并且在dmesg中没有'调查完成事件(xx)'消息。

任何人都可以了解这里可能发生的事情吗?我想弄清楚如何可靠地触发新AP的扫描。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

希望有人觉得这很有用。

经过大量挖掘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)