项目场景:
rk3288 android7.1.2 gm191模块调试
问题描述:
????????gm191模块开机后自动拨号,开启gps定位功能,并同时使用ping命令访问百度,在一段时间后会出现4g模块断网,等待一点时间后,4g上网功能恢复。
原因分析:
????????触发了framework 保活机制。这个保活机制就是在连上网后,send了数据包但是recv的数据包为0,就会累积send的数据包。当累积send的数据包大于10,就会触发recovery机制,第一次recovery只会列出当前网络状态,第二次就会断网重连。
? ? ? ? 此问题是在定位功能与上网功能同时开启的时候才会出现,基本确定是模块问题,后与模块供应商沟通,并未找到好的结局办法。
解决方案:
临时解决方案:增加send包累计次数,可以大概率避免触发recovery机制
frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -137,7 +137,7 @@ public class DcTracker extends Handler {
// 10 min. default polling interval when screen is off.
private static final int POLL_NETSTAT_SCREEN_OFF_MILLIS = 1000*60*10;
// Default sent packets without ack which triggers initial recovery steps
- private static final int NUMBER_SENT_PACKETS_OF_HANG = 10;
+ private static final int NUMBER_SENT_PACKETS_OF_HANG = 200;
// Default for the data stall alarm while non-aggressive stall detection
private static final int DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS_DEFAULT = 1000 * 60 * 6;
修改send包累计次数后,测试未出现过4g断网问题
|