aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-rx.c
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-01-15 16:43:34 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-01-19 16:25:09 -0500
commite3ef2164386a13a37714ec033e30811d052c7999 (patch)
treedabe11f5a41ba1ceaff798f440cec6f3cc3fb0d5 /drivers/net/wireless/iwlwifi/iwl-rx.c
parent9ed333e0298c8f12cf7f3b4aec4258e81ef588a0 (diff)
iwlwifi: format and show statistics counter from uCode
To help debug uCode related problem, adding "delta" and "max" information in debugfs statistics counters display. Those information show the delta between two statistics report from uCode, user can monitor the counters for any "un-normal" behavior. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Jay Sternberg<jay.e.sternberg@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-rx.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-rx.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
index 10db97327452..5bbe5f1f749c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
@@ -564,15 +564,24 @@ static void iwl_accumulative_statistics(struct iwl_priv *priv,
564 int i; 564 int i;
565 __le32 *prev_stats; 565 __le32 *prev_stats;
566 u32 *accum_stats; 566 u32 *accum_stats;
567 u32 *delta, *max_delta;
567 568
568 prev_stats = (__le32 *)&priv->statistics; 569 prev_stats = (__le32 *)&priv->statistics;
569 accum_stats = (u32 *)&priv->accum_statistics; 570 accum_stats = (u32 *)&priv->accum_statistics;
571 delta = (u32 *)&priv->delta_statistics;
572 max_delta = (u32 *)&priv->max_delta;
570 573
571 for (i = sizeof(__le32); i < sizeof(struct iwl_notif_statistics); 574 for (i = sizeof(__le32); i < sizeof(struct iwl_notif_statistics);
572 i += sizeof(__le32), stats++, prev_stats++, accum_stats++) 575 i += sizeof(__le32), stats++, prev_stats++, delta++,
573 if (le32_to_cpu(*stats) > le32_to_cpu(*prev_stats)) 576 max_delta++, accum_stats++) {
574 *accum_stats += (le32_to_cpu(*stats) - 577 if (le32_to_cpu(*stats) > le32_to_cpu(*prev_stats)) {
578 *delta = (le32_to_cpu(*stats) -
575 le32_to_cpu(*prev_stats)); 579 le32_to_cpu(*prev_stats));
580 *accum_stats += *delta;
581 if (*delta > *max_delta)
582 *max_delta = *delta;
583 }
584 }
576 585
577 /* reset accumulative statistics for "no-counter" type statistics */ 586 /* reset accumulative statistics for "no-counter" type statistics */
578 priv->accum_statistics.general.temperature = 587 priv->accum_statistics.general.temperature =
@@ -641,6 +650,10 @@ void iwl_reply_statistics(struct iwl_priv *priv,
641#ifdef CONFIG_IWLWIFI_DEBUG 650#ifdef CONFIG_IWLWIFI_DEBUG
642 memset(&priv->accum_statistics, 0, 651 memset(&priv->accum_statistics, 0,
643 sizeof(struct iwl_notif_statistics)); 652 sizeof(struct iwl_notif_statistics));
653 memset(&priv->delta_statistics, 0,
654 sizeof(struct iwl_notif_statistics));
655 memset(&priv->max_delta, 0,
656 sizeof(struct iwl_notif_statistics));
644#endif 657#endif
645 IWL_DEBUG_RX(priv, "Statistics have been cleared\n"); 658 IWL_DEBUG_RX(priv, "Statistics have been cleared\n");
646 } 659 }