前言
今天又客户反映无线參数SSID编程了HT_AP0, 同事通过后台给他改动后反映给我,我想不正确啊,难道是无线驱动crash了?那应该不能玩才对啊。。。
追查线索
我们的路由器会定期汇报数据SSID,谁知道,server并没有保存到数据库中。这点我很很的生气,之前的规格,说得清清楚楚,为什么做事不到位!好了,既然发现了这个问题就改动下本地的server,这一改不要紧,把一台路由器的SSID改不见了。
刨根问底
路由器的SSID不见了,这个但是大问题,我们找到了那台路由器,发现其SSID编程了HT_AP0,为什么是这个?难道是驱动里问题,去驱动源代码搜索这个变量,没有发现,然后我搜索HT_AP。
在ap.c中
VOID APStartUp(
IN PRTMP_ADAPTER pAd)
{
..... if ((pMbss->SsidLen <= 0) || (pMbss->SsidLen > MAX_LEN_OF_SSID))
{
NdisMoveMemory(pMbss->Ssid, "HT_AP", 5);
pMbss->Ssid[5] = '0'+apidx;
pMbss->SsidLen = 6;
} .....
}
原来是SSID的值为空,驱动会自己主动赋值这个变量,就铸就了这个问题。
嗯,抓包看到了问题所在,是server的乱码中带有我须要的字样,可是并没有值,而我的代码也没有推断值是否为空就直接通过uci改动了SSID,导致了驱动自己主动设置默认的SSID.
这是问题的真正原因。
总结
出现故障后,保留现场,我之前犯了一个错误就是wireless灯不亮,我恢复出厂设置后就好了。没有找到问题的真正原因。还有要相信系统,不要以为是什么大不了的问题,要动手去查找问题的真正原因, 把问题夯实了,不然你还是会出现故障的。