diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2011-04-28 09:36:54 (GMT) |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-04-28 18:38:36 (GMT) |
commit | f325757ab2812b42da4d690cf8da73c0e678368c (patch) | |
tree | ee1ad70684e18533b97d88b3c080809bd19a5f14 | |
parent | 1501b6764f0c363a9f1d72f9d422841f81f1bd8c (diff) | |
download | linux-fsl-qoriq-f325757ab2812b42da4d690cf8da73c0e678368c.tar.xz |
iwl4965: fix "TX Power requested while scanning"
Fix the following:
WARNING: at drivers/net/wireless/iwlegacy/iwl-4965.c:1128 \
iwl4965_send_tx_power+0x61/0x102 [iwl4965]() Hardware name: [...]
TX Power requested while scanning!
Pid: 5723, comm: kworker/u:28 Not tainted 2.6.39-0.rc4.4.fc14.x86_64 #1
Call Trace:
[<ffffffff8104e27b>] warn_slowpath_common+0x85/0x9d
[<ffffffffa02782e0>] ? iwl4965_show_temperature+0x49/0x49 [iwl4965]
[<ffffffff8104e336>] warn_slowpath_fmt+0x46/0x48
[<ffffffffa027712f>] iwl4965_send_tx_power+0x61/0x102 [iwl4965]
[<ffffffff81477e05>] ? mutex_lock+0x36/0x50
[<ffffffffa0278337>] iwl4965_bg_txpower_work+0x57/0x73 [iwl4965]
[<ffffffff810647f3>] process_one_work+0x18d/0x286
[<ffffffff81065a5e>] worker_thread+0xfd/0x181
[<ffffffff81065961>] ? manage_workers.clone.16+0x172/0x172
[<ffffffff81069036>] kthread+0x82/0x8a
[<ffffffff81480524>] kernel_thread_helper+0x4/0x10
[<ffffffff81068fb4>] ? kthread_worker_fn+0x14b/0x14b
[<ffffffff81480520>] ? gs_change+0x13/0x13
Reported-and-tested-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/iwlegacy/iwl4965-base.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlegacy/iwl4965-base.c b/drivers/net/wireless/iwlegacy/iwl4965-base.c index d484c36..a62fe24 100644 --- a/drivers/net/wireless/iwlegacy/iwl4965-base.c +++ b/drivers/net/wireless/iwlegacy/iwl4965-base.c @@ -2984,15 +2984,15 @@ static void iwl4965_bg_txpower_work(struct work_struct *work) struct iwl_priv *priv = container_of(work, struct iwl_priv, txpower_work); + mutex_lock(&priv->mutex); + /* If a scan happened to start before we got here * then just return; the statistics notification will * kick off another scheduled work to compensate for * any temperature delta we missed here. */ if (test_bit(STATUS_EXIT_PENDING, &priv->status) || test_bit(STATUS_SCANNING, &priv->status)) - return; - - mutex_lock(&priv->mutex); + goto out; /* Regardless of if we are associated, we must reconfigure the * TX power since frames can be sent on non-radar channels while @@ -3002,7 +3002,7 @@ static void iwl4965_bg_txpower_work(struct work_struct *work) /* Update last_temperature to keep is_calib_needed from running * when it isn't needed... */ priv->last_temperature = priv->temperature; - +out: mutex_unlock(&priv->mutex); } |