summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Girigowda <sgirigow@qca.qualcomm.com>2016-03-16 18:24:52 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-03-21 13:05:48 +0530
commit0fb5424b56a8e29bd9643f2f73c5ff6febdd9e36 (patch)
tree9d6d562ec5ae7879b5d47f681dc52463822300b7
parent66df2d502728bbe33c1a8e68c69369b82889b624 (diff)
qcacld-2.0: Add support for tx time per power level in radio stats
Modify the existing radio_stat structure to add time spent in each tranmission power level. Change-Id: Ia5da997aabd5331e736d7367c9d74dfaf3e47906 CRs-Fixed: 992365
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg80211.h8
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c13
-rw-r--r--CORE/MAC/inc/sirApi.h5
3 files changed, 22 insertions, 4 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h
index 5f17aee7da0a..ff89ac4e5cff 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg80211.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h
@@ -1106,6 +1106,14 @@ enum qca_wlan_vendor_attr_ll_stats_results
/* Unsigned 32bit value to indicate ll stats result type */
QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE,
+ /* Unsigned 32bit value */
+ QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_TX_LEVELS,
+
+ /* Unsigned 32bit value
+ * Number of msecs the radio spent in transmitting for each power level
+ */
+ QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME_PER_LEVEL,
+
/* keep last */
QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_LL_STATS_MAX =
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 9f9c05668cf9..b8a8f3a9d038 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -6006,11 +6006,16 @@ static void hdd_link_layer_process_radio_stats(hdd_adapter_t *pAdapter,
QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_HS20,
pWifiRadioStat->onTimeHs20) ||
nla_put_u32(vendor_event,
+ QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_TX_LEVELS,
+ MAX_TPC_LEVELS) ||
+ nla_put(vendor_event,
+ QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME_PER_LEVEL,
+ sizeof(u32) * MAX_TPC_LEVELS,
+ pWifiRadioStat->tx_time_per_tpc) ||
+ nla_put_u32(vendor_event,
QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_CHANNELS,
- pWifiRadioStat->numChannels))
- {
- hddLog(VOS_TRACE_LEVEL_ERROR,
- FL("QCA_WLAN_VENDOR_ATTR put fail"));
+ pWifiRadioStat->numChannels)) {
+ hddLog(LOGE, FL("QCA_WLAN_VENDOR_ATTR put fail"));
kfree_skb(vendor_event);
return ;
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 8333a34cdc9c..461b5a5d5347 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -5828,6 +5828,7 @@ typedef struct
tANI_U32 ccaBusyTime;
} tSirWifiChannelStats, *tpSirWifiChannelStats;
+#define MAX_TPC_LEVELS 64
/* radio statistics */
typedef struct
{
@@ -5869,6 +5870,10 @@ typedef struct
tANI_U32 onTimeHs20;
/* number of channels */
tANI_U32 numChannels;
+
+ /** tx time (in milliseconds) per TPC level (0.5 dBm) */
+ uint32_t tx_time_per_tpc[MAX_TPC_LEVELS];
+
/* channel statistics tSirWifiChannelStats */
tSirWifiChannelStats channels[0];
} tSirWifiRadioStat, *tpSirWifiRadioStat;