汽车客户WiFi问题:WiFi5掉卡,根本原因是PCIE RC没有恢复config space

客户问题:2个不同的汽车客户(T,C)分别报了2个WiFi 5 掉卡问题。

问题描述:

在MDM4xx with kernel 4.9平台上,尝试做WiFi SSR恢复,发现WiFi5掉卡,PCIE link downr,无法恢复。

复现:

        本地实验室容易复现。

        但是在MDM5xx with kernel 4.14,这个问题无法复现。

其中有2个变量,一个是平台不同,一个是kernel 不同,跟印度PCIE RC SW team开会讨论过,他们过log,也想不到什么线索。于是WiFi team继续debug。

分析Triage:

庆幸的是,我们请到了pcie专家,他帮忙抓了pcie sniffer log,对比MDM4xx和MDM5xx,坏的和好的case,发现MDM4xx在SSR之后,PCIE没有恢复config space。

根本原因和解决办法:

于是我们一起对比kernel 4.9和kernel 4.14 的code,发现kernel 4.14里面调用了msm_pcie_cfg_recover if pcie link出现问题的话。于是WiFi team就把这段code 加回到kernel 4.9里面,解决了这个问题。

原则上,这个问题的owner应该是 PCIE RC SW team,他们应该是忘记merge这段code,结果被WiFi SSR给撞上了。虽然印度人没有找到任何有用的线索,但是借助WiFi team+pcie专家一起,很快定位了问题并给出了解决方案。

Ankie的评论:

在应对PCIE linkdown问题,我们需要超越表面的现象,深入探究其背后的根本原因。问题可能源WiFi这边,也可能是在平台端。有时候通过driver的打印即可判断,有时候需要通过PCIE sniffer log 抓包,看看问题到底出在哪里。面对这些挑战,我们必须借助多样化的测试和分析手段,层层剥离,逐步逼近问题的核心。只有这样,我们才能制定出最为恰当、有效的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 Oracle 到 TiDB,国有大行打造本地生活 APP 新体验

导读 本文介绍了某国有大行推出的本地生活服务类 APP 在数字时代的创新应用实践。该 APP 利用金融科技和互联网平台模式,打造“金融非金融”的线上生态服务平台,满足了用户多样化的生活需求。为应对用户增长和数据量增加带来的挑战,该 APP 决…

【原创】nnUnet V1在win11下的安装与配置

安装之前可以先了解一下论文的主要内容,便于之后网络训练与推理,调试程序。 论文地址:nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation | Nature Methods 也可以从其他博客快速浏览&#xff1a…

Python 利用迭代器or生成器,让小内存也能处理大文件

首先 准备1个log 文件 app.log 它有60000 行数据 from loguru import logger import osdef sample1():log_path get_log_path()with open(log_path, "r") as f:list_logs f.readlines()logger.info("length of app.logs: {}".format(len(list_logs)))# …

计算机网络(网络原理与应用)之高级交换实验------冗余环路与生成树协议

一、实验目的 (1)了解生成树协议的作用; (2)熟悉生成树协议的配置。 二、应用环境 采用生成树协议可以避免环路。 生成树协议的根本目的是将一个存在物理环路的交换网络变成一个没有环路的逻辑树形网络。IEEE802.ID协议通过在交换机上运行一套复杂的算法STA(sp…

JupyterLab OpenCV展示图片

JupyterLab OpenCV展示图片 方式一 注意:此种方式如果在远程服务器上的JupyterLab上运行,可能会出现错误。 import cv2# 读取图片 image cv2.imread(photo/blg.png)# 显示图片 cv2.imshow(image, image)# 等待按键,之后关闭所有窗口 cv2.w…

Deckset for Mac:让演示文稿制作更轻松

还在为繁琐的演示文稿制作而烦恼吗?Deckset for Mac来帮您解决!它支持Markdown语言,让您只需专注于内容的创作,无需在排版和设计上耗费过多精力。丰富的主题和布局选项,让您能够轻松打造出专业级的演示文稿。快来体验D…

我的 OpenLiteSpeed 从开始到放弃之经历

昨晚下定决心放弃 OpenLiteSpeed 了,从开始到放弃历时七天。总结下来放弃 OpenLiteSpeed 主要是实在不适合明月当前的需要,用起来不是锦上添花而是个累赘了都,今天明月就给大家总结分享一下这次 OpenLiteSpeed 从开始到放弃的经历。 一、Ngin…

【C++基础】最短距离和路径问题

时间限制 : 1 秒 内存限制 : 128 MB 有n个城市&#xff08;编号为1~n&#xff09;&#xff0c;m条道路&#xff08;n < 1000, m < 10000)&#xff0c;每条道路有个长度&#xff08;道路是双向的&#xff0c;两个方向都能走&#xff09;&#xff0c;请找到从起点s到终点…

OpenCV 实时目标检测

0.概述 1.原理介绍 2.代码实现 #include <iostream> #include <opencv2/opencv.hpp>int main() {// Load pre-trained MobileNet SSD model and configurationstd::string model "path_to_mobilenet_iter_73000.caffemodel";std::string config &qu…

List<User>转为Map<Integer,User>

在Java中&#xff0c;可以使用Java 8引入的Stream API来轻松地将List转换为Map。以下是将List转换为Map<Integer, User>的示例代码&#xff0c;其中User对象有一个名为id的整数属性作为唯一标识符。 import java.util.List; import java.util.Map; import java.util.str…

IO进程day6

1&#xff1a;有一个隧道&#xff0c;全长5公里&#xff0c;有2列火车&#xff0c;全长200米&#xff0c; 火车A时速 100公里每小时 火车B时速 50公里每小时 现在要求模拟火车反复通过隧道的场景(不可能2列火车都在隧道内运行…

LLM量化

Efficient Finetuning prefix tuning 针对每种任务&#xff0c;学习prefix vector 启发于prompting&#xff0c;调整上下文内容让模型去输出自己想要的内容 核心就是找到一个上下文去引导模型解决NLP生成任务 传统情况下&#xff0c;我们为了得到想要的结果&#xff0c;会…

[初学rust] 04_rust复合类型

rust复合类型 字符串 由于rust的字符串元素类型是u8(1字节),但是字符类型是unicode(4字节) 索引不能像C那样读取又由于String类型和&str类型都是utf-8编码&#xff0c;中文占3字节切片可能会导致崩溃 slice(切片) 切片就是对String类型中的一部分的引用&#xff0c;它…

语言:C#

一、VSCode生成exe 二、

EasyRecovery(易恢复) 使用测试及详细使用方法

你有没有因为数据丢失懊悔不已&#xff0c;EasyRecovery&#xff08;易恢复&#xff09;&#xff0c;来自美国拥有38年数据恢复的软件&#xff0c;只有收费版&#xff0c;重要事情说三遍&#xff0c;EasyRecovery 没有免费版&#xff0c;可以成功找回删除的部分文件&#xff0c…

SQLite .journal 文件

在之前插入大量数据测试的时候&#xff0c;发现在数据库文件同级目录下会产生一个同名.journal的文件&#xff0c;并且不是一直会存在&#xff0c;而是生成一会就会自动删除&#xff0c;然后继续生成继续删除&#xff0c;直到数据插入完成。 初步猜测&#xff0c;应该是类似 re…

增强客户黏性:服装实体店扫码连锁收银软件提供多样的会员营销策略

随着消费者对购物体验的需求不断提升&#xff0c;服装实体店面临着更大的挑战和机遇。为了增强客户黏性&#xff0c;提升销售业绩&#xff0c;越来越多的服装实体店开始引入扫码连锁收银软件&#xff0c;并提供多样化的会员营销策略。这一举措不仅为店铺提供了更加智能化的经营…

C语言——文件相关操作补充

一、文件读取结束的判定 当我们使用例如fgetc、fgets、fscanf、fread等函数来读取文件内容时&#xff0c;我们可能遇到需要判断文件读取的结束&#xff0c;一般情况下都是通过这些函数的返回值来判断文件读取是否结束。 1、fgetc 返回读取的字符的ASCII值&#xff0c;如果读…

JUnit 4单元测试常用注解和方法

引言 JUnit 4作为Java开发者广泛使用的测试框架&#xff0c;通过提供丰富的注解和断言方法&#xff0c;极大地简化了单元测试的编写和维护。本文将介绍JUnit 4的核心特性和最佳实践。 单元测试的重要性 独立性&#xff1a;每个测试应该是独立的&#xff0c;不依赖于系统状态…

Java 守护线程 ( Daemon Thread )详解

在Java中&#xff0c;线程分为两类&#xff1a;用户线程(User Thread)和守护线程(Daemon Thread)。守护线程是后台线程&#xff0c;主要服务于用户线程&#xff0c;当所有的用户线程结束时&#xff0c;守护线程也会自动结束&#xff0c;JVM会随之退出。守护线程的一个典型例子是…