如何判断一个WIFI客户端和Ralink AP之间连接是否断开?
答:
可以通过“iwpriv ra0 show stainfo ”命令的输出结果来观察。该命令列出了当前AP记录的WIFI客户端列表;如果某个客户端和AP之间的通讯断开超出一定时间,AP就会从客户端列表中将该客户端删除(支持省电模式的客户端不适应该策略)。Ralink driver中默认的超时时间为300秒(#define MAC_TABLE_AGEOUT_TIME 300 /* unit: sec */);其中“Idle”表示还剩多少秒会超时。如果客户端处于active状态的话,该值通常会大于250;
下面的例子中将一个camera的电源断开一段时间后,camera就被从AP的WIFI列表中删除了。
所以,如果“Idle”的数值一直变小,可能就需要考虑客户端和AP之间的连接是否出现了问题。
# # iwpriv ra0 show stainfo BackOff Slot : long slot time, BKOFF_SLOT_CFG(0x1104)= 0x00000214 HT Operating Mode :3
MAC AID BSS PSM WMM MIMOPS RSSI0 RSSI1 RSSI2 PhMd BW MCS SGI STBC Idle Rate C0:56:E3:9F:08:75 1 0 0 1 3 -23 -28 0 HTMIX 40M 7 0 1 300 135 4638 , 50999, 90% C0:56:E3:9F:08:6B 2 0 0 1 3 -54 -49 0 HTMIX 40M 7 0 1 300 135 12977 , 63879, 79% 20:F8:5E:A0:21:65 3 0 0 0 0 -54 -49 0 CCK 20M 3 0 0 270 11 579 , 589, 1% 00:1A:97:01:A1:47 4 0 0 1 3 -43 -46 0 HTMIX 40M 7 0 0 297 135 21759 , 21907, 0% 54:2A:A2:04:07:F9 5 0 0 1 3 -48 -49 0 HTMIX 20M 7 0 0 300 65 9983 , 10043, 0% 00:95:69:08:00:19 6 0 0 1 3 -51 -47 0 HTMIX 40M 7 0 1 300 135 20763 , 68704, 69% 00:95:69:07:4D:E6 7 0 0 1 3 -20 -28 0 HTMIX 40M 7 0 1 300 135 15509 , 60244, 74%
#
MAC: 客户端的WIFI MAC address; AID: 客户端ID,由AP维护; BSS: BSS的标识符,MT7620是支持多SSID的;每个SSID对应不同的MAC,也就是不同的BSS;该AP只使用了一个,因此这里为0; PSM: power save mode 省电模式; WMM:WMM(Wi-Fi多媒体)全面定义了四种连接内容,其中包括语音、视频、best effort以及background,以此优化网络通信的质量,以保障这些应用与网络资源建立稳定连接。 MIMOPS: MIMO 的power save mode; RSSI0,RSSI1,RSSI2:记录了最近几次的客户端的WIFI发送信号强度,单位dbm,数值越大,信号越强;例如“-10”时信号强于“-50”;该数值可能受OPU wifi检测电路精度影响,所以数值不太精确,但具有有一定的参考作用; PhMd:物理层采用的WIFI技术; BW: BandWidth 带宽,40M或者20M SGI:是否使能Short Guard Interval;射频芯片在使用OFDM调制方式发送数据时,整个帧是被划分成不同的数据块进行发送的,为了数据传输的可靠性,数据块之间会有GI(Guard Interval),用以保证接收侧能够正确的解析出各个数据块。无线信号在空间传输会因多径等因素在接收侧形成时延,如果后续数据块发送过快,会和前一个数据块形成干扰,而GI就是用来规避这个干扰的。11a/g的GI时长为800us,而Short GI时长为400us,在使用Short GI的情况下,可提高10%的速率。另外,Short GI与带宽无关,支持20MHz、40MHz带宽。在配置WLAN的参数界面,一般会有一个SGI使能的选项,如果不勾选,则使用GI间隔--800us;而勾选SGI使能后,使用400us间隔。间隔小能提高速率,但是如果遇到干扰或环境不好时,容易增加信息传输错误,反而使性能恶化。 Idle:表示还剩多少秒会因为一直处于Idle而超时被AP踢掉。该数值表示客户端WIFI的活跃程度;如果该值一直变小,可能就需要考虑客户端和AP之间的连接是否断开了。 Rate:当前客户端和AP之间的数据传输速度; “4638 , 50999, 90%”这样的几个数据表示FIFO overflow rate,通过这几个数值来反馈硬件发送数据速率和上层期望发送速率之间差异; 这几个数值分别对应如下的代码行: printk("%-10d, %d, %d%%\n",pEntry->DebugFIFOCount, pEntry->DebugTxCount, (pEntry->DebugTxCount) ?((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount): 0); DebugTxCount 由APHardTransmit调用的RTMP_FillTxBlkInfo函数中pMacEntry->DebugTxCount++;说明AP每发送一帧数据时就会增加该计数;用于表明上层期望发送的数据包数量; DebugFIFOCount由NICUpdateFifoStaCounters中更新,用于表示底层实际发送了多少数据包(ignore NoACK and MGMT frame use 0xFF as WCI,后面应该就是多播的管理帧); STBC: 空时编码方式,源码中对应的数值如下: /* STBC */ #define STBC_NONE 0 #ifdef DOT11_N_SUPPORT #define STBC_USE 1 /* limited use in rt2860b phy */ #define RXSTBC_ONE 1 /* rx support of one spatial stream */ #define RXSTBC_TWO 2 /* rx support of 1 and 2 spatial stream */ #define RXSTBC_THR 3 /* rx support of 1~3 spatial stream */
//拔掉MAC为54:2A:A2:04:07:F9的摄像头的电源,观察Idle的数值变化 # # iwpriv ra0 showstainfo BackOff Slot : long slot time, BKOFF_SLOT_CFG(0x1104)= 0x00000214 HT Operating Mode :3
MAC AID BSS PSM WMM MIMOPS RSSI0 RSSI1 RSSI2 PhMd BW MCS SGI STBC Idle Rate C0:56:E3:9F:08:75 1 0 0 1 3 -26 -30 0 HTMIX 40M 7 0 1 300 135 4873 , 51947, 90% C0:56:E3:9F:08:6B 2 0 0 1 3 -53 -49 0 HTMIX 40M 7 0 1 300 135 13101 , 64807, 79% 20:F8:5E:A0:21:65 3 0 0 0 0 -51 -46 0 CCK 20M 3 0 0 272 11 584 , 594, 1% 00:1A:97:01:A1:47 4 0 0 1 3 -43 -47 0 HTMIX 40M 7 0 0 29 |