aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ipw2100.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@linux-foundation.org>2007-06-23 00:46:50 -0400
committerJohn W. Linville <linville@tuxdriver.com>2007-07-10 13:59:48 -0400
commita62056f0b0cfdc175afd99fef80a68f01cdf0f4b (patch)
tree072495ec9044bc63155b7fc09e9b9672013cdad6 /drivers/net/wireless/ipw2100.c
parent1c9d5e41e32a3bfe60f44e3272c05d14ea595a71 (diff)
[PATCH] ipw2100: RF kill switch timer power save
Similar patch to ipw2200. Round the timer used for RF kill switch off to 1 second boundary to save power. Build tested only, don't have this hardware. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ipw2100.c')
-rw-r--r--drivers/net/wireless/ipw2100.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/wireless/ipw2100.c b/drivers/net/wireless/ipw2100.c
index d51daf87450f..072ede71e575 100644
--- a/drivers/net/wireless/ipw2100.c
+++ b/drivers/net/wireless/ipw2100.c
@@ -1768,7 +1768,8 @@ static int ipw2100_up(struct ipw2100_priv *priv, int deferred)
1768 1768
1769 if (priv->stop_rf_kill) { 1769 if (priv->stop_rf_kill) {
1770 priv->stop_rf_kill = 0; 1770 priv->stop_rf_kill = 0;
1771 queue_delayed_work(priv->workqueue, &priv->rf_kill, HZ); 1771 queue_delayed_work(priv->workqueue, &priv->rf_kill,
1772 round_jiffies(HZ));
1772 } 1773 }
1773 1774
1774 deferred = 1; 1775 deferred = 1;
@@ -2098,7 +2099,7 @@ static void isr_indicate_rf_kill(struct ipw2100_priv *priv, u32 status)
2098 /* Make sure the RF Kill check timer is running */ 2099 /* Make sure the RF Kill check timer is running */
2099 priv->stop_rf_kill = 0; 2100 priv->stop_rf_kill = 0;
2100 cancel_delayed_work(&priv->rf_kill); 2101 cancel_delayed_work(&priv->rf_kill);
2101 queue_delayed_work(priv->workqueue, &priv->rf_kill, HZ); 2102 queue_delayed_work(priv->workqueue, &priv->rf_kill, round_jiffies(HZ));
2102} 2103}
2103 2104
2104static void isr_scan_complete(struct ipw2100_priv *priv, u32 status) 2105static void isr_scan_complete(struct ipw2100_priv *priv, u32 status)
@@ -4233,7 +4234,8 @@ static int ipw_radio_kill_sw(struct ipw2100_priv *priv, int disable_radio)
4233 /* Make sure the RF_KILL check timer is running */ 4234 /* Make sure the RF_KILL check timer is running */
4234 priv->stop_rf_kill = 0; 4235 priv->stop_rf_kill = 0;
4235 cancel_delayed_work(&priv->rf_kill); 4236 cancel_delayed_work(&priv->rf_kill);
4236 queue_delayed_work(priv->workqueue, &priv->rf_kill, HZ); 4237 queue_delayed_work(priv->workqueue, &priv->rf_kill,
4238 round_jiffies(HZ));
4237 } else 4239 } else
4238 schedule_reset(priv); 4240 schedule_reset(priv);
4239 } 4241 }
@@ -5969,7 +5971,8 @@ static void ipw2100_rf_kill(struct work_struct *work)
5969 if (rf_kill_active(priv)) { 5971 if (rf_kill_active(priv)) {
5970 IPW_DEBUG_RF_KILL("RF Kill active, rescheduling GPIO check\n"); 5972 IPW_DEBUG_RF_KILL("RF Kill active, rescheduling GPIO check\n");
5971 if (!priv->stop_rf_kill) 5973 if (!priv->stop_rf_kill)
5972 queue_delayed_work(priv->workqueue, &priv->rf_kill, HZ); 5974 queue_delayed_work(priv->workqueue, &priv->rf_kill,
5975 round_jiffies(HZ));
5973 goto exit_unlock; 5976 goto exit_unlock;
5974 } 5977 }
5975 5978