Android P WiFi调试之路 --- WiFi连接失败

在Andrid P版本上调试WiFi功能时,再断开WiFi后,发现后续很难再次连接上,遂跟踪了整个driver以及supplicant日志,其中supplicant中有如下日志:

01-01 00:01:11.325  4235  4235 D wpa_supplicant: nl80211: Scan results indicate BSS status with 98:de:d0:44:07:f3 as associated

 

01-01 00:01:17.996  4235  4235 D wpa_supplicant: nl80211: Connect (ifindex=8)

01-01 00:01:17.996  4235  4235 D wpa_supplicant:   * bssid=98:de:d0:44:07:f3

01-01 00:01:17.996  4235  4235 D wpa_supplicant:   * bssid_hint=98:de:d0:44:07:f3

01-01 00:01:17.996  4235  4235 D wpa_supplicant:   * freq=2412

01-01 00:01:17.997  4235  4235 D wpa_supplicant:   * freq_hint=2412

01-01 00:01:17.997  4235  4235 D wpa_supplicant:   * SSID - hexdump(len=10): 77 69 66 69 36 30 5f 32 34 47

01-01 00:01:17.997  4235  4235 D wpa_supplicant:   * IEs - hexdump(len=23): 3b 15 51 51 52 53 54 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82

01-01 00:01:17.997  4235  4235 D wpa_supplicant:   * Auth Type 0

01-01 00:01:17.997  4235  4235 D wpa_supplicant: nl80211: MLME connect failed: ret=-114 (Operation already in progress)

跟踪从supplicant->kernel连接流程:

wpa_driver_nl80211_associate

  wpa_driver_nl80211_connect

    wpa_driver_nl80211_try_connect

 

        NL80211_CMD_CONNECT    进入Kernel   

            nl80211_connect

                cfg80211_connect

在cfg80211_connect函数中有如下部分代码:

    if (wdev->current_bss) {
        if (!prev_bssid)
            return -EALREADY;
        if (!ether_addr_equal(prev_bssid, wdev->current_bss->pub.bssid))
            return -ENOTCONN;
    }

 

调试打印后可知当内核中变量wdev->current_bss有值时,将不会再执行连接命令,而是报错返回。

而wdev->current_bss变量则应在

cfg80211_disconnected

    __cfg80211_disconnected

函数中清空。跟踪driver内核代码,查找出在发生断连时,driver并没有正常调用到cfg80211_disconnected函数,进而导致了该错误。只要在driver代码中断连时,正常调用到cfg80211_disconnected函数,即可消除该错误。

 

 

 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值