While doing some testing for bug 97291 I've been switching a lot between two different APs. Both are configured to provide the same SSID, so I never run them at the same time. It happens frequently, that after switching the AP, the card doesn't find the network any more. The same issue occurs even on one AP when reconfiguring the AP to a new channel. Scanning lists other networks in the vicinity, but no my own one. Reloading the iwlwifi module fixes this. No problem on other devices, though, so I gues it's not a problem of the AP itself. This is with the firmware from bug 97291 and kernel 4.0.0 (still present on 4.1.0rc6)
My kernel was a bit out of date, but I just confirmed it's still the same with kernel 4.1.1 and firmware 25.30.13.0. I forgot to mention: This is for Intel wireless 7260.
This scenario is a bit on the edge. This is most likely a supplicant issue, but I an not sure there is any issue even. Please attach the logs from the supplicant with -dd. Or at least kernel logs to start with something....
Emmanuel, thanks for the hint. This seems not to be a driver issue. Manually initiating a scan by 'iwlist scan' as root works. The network is found normally and the network is connected to. I assume this is not the desired behavior, though, I'd expect scanning to happen automatically - would this be done by the supplicant or some higher-level program, such as the NetworkManager?
The supplicant is in charge of scanning. But the scanning might be offloaded to the device. Your little games might have confused the firmware. I will instructions on how to disable this offload tomorrow.
Sorry for the delay. Can you please try this: diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index dda9f7b..061856e 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c @@ -532,7 +532,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) else hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; - if (IWL_UCODE_API(mvm->fw->ucode_ver) >= 10) { + if (IWL_UCODE_API(mvm->fw->ucode_ver) >= 10 && false) { hw->wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; hw->wiphy->max_sched_scan_ssids = PROBE_OPTION_MAX; hw->wiphy->max_match_sets = IWL_SCAN_MAX_PROFILES; This will disable scan offload.
At the moment I'm running Ubuntu packaged kernels. It will take some time until I get this done. One note, though: this happens not only on BSSID changes, but also on the same BSSID when changing the channel on the AP.
you can use our backport driver if you want. This will make it easier for you to modify the code without recompiling your kernel. https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/backport-iwlwifi.git/
Hi Stefan, I didn't managed to reproduce the issue. Can you pls attach logs of supplicant and kernel?
Hi Stefan, in description written: "Scanning lists other networks in the vicinity, but no my own one" what do you mean by "Scanning list"? the list of network manager / wpa_supplicant/ ...
Hi, I meanthe network manager list. It shows other networks but not my own one. Same for 'iwlist scan' (as user). As root, 'iwlist scan' triggers a scan and my network is found, everything ok in this case. But if I leave it alone, my network never appears (at least, not within an hour, that was the longest time it tried).
Created attachment 184091 [details] syslog Syslog excerpt, wpa_supplicant is redirected to syslog. Test case: change configuration of router, thereby causing a disconnect. After some waiting time, issueing the 'sudo iwlist scan' successfully brings back the network.
Stefan, can you please increase the verbosity of the wpa_supplicant logs? This command should work: wpa_cli log_level excessive That will provide more information about the wpa_supplicant scan requests and such.