Return-path: Received: from mail-la0-f44.google.com ([209.85.215.44]:59765 "EHLO mail-la0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751051AbbARTNP (ORCPT ); Sun, 18 Jan 2015 14:13:15 -0500 MIME-Version: 1.0 In-Reply-To: References: <54BBF207.2030708@broadcom.com> Date: Sun, 18 Jan 2015 21:13:13 +0200 Message-ID: (sfid-20150118_201323_530777_85FE86D1) Subject: Re: Wireless scanning while turning off the radio problem.. From: Emmanuel Grumbach To: Linus Torvalds Cc: Arend van Spriel , Johannes Berg , David Miller , Linux Wireless List , Network Development Content-Type: text/plain; charset=UTF-8 Sender: linux-wireless-owner@vger.kernel.org List-ID: On Sun, Jan 18, 2015 at 8:52 PM, Emmanuel Grumbach wrote: > On Sun, Jan 18, 2015 at 8:40 PM, Linus Torvalds > wrote: >> On Mon, Jan 19, 2015 at 5:48 AM, Arend van Spriel wrote: >>> >>> So as you indicated you were in location where none of your configured >>> networks were available. Flipping the rfkill switch in that situation is the >>> way to trigger the issue. >> >> So you certainly seem to be able to explain the behavior I saw under >> the circumstances they happened. >> >> I suspect the best thing to do is to just apply your patch. I may not >> be able to really test it much for the next few days anyway. Emmanuel? >> > > Sorry - I was a bit busy. > The patch seems wrong, we can't really call that function from the > rfkill interrupt - it will blow up. > The good news is that I could reproduce the bug based on what Arend > pointed. I totally missed the fact > that it was scheduled scan - thanks Arend for that. > > So the system I have here doesn't have HW rfkill so I had to implement > a hook that fakes it, > but I can't reproduce the problem. > I'll come up with a patch. Ok - Here is the patch: diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c index 384eefd..bbd8054 100644 --- a/drivers/net/wireless/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/iwlwifi/mvm/ops.c @@ -867,6 +867,9 @@ static bool iwl_mvm_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state) if (calibrating) iwl_abort_notification_waits(&mvm->notif_wait); + if (state) + mvm->scan_status = IWL_MVM_SCAN_NONE; + /* * Stop the device if we run OPERATIONAL firmware or if we are in the * middle of the calibrations. I will send that for internal review, because I am not all that much familiar with this and I want the guy who wrote that code to take a look before I send a pull request, but that should help. In any case, Linus, until you get the fix (which should be sent to upstream in 12 hours) you can restart the whole wifi stack instead of rebooting: sudo modprobe -r iwlwifi sudo modprobe iwlwifi sudo killall wpa_supplicant that should bring your wifi back without the need to reboot.