自学内容网 自学内容网

切换数据失败0x1671分析

1、问题背景

        切换双卡数据开关,无法切换成功,且单机必现该问题

2、问题分析

    搜索Log发现相关拨号无法建立成功,返回0x1671,无法建立PDN连接。

 

相关拨号上层未下发相关AT命令,属于上层报错,并非网络问题,相关具体在代码RtcDataController.cpp的函数enqueueForPreferredDataMode中上报。

其中RFX_STATUS_KEY_SLOT_ALLOW表示当前RILD当前DDS,如果是当前DDS,这个SETUP_DATA_CALL下发到RILD的下一层,否者直接返回错误。那说明当前DDS没有更新,导致了问题。

对比正常切换和异常切换的Log分析。

正常Log

异常Log

异常Log在切换DDS时实际是没有切换的

从Log可以看到虽然上层都下发了> SET_PREFERRED_DATA_MODEM

并且RILD都回复了< SET_PREFERRED_DATA_MODEM 但是实际DDS确没有切换。相关切换流程总结如下。

红色框为问题出现的地方。查看相关代码

红色框为问题出现的地方。查看相关代码

说明mOnDemandQueue请求中还有相关请求在处理,导致无法下发切换DDS。最终在框架层发现如下异常请求,包名为“com.tencent.android.qqdownloader”,但是请求的能力没有Internet能力,只有BANDWITH和PRIORITIZE_LATENCY能力。卸载相关APP后问题恢复。

3、对比测试

        发现5G手机发现无此问题,原因在于5G modem支持有区别

相关代码区别在于EDataSimSupported是支持的,在5G平台

相关AT命令如下

4、解决方案

针对无APN相关的请求不要放入相关队列。

        由于 PRIORITIZE_LATENCY  PRIORITIZE_BANDWIDTH 与5G切片强相关,建议修改是加上5G能力判断。

5、延展验证

     抓取MTK 副卡发彩信流程

        0x1671实际为MTK设计的流程,当SETUP_DATA_CALL请求存在时,不允许相关DDS下发切换。如果只是临时的报错,可以忽略,如果一直上报错误,需要check相关拨号逻辑。


原文地址:https://blog.csdn.net/tjpuzm/article/details/140637383

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!