微信扫码,给个关注吧

最近遇到一个问题,连接WiFi时,密码正确,显示saved,但是一直连接不上,分析log发现问题出在关联的时候,关联被拒绝了。
下面根据log看一下流程:

Log:

04-20 16:07:59.571  1958  1958 D wpa_supplicant: nl80211: Drv Event 46 (NL80211_CMD_CONNECT) received for wlan004-20 16:07:59.571  1958  1958 D wpa_supplicant: nl80211: Connect event (status=1 ignore_next_local_disconnect=0)04-20 16:07:59.571  1958  1958 D wpa_supplicant: wlan0: Event ASSOC_REJECT (12) received04-20 16:07:59.571  1958  1958 I wpa_supplicant: wlan0: CTRL-EVENT-ASSOC-REJECT bssid=00:1d:7e:59:71:0c status_code=104-20 16:07:59.571  1958  1958 D wpa_supplicant: Notifying assoc reject to hidl control: 104-20 16:07:59.571  1958  1958 D wpa_supplicant: wlan0: Radio work 'connect'@0x760802e300 done in 2.668643 seconds04-20 16:07:59.571  1958  1958 D wpa_supplicant: wlan0: radio_work_free('connect'@0x760802e300): num_active_works --> 004-20 16:07:59.571  1958  1958 D wpa_supplicant: Added BSSID 00:1d:7e:59:71:0c into blacklist04-20 16:07:59.571  1958  1958 D wpa_supplicant: wlan0: Blacklist count 3 --> request scan in 1000 ms04-20 16:07:59.571  1958  1958 D wpa_supplicant: wlan0: Setting scan request: 1.000000 sec04-20 16:07:59.571  1958  1958 D wpa_supplicant: nl80211: Data frame filter flags=0x004-20 16:07:59.571  1958  1958 E wpa_supplicant: nl80211: Failed to open /proc/sys/net/ipv4/conf/wlan0/drop_unicast_in_l2_multicast: No such file or directory04-20 16:07:59.571  1958  1958 E wpa_supplicant: nl80211: Failed to set IPv4 unicast in multicast filter04-20 16:07:59.571  1958  1958 D wpa_supplicant: wlan0: State: ASSOCIATING -> DISCONNECTED04-20 16:07:59.571  1958  1958 D wpa_supplicant: nl80211: Set wlan0 operstate 0->0 (DORMANT)04-20 16:07:59.571  1958  1958 D wpa_supplicant: netlink: Operstate: ifindex=9 linkmode=-1 (no change), operstate=5 (IF_OPER_DORMANT)04-20 16:07:59.572   712   712 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 004-20 16:07:59.572  1958  1958 D wpa_supplicant: Notifying state change event to hidl control: 004-20 16:07:59.572  1958  1958 D wpa_supplicant: EAPOL: External notification - portEnabled=004-20 16:07:59.572  1958  1958 D wpa_supplicant: EAPOL: External notification - portValid=004-20 16:07:59.572  1958  1958 D wpa_supplicant: EAPOL: External notification - EAP success=004-20 16:07:59.572  1958  1958 E wpa_supplicant: eap_proxy: eap_proxy_notify_config04-20 16:07:59.572   712   712 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 004-20 16:07:59.572  1334  9020 D SupplicantStaIfaceHal: ISupplicantStaIfaceCallback.onAssociationRejected received04-20 16:07:59.572  1334  2052 D SupplicantStaIfaceHal: ISupplicantStaIfaceCallback.onVendorStateChanged received04-20 16:07:59.572  1334  2052 D SupplicantStaIfaceHal: ISupplicantStaIfaceCallback.updateStateIsFourway received04-20 16:07:59.572  1334  1750 D WifiStateMachine:  DisconnectedState !ASSOCIATION_REJECTION_EVENT rt=340168/340168  timedOut=0 1 00:1d:7e:59:71:0c blacklist=false04-20 16:07:59.572  1334  1750 D WifiStateMachine:  ConnectModeState !ASSOCIATION_REJECTION_EVENT rt=340168/340168  timedOut=0 1 00:1d:7e:59:71:0c blacklist=false04-20 16:07:59.572  1334  1750 W WifiDiags: CaptureBugReport 104-20 16:07:59.600  1334  1334 W WifiStateMachin: type=1400 audit(0.0:649): avc: denied { syslog_read } for scontext=u:r:system_server:s0 tcontext=u:r:kernel:s0 tclass=system permissive=004-20 16:07:59.605  1334  1750 D wifi-jni: no kernel logs04-20 16:07:59.606  1334  1750 D WifiStateMachine: Assocation Rejection event: bssid=00:1d:7e:59:71:0c reason code=1 timedOut=false04-20 16:07:59.606  1066  1066 I /system/bin/tombstoned: found intercept fd 512 for pid 3087 and type kDebuggerdJavaBacktrace04-20 16:07:59.607  1334  1750 D WifiConnectivityManager: trackBssid: disable 00:1d:7e:59:71:0c reason code 104-20 16:07:59.607  3087  3099 I e.process.gapp: Wrote stack traces to '[tombstoned]'04-20 16:07:59.607  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 1 and threshold is 504-20 16:07:59.607  9091  9091 I /system/bin/dumpstate: libdebuggerd_client: done dumping process 308704-20 16:07:59.607  9091  9091 I /system/bin/dumpstate: libdebuggerd_client: started dumping process 327104-20 16:07:59.608  1066  1066 I /system/bin/tombstoned: registered intercept for pid 3271 and type kDebuggerdJavaBacktrace04-20 16:07:59.608  3271  3279 I d.process.acor: Thread[3,tid=3279,WaitingInMainSignalCatcherLoop,Thread*=0x70b0416400,peer=0x12e40220,"Signal Catcher"]: reacting to signal 304-20 16:07:59.608  1334  1750 V WifiLastResortWatchdog: noteConnectionFailureAndTriggerIfNeeded: ["FWDVT-WPA2", 00:1d:7e:59:71:0c, 1]04-20 16:07:59.608  1334  1750 V WifiLastResortWatchdog: updateFailureCountForNetwork: ["FWDVT-WPA2", 00:1d:7e:59:71:0c, 1]04-20 16:07:59.608  3271  3279 I d.process.acor: 04-20 16:07:59.608  1334  1750 V WifiLastResortWatchdog: checkTriggerCondition.04-20 16:07:59.608  1334  1750 V WifiLastResortWatchdog: isRestartNeeded = false04-20 16:07:59.608  1334  1750 D WifiStateMachine:  DisconnectedState !SUPPLICANT_STATE_CHANGE_EVENT rt=340204/340204 0 0 SSID: FWDVT-WPA2 BSSID: 00:1d:7e:59:71:0c nid: 3 state: DISCONNECTED04-20 16:07:59.608  1334  1750 D WifiStateMachine: SUPPLICANT_STATE_CHANGE_EVENT state=DISCONNECTED -> state= DISCONNECTED04-20 16:07:59.608  1334  1750 D WifiStateMachine: setDetailed state, old =CONNECTING and new state=DISCONNECTED hidden=false04-20 16:07:59.609  1334  1750 D WifiStateMachine:  ConnectModeState !SUPPLICANT_STATE_CHANGE_EVENT rt=340204/340204 0 0 SSID: FWDVT-WPA2 BSSID: 00:1d:7e:59:71:0c nid: 3 state: DISCONNECTED04-20 16:07:59.609  1334  1750 D SupplicantStateTracker: HandshakeState{ when=-2ms what=147499 target=com.android.internal.util.StateMachine$SmHandler }04-20 16:07:59.609  1334  1750 D SupplicantStateTracker: DefaultState{ when=-3ms what=147499 target=com.android.internal.util.StateMachine$SmHandler }04-20 16:07:59.609  1334  1750 E SupplicantStateTracker: Ignoring { when=-3ms what=147499 target=com.android.internal.util.StateMachine$SmHandler }04-20 16:07:59.609  1334  1750 D SupplicantStateTracker: HandshakeState{ when=-1ms what=147462 obj= SSID: FWDVT-WPA2 BSSID: 00:1d:7e:59:71:0c nid: 3 state: DISCONNECTED target=com.android.internal.util.StateMachine$SmHandler }04-20 16:07:59.609  1334  1750 D SupplicantStateTracker: DefaultState{ when=-1ms what=147462 obj= SSID: FWDVT-WPA2 BSSID: 00:1d:7e:59:71:0c nid: 3 state: DISCONNECTED target=com.android.internal.util.StateMachine$SmHandler }

WiFi连接时关联被拒绝,会被加入黑名单。

代码流程:

/external/wpa_supplicant_8/wpa_supplicant/events.c

void wpa_supplicant_event(void *ctx, enum wpa_event_type event,union wpa_event_data *data)
{struct wpa_supplicant *wpa_s = ctx;int resched;
#endif /* CONFIG_IBSS_RSN */case EVENT_ASSOC_REJECT:if (data->assoc_reject.bssid)wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_ASSOC_REJECT"bssid=" MACSTR   " status_code=%u%s%s%s",MAC2STR(data->assoc_reject.bssid),data->assoc_reject.status_code,data->assoc_reject.timed_out ? " timeout" : "",data->assoc_reject.timeout_reason ? "=" : "",data->assoc_reject.timeout_reason ?data->assoc_reject.timeout_reason : "");elsewpa_msg(wpa_s, MSG_INFO, WPA_EVENT_ASSOC_REJECT"status_code=%u%s%s%s",data->assoc_reject.status_code,data->assoc_reject.timed_out ? " timeout" : "",data->assoc_reject.timeout_reason ? "=" : "",data->assoc_reject.timeout_reason ?data->assoc_reject.timeout_reason : "");wpa_s->assoc_status_code = data->assoc_reject.status_code;wpa_s->assoc_timed_out = data->assoc_reject.timed_out;wpas_notify_assoc_status_code(wpa_s);
int wpa_supplicant_connect(struct wpa_supplicant *wpa_s,struct wpa_bss *selected,struct wpa_ssid *ssid)
{wpa_msg(wpa_s, MSG_DEBUG,"Considering connect request: reassociate: %d  selected: "MACSTR "  bssid: " MACSTR "  pending: " MACSTR"  wpa_state: %s  ssid=%p  current_ssid=%p",wpa_s->reassociate, MAC2STR(selected->bssid),MAC2STR(wpa_s->bssid), MAC2STR(wpa_s->pending_bssid),wpa_supplicant_state_txt(wpa_s->wpa_state),ssid, wpa_s->current_ssid);if (wpa_s->reassociate ||(os_memcmp(selected->bssid, wpa_s->bssid, ETH_ALEN) != 0 &&((wpa_s->wpa_state != WPA_ASSOCIATING &&wpa_s->wpa_state != WPA_AUTHENTICATING) ||(!is_zero_ether_addr(wpa_s->pending_bssid) &&os_memcmp(selected->bssid, wpa_s->pending_bssid, ETH_ALEN) !=0) ||(is_zero_ether_addr(wpa_s->pending_bssid) &&ssid != wpa_s->current_ssid)))) {if (wpa_supplicant_scard_init(wpa_s, ssid)) {wpa_supplicant_req_new_scan(wpa_s, 10, 0);return 0;}wpa_msg(wpa_s, MSG_DEBUG, "Request association with " MACSTR,MAC2STR(selected->bssid));wpa_supplicant_associate(wpa_s, selected, ssid);} else {wpa_dbg(wpa_s, MSG_DEBUG, "Already associated or trying to ""connect with the selected AP");}return 0;
}

void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,

struct wpa_bss *bss, struct wpa_ssid *ssid)
{struct wpa_connect_work *cwork;int rand_style;cwork->bss = bss;cwork->ssid = ssid;if (radio_add_work(wpa_s, bss ? bss->freq : 0, "connect", 1,wpas_start_assoc_cb, cwork) < 0) {os_free(cwork);}
}
static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit)if (wpa_s->reassoc_same_ess && !is_zero_ether_addr(prev_bssid) &&wpa_s->current_ssid)params.prev_bssid = prev_bssid;ret = wpa_drv_associate(wpa_s, &params);os_free(wpa_ie);if (ret < 0) {wpa_msg(wpa_s, MSG_INFO, "Association request to the driver ""failed");if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SANE_ERROR_CODES) {/** The driver is known to mean what is saying, so we* can stop right here; the association will not* succeed.*/wpas_connection_failed(wpa_s, wpa_s->pending_bssid);wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED);os_memset(wpa_s->pending_bssid, 0, ETH_ALEN);return;}/* try to continue anyway; new association will be tried again* after timeout */assoc_failed = 1;}case EVENT_ASSOC_REJECT:if (data->assoc_reject.bssid)wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_ASSOC_REJECT"bssid=" MACSTR  " status_code=%u%s%s%s",MAC2STR(data->assoc_reject.bssid),data->assoc_reject.status_code,data->assoc_reject.timed_out ? " timeout" : "",data->assoc_reject.timeout_reason ? "=" : "",data->assoc_reject.timeout_reason ?data->assoc_reject.timeout_reason : "");elsewpa_msg(wpa_s, MSG_INFO, WPA_EVENT_ASSOC_REJECT"status_code=%u%s%s%s",data->assoc_reject.status_code,data->assoc_reject.timed_out ? " timeout" : "",data->assoc_reject.timeout_reason ? "=" : "",data->assoc_reject.timeout_reason ?data->assoc_reject.timeout_reason : "");wpa_s->assoc_status_code = data->assoc_reject.status_code;wpa_s->assoc_timed_out = data->assoc_reject.timed_out;wpas_notify_assoc_status_code(wpa_s);

/external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant.c

void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid)
{int timeout;int count;int *freqs = NULL;wpas_connect_work_done(wpa_s);eloop_cancel_timeout(wpa_supplicant_timeout, wpa_s, NULL);if (wpa_s->own_disconnect_req) {wpa_s->own_disconnect_req = 0;wpa_dbg(wpa_s, MSG_DEBUG,"Ignore connection failure due to local request to disconnect");return;}if (wpa_s->disconnected) {wpa_dbg(wpa_s, MSG_DEBUG, "Ignore connection failure ""indication since interface has been put into ""disconnected state");return;}count = wpa_blacklist_add(wpa_s, bssid);if (count == 1 && wpa_s->current_bss) {freqs = get_bss_freqs_in_ess(wpa_s);if (freqs) {wpa_dbg(wpa_s, MSG_DEBUG, "Another BSS in this ESS ""has been seen; try it next");wpa_blacklist_add(wpa_s, bssid);os_free(wpa_s->next_scan_freqs);wpa_s->next_scan_freqs = freqs;}}count += wpa_s->extra_blacklist_count;if (count > 3 && wpa_s->current_ssid) {wpa_printf(MSG_DEBUG, "Continuous association failures - ""consider temporary network disabling");wpas_auth_failed(wpa_s, "CONN_FAILED");}switch (count) {case 1:timeout = 100;break;case 2:timeout = 500;break;case 3:timeout = 1000;break;case 4:timeout = 5000;break;default:timeout = 10000;break;}wpa_dbg(wpa_s, MSG_DEBUG, "Blacklist count %d --> request scan in %d ""ms", count, timeout);/** TODO: if more than one possible AP is available in scan results,* could try the other ones before requesting a new scan.*/wpa_supplicant_req_scan(wpa_s, timeout / 1000,1000 * (timeout % 1000));
}

加入黑名单代码:

/external/wpa_supplicant_8/wpa_supplicant/blacklist.c

int wpa_blacklist_add(struct wpa_supplicant *wpa_s, const u8 *bssid)
{struct wpa_blacklist *e;if (wpa_s == NULL || bssid == NULL)return -1;e = wpa_blacklist_get(wpa_s, bssid);if (e) {e->count++;wpa_printf(MSG_DEBUG, "BSSID " MACSTR " blacklist count ""incremented to %d",MAC2STR(bssid), e->count);return e->count;}e = os_zalloc(sizeof(*e));if (e == NULL)return -1;os_memcpy(e->bssid, bssid, ETH_ALEN);e->count = 1;e->next = wpa_s->blacklist;wpa_s->blacklist = e;wpa_printf(MSG_DEBUG, "Added BSSID " MACSTR " into blacklist",MAC2STR(bssid));return e->count;
}

其中有一个数字计数器,它在每次尝试重新连接时递增。

04-20 16:07:59.607  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 1 and threshold is 504-20 16:08:05.524  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 2 and threshold is 504-20 16:08:17.640  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 3 and threshold is 504-20 16:08:32.557  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 4 and threshold is 504-20 16:10:12.561  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 1 and threshold is 504-20 16:10:25.218  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 2 and threshold is 504-20 16:10:38.021  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 3 and threshold is 504-20 16:11:03.240  1334  1750 V WifiConfigManager: Disable counter for network FWDVT-WPA2 for reason NETWORK_SELECTION_DISABLED_ASSOCIATION_REJECTION  is 4 and threshold is 5

WiFi关联拒绝log分析以及代码流程 ASSOC_REJECT相关推荐

  1. 经典蓝牙 蓝牙连接 - 从AIR LOG和HCI LOG分别分析蓝牙连接流程

    1.目录 文章目录 1.目录 2.LMP连接 3.从HCI LOG分析蓝牙连接流程 1.HCI_Inquiry 1.1 命令参数解析 1.1.1 LAP IAC 1.1.2 Inquiry_Lengt ...

  2. Android 中的WiFi学习笔记(转载)----WIFI启动 代码流程走读---网络连接流程

    Android的WiFi 我们通常看到WiFi的守护进程wpa_supplicant在我们的ps的进程列表中,这个就是我们的wifi守护进程.wpa_supplicant在external/wpa_s ...

  3. Android 10.0热点为Enhanced Open模式时不允许WiFI和热点同时开启代码流程梳理

    前言: WLAN Enhanced Open 官方介绍 WLAN Enhanced Open :WiFi增强开放,这个功能就是当手机开启热点时,Securty的一个选项,与WPA2/WPA3同级,En ...

  4. Android原生音频变调代码流程分析

    会说话的Tom猫是一款非常经典的终端游戏,可爱的Tom猫可以发出不同音调的声音. 之前用过一个非常著名的开源库SoundTouch可以实现音频的变速变调功能,具体可参考: https://blog.c ...

  5. MTK的无线驱动代码流程分析

    MTK无线驱动TX和RX分析 介绍 驱动流程 介绍 更好分析无线驱动代码在gitbub下的源代码:https://github.com/chaokw/mt7603e-p4rev-112670.git, ...

  6. 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )

    文章目录 一.自定义线程池使用流程 二.自定义任务拒绝处理策略 三.完整代码示例 在博客 [Android 异步操作]线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTas ...

  7. matlab的灰色关联,五种灰色关联度分析matlab代码

    <五种灰色关联度分析matlab代码>由会员分享,可在线阅读,更多相关<五种灰色关联度分析matlab代码(3页珍藏版)>请在人人文库网上搜索. 1.灰色邓关联分析% p12- ...

  8. netts之 CTWSocket代码流程分析(整体是客户端请求式的)

    netts之 CTWSocket代码流程分析(整体是客户端请求式的) 1.外部程序载入调用 netts.dll 2.外部程序调用 netts实现的Stock_Init_Nodialog,(Stock_ ...

  9. android加载efi分区,高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  10. android uefi 编译报错,【Android SDM660开机流程】- UEFI XBL 代码流程分析

    [Android SDM660开机流程]- UEFI XBL 代码流程分析 一.UEFI XBL 1.1 boot_images代码目录 1.2 UEFI代码运行流程 1.3 SEC (安全验证) 1 ...

最新文章

  1. PAT甲级1100 Mars Numbers:[C++题解]进制位、使用stringstream类读入
  2. SAP、ORACLE、用友、金蝶四大ERP软件供应商的区别
  3. linux核能软件,ARM big.LITTLE大小核架构在Linux和Android内核下多核调度算法
  4. 数学里最令人着迷的公式之一--欧拉公式!
  5. rhel 8.2不识别unicode_基于tensorflow 实现端到端的OCR:二代身份证号识别
  6. C++Primer学习笔记:第8章 IO库
  7. 【HRBUST - 1621】迷宫问题II (bfs)
  8. CLR Via C# 学习笔记(5) 静态构造函数的性能
  9. 索尼SONY 820E摄像机内置64G存储卡无法识别拆MMC芯片完整恢复数据
  10. LT8619B 产品功能概述 HDMI1080P转BT1120
  11. 银行家算法C语言代码
  12. java nio网络编程的一点心得
  13. Unity控制物体移动旋转
  14. 陷入瓶颈的中国航空WiFi,还有可能赶英超美吗?
  15. 悬赏数据控!2018第一届网易有数可视化大赛火热开启!
  16. 光速类有哪些最新发表的毕业论文呢?
  17. Java的Lambda表达式实例
  18. 如何科学有效地根治肾虚——中篇(肾虚到底是什么?)
  19. ubuntu14.04搜狗输入法中文无法切换英文
  20. C语言:n个数的阶乘之和

热门文章

  1. 洛谷5339 BZOJ5510 TJOI2019 唱、跳、rap和篮球 容斥 dp 组合数
  2. QRCode.js 生成二维码放大后会模糊的问题
  3. 妇产科护理学复习重点归纳、试题及答案
  4. 深入分析Java中的length和length()
  5. 支付宝电脑版扫码支付
  6. 金山毒霸11,更新内容,问题修复了什么?
  7. MathType安装时遇到不能删除xx字体时的解决方法
  8. 校学 离散数学主析取合取范式 做题心得
  9. 前端性能优化之gzip 1
  10. 2016 0CTF rsa