|
Takashi Iwai |
cdb9e4 |
From 6ad0435991482107664f65b7ae3fd588f10149d4 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
cdb9e4 |
From: Johannes Berg <johannes.berg@intel.com>
|
|
Takashi Iwai |
cdb9e4 |
Date: Tue, 25 Apr 2017 10:21:18 +0200
|
|
Takashi Iwai |
cdb9e4 |
Subject: [PATCH] iwlwifi: mvm: don't warn in queue sync on RF-kill
|
|
Takashi Iwai |
cdb9e4 |
Git-commit: 6ad0435991482107664f65b7ae3fd588f10149d4
|
|
Takashi Iwai |
cdb9e4 |
Patch-mainline: 4.13-rc1
|
|
Takashi Iwai |
cdb9e4 |
References: bsc#1051510
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
If we happen to be in or get into the queue sync when RF-kill
|
|
Takashi Iwai |
cdb9e4 |
is asserted, we return from there and warn since there are
|
|
Takashi Iwai |
cdb9e4 |
still queue sync notifications outstanding. These can't ever
|
|
Takashi Iwai |
cdb9e4 |
come though, because we're in RF-kill, so don't WARN then.
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
While at it, also move the warning to the appropriate place,
|
|
Takashi Iwai |
cdb9e4 |
if the request is not synchronous then we shouldn't warn, but
|
|
Takashi Iwai |
cdb9e4 |
currently always will.
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
To make it fast, also trigger the waitq when on rfkill assert.
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
Fixes: 0636b938214c ("iwlwifi: mvm: implement driver RX queues sync command")
|
|
Takashi Iwai |
cdb9e4 |
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|
Takashi Iwai |
cdb9e4 |
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
|
Takashi Iwai |
cdb9e4 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
---
|
|
Takashi Iwai |
cdb9e4 |
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 8 +++++---
|
|
Oliver Neukum |
318dca |
drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 4 ++--
|
|
Oliver Neukum |
318dca |
2 files changed, 7 insertions(+), 5 deletions(-)
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
|
|
Takashi Iwai |
cdb9e4 |
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
|
|
Oliver Neukum |
318dca |
@@ -4268,11 +4268,13 @@ void iwl_mvm_sync_rx_queues_internal(str
|
|
Takashi Iwai |
cdb9e4 |
goto out;
|
|
Takashi Iwai |
cdb9e4 |
}
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
- if (notif->sync)
|
|
Takashi Iwai |
cdb9e4 |
+ if (notif->sync) {
|
|
Takashi Iwai |
cdb9e4 |
ret = wait_event_timeout(mvm->rx_sync_waitq,
|
|
Takashi Iwai |
cdb9e4 |
- atomic_read(&mvm->queue_sync_counter) == 0,
|
|
Takashi Iwai |
cdb9e4 |
+ atomic_read(&mvm->queue_sync_counter) == 0 ||
|
|
Takashi Iwai |
cdb9e4 |
+ iwl_mvm_is_radio_killed(mvm),
|
|
Takashi Iwai |
cdb9e4 |
HZ);
|
|
Takashi Iwai |
cdb9e4 |
- WARN_ON_ONCE(!ret);
|
|
Takashi Iwai |
cdb9e4 |
+ WARN_ON_ONCE(!ret && !iwl_mvm_is_radio_killed(mvm));
|
|
Takashi Iwai |
cdb9e4 |
+ }
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
out:
|
|
Takashi Iwai |
cdb9e4 |
atomic_set(&mvm->queue_sync_counter, 0);
|
|
Takashi Iwai |
cdb9e4 |
--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
|
|
Takashi Iwai |
cdb9e4 |
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
|
|
Oliver Neukum |
318dca |
@@ -1112,7 +1112,7 @@ void iwl_mvm_set_hw_ctkill_state(struct
|
|
Takashi Iwai |
cdb9e4 |
else
|
|
Takashi Iwai |
cdb9e4 |
clear_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status);
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
- wiphy_rfkill_set_hw_state(mvm->hw->wiphy, iwl_mvm_is_radio_killed(mvm));
|
|
Takashi Iwai |
cdb9e4 |
+ iwl_mvm_set_rfkill_state(mvm);
|
|
Takashi Iwai |
cdb9e4 |
}
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
static bool iwl_mvm_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state)
|
|
Oliver Neukum |
318dca |
@@ -1125,7 +1125,7 @@ static bool iwl_mvm_set_hw_rfkill_state(
|
|
Takashi Iwai |
cdb9e4 |
else
|
|
Takashi Iwai |
cdb9e4 |
clear_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status);
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
- wiphy_rfkill_set_hw_state(mvm->hw->wiphy, iwl_mvm_is_radio_killed(mvm));
|
|
Takashi Iwai |
cdb9e4 |
+ iwl_mvm_set_rfkill_state(mvm);
|
|
Takashi Iwai |
cdb9e4 |
|
|
Takashi Iwai |
cdb9e4 |
/* iwl_run_init_mvm_ucode is waiting for results, abort it */
|
|
Takashi Iwai |
cdb9e4 |
if (calibrating)
|