解决linux系统网卡加载慢的问题

手上有块开发板,启动系统后,需要五六分钟后无线wifi网卡才能加载起来,网卡型号是qca9377。

第一步先确认是不是第一时间挂载到PCI总线上了,在ath10k_pci_probe函数中添加调试信息,另外查看/sys/bus/pci/drivers/ath10k_pci/确认系统启动后已经识别到PCI设备

但这时候网卡还没识别到,如下图

大约过5、6分钟后,系统识别到了网卡wlp16s0

ifconfig 也能看到网卡了

以上过程说明网卡驱动启动了并且没有异常退出,只是中间堵塞在什么地方了。继续在ath10k_pci_probe函数中增加调试信息,定位阻塞点,最终确认阻塞在驱动加载firmware的地方

驱动加载网卡芯片firmware有三种方式

1.内核直接找firmware

2.内核通过uevent通知用户空间读取firmware

方法1,查看源码发现网卡firmware,没有添加到指定的路径中,所以没有找到固件

static const char * const fw_path[] = {
        fw_path_para,
        "/lib/firmware/updates/" UTS_RELEASE,
        "/lib/firmware/updates",
        "/lib/firmware/" UTS_RELEASE,
        "/lib/firmware"
};

方法2,有阻塞和非阻塞方式,目前开发板默认用的阻塞模式

看代码驱动需要加载多个bin文件(但实际没有这么多网卡也能正常用),板间确实没有这些bin文件所以就会阻塞在这里。

这个阻塞时间可以通过/sys/class/firmware/timeout设置,开发板默认用的是60s,总共有5个bin文件,所以阻塞了5分钟左右的时间

直接将/sys/class/firmware/timeout改成了3s,解决了该问题

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值