summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMahesh A Saptasagar <c_msapta@qti.qualcomm.com>2016-04-06 13:23:46 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-04-18 12:56:03 +0530
commit4ccaa1f049447ebec08f8b27c462483496a2dc47 (patch)
treef1d3da613e360b11dd16606d18e1427f115155e3
parentd4471e5c3f2aacb81369beb42a9c2d846070915c (diff)
qcacld-2.0: Clear WMM access category stats on disconnect
WMM access category stats of old BSS getting added to stats of new BSS on network switch. To mitigate this issue, clear WMM access category stats on disconnect. Change-Id: Icd1ce4ae0595098f95d5534b4b752c5692264fb8 CRs-Fixed: 999832
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg80211.h7
-rw-r--r--CORE/HDD/src/wlan_hdd_assoc.c2
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c21
3 files changed, 30 insertions, 0 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h
index d8e60f11b71c..b98f62101c42 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg80211.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h
@@ -1958,4 +1958,11 @@ backported_cfg80211_vendor_event_alloc(struct wiphy *wiphy,
void hdd_get_bpf_offload_cb(void *hdd_context, struct sir_bpf_get_offload *);
void hdd_init_bpf_completion(void);
+
+#ifdef WLAN_FEATURE_LINK_LAYER_STATS
+void wlan_hdd_clear_link_layer_stats(hdd_adapter_t *adapter);
+#else
+static inline void wlan_hdd_clear_link_layer_stats(hdd_adapter_t *adapter) {}
+#endif
+
#endif
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index cd353d041df1..9655828140e7 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -1186,6 +1186,8 @@ static eHalStatus hdd_DisConnectHandler( hdd_adapter_t *pAdapter, tCsrRoamInfo *
pAdapter->sessionId);
}
+ wlan_hdd_clear_link_layer_stats(pAdapter);
+
//Unblock anyone waiting for disconnect to complete
complete(&pAdapter->disconnect_comp_var);
return( status );
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 89d93093737f..b935ef4e3269 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -6609,6 +6609,27 @@ static int wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
return ret;
}
+/**
+ * wlan_hdd_clear_link_layer_stats() - clear link layer stats
+ * @adapter: pointer to adapter
+ *
+ * Wrapper function to clear link layer stats.
+ * return - void
+ */
+void wlan_hdd_clear_link_layer_stats(hdd_adapter_t *adapter)
+{
+ tSirLLStatsClearReq link_layer_stats_clear_req;
+ tHalHandle hal = WLAN_HDD_GET_HAL_CTX(adapter);
+
+ link_layer_stats_clear_req.statsClearReqMask = WIFI_STATS_IFACE_AC;
+ link_layer_stats_clear_req.stopReq = 0;
+ link_layer_stats_clear_req.reqId = 1;
+ link_layer_stats_clear_req.staId = adapter->sessionId;
+ sme_LLStatsClearReq(hal, &link_layer_stats_clear_req);
+
+ return;
+}
+
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
#ifdef WLAN_FEATURE_ROAM_OFFLOAD