[Bug 264238] WiFi stops working after upgrade from 13.0 to 13.1, AR9285 (wpa_supplicant)
Date: Mon, 13 Jun 2022 23:56:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264238 --- Comment #67 from Cy Schubert <cy@FreeBSD.org> --- wpa_driver_bsd_scan() calls set80211param() to set IEEE80211_IOC_ROAMING to IEEE80211_ROAMING_MANUAL immediately after setting mediaopt to STA. This is unconditional and if it fails it will issue a message to syslog. All this is passed to bsd_set80211() which calls ioctl at line 120: if (ioctl(drv->global->sock, SIOCS80211, &ireq) < 0) { wpa_printf(MSG_ERROR, "ioctl[SIOCS80211, op=%u, val=%u, " "arg_len=%u]: %s", op, val, arg_len, strerror(errno)); return -1; } It is this error message we see in syslog, which may well be that it's failing to set IEEE80211_ROAMING_MANUAL. A backtrace would be able to confirm this. The interesting thing we notice is that op contains various values. I've seen -1 and 20 so far. op is passed to bsd_set80211() via set80211var() and set80211param(), each of which is called by numerous other callers. strerrorr(errno) is "invalid argument." The question remains, which caller is responsible for this? Once the user can obtain a dump, the backtrace will tell us which calling path is used and we can discover where opt and val are set, because both of these are set many frames above this frame, thus will be on the stack. The user will need to provide wpa_supplicant.core from the binary I sent her -- because I put an abort() in place of the return. -- You are receiving this mail because: You are on the CC list for the bug.