我是靠谱客的博主 自信网络,最近开发中收集的这篇文章主要介绍andriod R wifi切换ap失败,并连接上最近一次连接的ap,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述:
连接并保存两个及以上ap,在连接上的过程中进行切换到已保存ap(当前能扫到此ap),切换失败。
复现并分析:
尝试了如下几种切换连接的情况,首先保证保存了两个及两个以上的能单独连接的上的ap:

  1. 连接ap前,保证断开上一次连接断开  结果:此种方式切换都可成功
  2. 连接ap前,不断开上一次连接,直接进行已保存且能够扫描到的ap切换   结果:切换不成功
  3. 在已经连接上ap情况下,去连接新的ap,会出现连接不成功(设备显示不成功是因为密码错误,其实输入密码是正确的),如图:
    在这里插入图片描述
    分析:
    我在复现的过程中出现了低概率切换成功的情况,所以需要抓到特定问题的日志,我对日志简单的进行了选取:
network state changed... 
NETWORK_STATE_CHANGED_ACTION,changed=true,mLastConnected=true,isMobileNetEnable=false
wpa_supplicant: wlan0: Associated with d2:ab:d5:be:09:1f
wpa_supplicant: wlan0: WPA: RX message 1 of 4-Way Handshake from d2:ab:d5:be:09:1f (ver=2)
wpa_supplicant: wlan0: WPA: Sending EAPOL-Key 2/4
wpa_supplicant: l2_packet_send - sendto: No buffer space available
wpa_supplicant: wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
wpa_supplicant: wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="yoyo" auth_failures=1 duration=10 reason=WRONG_KEY

从日志看,是因为在第二次握手阶段,No buffer space available,这是问题的关键。
解决方法:
在kernel/msm-4.19 / net/sched/sch_generic.c中:

static void dev_deactivate_queue(struct net_device *dev,
				 struct netdev_queue *dev_queue,
				 void *_qdisc_default)
{
	struct Qdisc *qdisc = rtnl_dereference(dev_queue->qdisc);
 ++   struct Qdisc *qdisc_default = _qdisc_default;

	if (qdisc) {
		if (!(qdisc->flags & TCQ_F_BUILTIN))
			set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state);
 ++         rcu_assign_pointer(dev_queue->qdisc, qdisc_default);
	}
}

需要添加上面代码中有“++”符号的代码解决buff问题

最后

以上就是自信网络为你收集整理的andriod R wifi切换ap失败,并连接上最近一次连接的ap的全部内容,希望文章能够帮你解决andriod R wifi切换ap失败,并连接上最近一次连接的ap所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部