AR8033協商成1000M工作模式時,ping包丟失嚴重;通過關閉Green Feature可規避。 ...
1 現象
近期對一款基於QCA方案、有線Phy為AR8033、WiFi雙頻且支持iEEE802.11AC的WLAN產品進行了深度驗證,發現有線口同部分PC機直連時,WiFi終端ping 該PC機時總是丟包,有時高達20%;但通過交換機再接PC機時,又不會丟包。一直以為是偶現,所以未引起重視,反正跑流性能與穩定性都沒有任何影響。後來新購了一批千兆有線口的便攜機進行配套驗證時,發現每台都是如此,ping包丟得一塌塗地。在WLAN設備和PC機上分別開啟抓包工具,可以看到設備已發包,但PC機未收到報文;而由PC機直接ping設備有線口時,一切又正常。
2 處理
經過多方找原因,最後發現丟包嚴重的PC機的網卡強制工作在100M時,不會丟包;自動協商或強制1000M時,都會丟包。一度懷疑是硬體問題,折騰過好久;又同以前用過的AR8031進行對比驗證,用AR8031方案的WLAN設備,則不會出現丟包。偶然一次在修改PC機網卡的硬體屬性時,發現將“節能乙太網”功能關閉後,ping包就正常了。於是就沿QCA 有線Phy的EEE方向定位,嘗試去解決此問題。
在DS文檔中,與EEE相關的寄存器:MMD3中的4個,MMD7中6個;但怎麼改效果都不明顯;後來又去研讀MII寄存器和Debug寄存器,以及與節能相關的章節,最後發現0X3D號Debug寄存器中有下邊描述:
而且在其不同版本的QSDK、LSDK的中,針對有線MAC/PHY代碼,對不同晶元都有不同的配置;但此寄存器就bit15,bit7公開,其它位都是黑箱。bit7的功能好理解,與丟包問題應該沒有關係,所以就將bit15更改為1。重新編譯後,再次驗證,問題解決。
3 結論
可能是AR8033的Green feature比較特別,從而導致它與別的網卡的Green特征不相容,故優選將此特性關閉掉,以防實際使用中影響用戶體驗。
4 免責聲明
本方法僅供參考,若引起新問題(節能),一律免責。