aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl4965-base.c
diff options
context:
space:
mode:
authorMohamed Abbas <mabbas@linux.intel.com>2008-03-25 19:33:36 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-03-27 16:03:16 -0400
commitab53d8af6772b22d4d68b1bcd74f7a5dba693983 (patch)
tree599c6682d75e15b30af9bf994595e7d5eed5c3ac /drivers/net/wireless/iwlwifi/iwl4965-base.c
parente0e0a67e44ce13e34f553b6ab6377560fa9813f1 (diff)
iwlwifi: Add led support
This patch add LEDS support to 3965 and 4965 drivers. It is based on led trigger and class. For our drivers we needed to avoid two things. 1- We receive led trigger on/off on each Rx\Tx frame. In our driver we can not call led command like that. In this driver once driver receive a start of traffic it call the led command to start blinking then we count all bytes of Tx and Rx frame, after two second we count the blink rate of last two second then id blink rate changed we call the led commands 2- Since we can call led command very often, we make sure we call the led command after we receive the statistics notification so we don't need to wake up the ucode id it is in sleep state. This patch was tested with 4965 and 3945. Signed-off-by: Mohamed Abbas <mabbas@linux.intel.com> Signed-off-by: Ian Schram<ischram@telenet.be> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl4965-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 9ae3d2981df5..a04127a8acf7 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -2238,8 +2238,9 @@ static void iwl4965_build_tx_cmd_basic(struct iwl_priv *priv,
2238 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(3); 2238 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(3);
2239 else 2239 else
2240 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(2); 2240 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(2);
2241 } else 2241 } else {
2242 cmd->cmd.tx.timeout.pm_frame_timeout = 0; 2242 cmd->cmd.tx.timeout.pm_frame_timeout = 0;
2243 }
2243 2244
2244 cmd->cmd.tx.driver_txop = 0; 2245 cmd->cmd.tx.driver_txop = 0;
2245 cmd->cmd.tx.tx_flags = tx_flags; 2246 cmd->cmd.tx.tx_flags = tx_flags;
@@ -5712,6 +5713,8 @@ static void iwl4965_alive_start(struct iwl_priv *priv)
5712 IWL_DEBUG_INFO("ALIVE processing complete.\n"); 5713 IWL_DEBUG_INFO("ALIVE processing complete.\n");
5713 wake_up_interruptible(&priv->wait_command_queue); 5714 wake_up_interruptible(&priv->wait_command_queue);
5714 5715
5716 iwl_leds_register(priv);
5717
5715 if (priv->error_recovering) 5718 if (priv->error_recovering)
5716 iwl4965_error_recovery(priv); 5719 iwl4965_error_recovery(priv);
5717 5720
@@ -5736,6 +5739,8 @@ static void __iwl4965_down(struct iwl_priv *priv)
5736 if (!exit_pending) 5739 if (!exit_pending)
5737 set_bit(STATUS_EXIT_PENDING, &priv->status); 5740 set_bit(STATUS_EXIT_PENDING, &priv->status);
5738 5741
5742 iwl_leds_unregister(priv);
5743
5739 iwlcore_clear_stations_table(priv); 5744 iwlcore_clear_stations_table(priv);
5740 5745
5741 /* Unblock any waiting calls */ 5746 /* Unblock any waiting calls */