OSDN Git Service

msm: ipa: Fix WDI2.0 stats
authorUtkarsh Saxena <usaxena@codeaurora.org>
Sun, 22 Jan 2017 16:34:13 +0000 (22:04 +0530)
committerUtkarsh Saxena <usaxena@codeaurora.org>
Mon, 23 Jan 2017 05:33:24 +0000 (11:03 +0530)
New stat param "num_qmb_int_handled" is added to rx_ch_stats
by IPA uC in WDI2.0. This results in a size mismatch and
WDI stats feature is broken. Make a change to update the
new param "num_qmb_int_handled" in rx_ch_stats structure.

Also make a change to read all the rx_ch_stats to avoid
printing stale values.

Change-Id: I5d141f531f1cfdab0bd0056041e22acb26657960
Acked-by: Chaitanya Pratapa <cpratapa@qti.qualcomm.com>
Signed-off-by: Utkarsh Saxena <usaxena@codeaurora.org>
drivers/platform/msm/ipa/ipa_v2/ipa_debugfs.c
drivers/platform/msm/ipa/ipa_v2/ipa_uc_wdi.c
drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c
drivers/platform/msm/ipa/ipa_v3/ipa_uc_wdi.c
include/linux/ipa.h

index 7ce51fc..8d2213f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -1272,8 +1272,9 @@ static ssize_t ipa_read_wdi(struct file *file, char __user *ubuf,
                        "RX num_db=%u\n"
                        "RX num_unexpected_db=%u\n"
                        "RX num_pkts_in_dis_uninit_state=%u\n"
-                       "num_ic_inj_vdev_change=%u\n"
-                       "num_ic_inj_fw_desc_change=%u\n"
+                       "RX num_ic_inj_vdev_change=%u\n"
+                       "RX num_ic_inj_fw_desc_change=%u\n"
+                       "RX num_qmb_int_handled=%u\n"
                        "RX reserved1=%u\n"
                        "RX reserved2=%u\n",
                        stats.rx_ch_stats.max_outstanding_pkts,
@@ -1295,6 +1296,7 @@ static ssize_t ipa_read_wdi(struct file *file, char __user *ubuf,
                        stats.rx_ch_stats.num_pkts_in_dis_uninit_state,
                        stats.rx_ch_stats.num_ic_inj_vdev_change,
                        stats.rx_ch_stats.num_ic_inj_fw_desc_change,
+                       stats.rx_ch_stats.num_qmb_int_handled,
                        stats.rx_ch_stats.reserved1,
                        stats.rx_ch_stats.reserved2);
                cnt += nbytes;
index 6dc194f..5bda4cb 100644 (file)
@@ -477,6 +477,9 @@ int ipa2_get_wdi_stats(struct IpaHwStatsWDIInfoData_t *stats)
        RX_STATS(num_db);
        RX_STATS(num_unexpected_db);
        RX_STATS(num_pkts_in_dis_uninit_state);
+       RX_STATS(num_ic_inj_vdev_change);
+       RX_STATS(num_ic_inj_fw_desc_change);
+       RX_STATS(num_qmb_int_handled);
        RX_STATS(reserved1);
        RX_STATS(reserved2);
 
index 25e5e3b..17e6973 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -1356,8 +1356,9 @@ static ssize_t ipa3_read_wdi(struct file *file, char __user *ubuf,
                        "RX num_db=%u\n"
                        "RX num_unexpected_db=%u\n"
                        "RX num_pkts_in_dis_uninit_state=%u\n"
-                       "num_ic_inj_vdev_change=%u\n"
-                       "num_ic_inj_fw_desc_change=%u\n"
+                       "RX num_ic_inj_vdev_change=%u\n"
+                       "RX num_ic_inj_fw_desc_change=%u\n"
+                       "RX num_qmb_int_handled=%u\n"
                        "RX reserved1=%u\n"
                        "RX reserved2=%u\n",
                        stats.rx_ch_stats.max_outstanding_pkts,
@@ -1379,6 +1380,7 @@ static ssize_t ipa3_read_wdi(struct file *file, char __user *ubuf,
                        stats.rx_ch_stats.num_pkts_in_dis_uninit_state,
                        stats.rx_ch_stats.num_ic_inj_vdev_change,
                        stats.rx_ch_stats.num_ic_inj_fw_desc_change,
+                       stats.rx_ch_stats.num_qmb_int_handled,
                        stats.rx_ch_stats.reserved1,
                        stats.rx_ch_stats.reserved2);
                cnt += nbytes;
index 41bb865..8f556fd 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -472,6 +472,9 @@ int ipa3_get_wdi_stats(struct IpaHwStatsWDIInfoData_t *stats)
        RX_STATS(num_db);
        RX_STATS(num_unexpected_db);
        RX_STATS(num_pkts_in_dis_uninit_state);
+       RX_STATS(num_ic_inj_vdev_change);
+       RX_STATS(num_ic_inj_fw_desc_change);
+       RX_STATS(num_qmb_int_handled);
        RX_STATS(reserved1);
        RX_STATS(reserved2);
 
index d545604..c11a5c4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -901,6 +901,7 @@ struct IpaHwRingStats_t {
  *             injected due to vdev_id change
  * @num_ic_inj_fw_desc_change : Number of times the Imm Cmd is
  *             injected due to fw_desc change
+ * @num_qmb_int_handled : Number of QMB interrupts handled
 */
 struct IpaHwStatsWDIRxInfoData_t {
        u32 max_outstanding_pkts;
@@ -914,6 +915,7 @@ struct IpaHwStatsWDIRxInfoData_t {
        u32 num_pkts_in_dis_uninit_state;
        u32 num_ic_inj_vdev_change;
        u32 num_ic_inj_fw_desc_change;
+       u32 num_qmb_int_handled;
        u32 reserved1;
        u32 reserved2;
 } __packed;