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>

authored by Stanislaw Gruszka and committed by John W. Linville f325757a 1501b676

+4 -4
+4 -4
drivers/net/wireless/iwlegacy/iwl4965-base.c
··· 2984 struct iwl_priv *priv = container_of(work, struct iwl_priv, 2985 txpower_work); 2986 2987 /* If a scan happened to start before we got here 2988 * then just return; the statistics notification will 2989 * kick off another scheduled work to compensate for 2990 * any temperature delta we missed here. */ 2991 if (test_bit(STATUS_EXIT_PENDING, &priv->status) || 2992 test_bit(STATUS_SCANNING, &priv->status)) 2993 - return; 2994 - 2995 - mutex_lock(&priv->mutex); 2996 2997 /* Regardless of if we are associated, we must reconfigure the 2998 * TX power since frames can be sent on non-radar channels while ··· 3002 /* Update last_temperature to keep is_calib_needed from running 3003 * when it isn't needed... */ 3004 priv->last_temperature = priv->temperature; 3005 - 3006 mutex_unlock(&priv->mutex); 3007 } 3008
··· 2984 struct iwl_priv *priv = container_of(work, struct iwl_priv, 2985 txpower_work); 2986 2987 + mutex_lock(&priv->mutex); 2988 + 2989 /* If a scan happened to start before we got here 2990 * then just return; the statistics notification will 2991 * kick off another scheduled work to compensate for 2992 * any temperature delta we missed here. */ 2993 if (test_bit(STATUS_EXIT_PENDING, &priv->status) || 2994 test_bit(STATUS_SCANNING, &priv->status)) 2995 + goto out; 2996 2997 /* Regardless of if we are associated, we must reconfigure the 2998 * TX power since frames can be sent on non-radar channels while ··· 3002 /* Update last_temperature to keep is_calib_needed from running 3003 * when it isn't needed... */ 3004 priv->last_temperature = priv->temperature; 3005 + out: 3006 mutex_unlock(&priv->mutex); 3007 } 3008