summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhishek Singh <absingh@qti.qualcomm.com>2016-01-28 18:17:22 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-02-02 16:20:14 +0530
commite4e26a5227ef2911dcdc6d64b90af791b9d25e8d (patch)
tree7feac6b76faa39a5ddc0d3dde3f0821ffcd59fe8
parent14559177daecd8823f20d9cb42bd78f00f19d61b (diff)
qcacld-2.0: Add diag event for offload requests
prima to qcacld-2.0 propagation Add diag event for EVENT_OFFLOAD_REQ. This events contains info if host has enabled or disabled the offload. Change-Id: I19fe216ac0900dedbcb7b247cf0d171979308dc5 CRs-Fixed: 934455
-rw-r--r--CORE/HDD/inc/wlan_hdd_host_offload.h12
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c36
-rw-r--r--CORE/VOSS/inc/event_defs.h1
-rw-r--r--CORE/VOSS/inc/vos_diag_core_event.h12
4 files changed, 58 insertions, 3 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_host_offload.h b/CORE/HDD/inc/wlan_hdd_host_offload.h
index 5082fe3b5a0d..7599e9ff6b37 100644
--- a/CORE/HDD/inc/wlan_hdd_host_offload.h
+++ b/CORE/HDD/inc/wlan_hdd_host_offload.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -59,4 +59,14 @@ typedef struct
v_MACADDR_t bssId;
} tHostOffloadRequest, *tpHostOffloadRequest;
+#ifdef FEATURE_WLAN_DIAG_SUPPORT
+void hdd_wlan_offload_event(uint8_t type, uint8_t state);
+#else
+static inline
+void hdd_wlan_offload_event(uint8_t type, uint8_t state)
+{
+ return;
+}
+#endif /* FEATURE_WLAN_DIAG_SUPPORT */
+
#endif // __WLAN_HDD_HOST_OFFLOAD_H__
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 105c3d0abe05..6074bc7b6863 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -117,6 +117,30 @@ extern tVOS_CON_MODE hdd_get_conparam ( void );
static struct timer_list ssr_timer;
static bool ssr_timer_started;
+#ifdef FEATURE_WLAN_DIAG_SUPPORT
+/**
+ * hdd_wlan_offload_event()- send offloads event
+ * @type: offload type
+ * @state: enabled or disabled
+ *
+ * This Function send offloads enable/disable diag event
+ *
+ * Return: void.
+ */
+
+void hdd_wlan_offload_event(uint8_t type, uint8_t state)
+{
+ WLAN_VOS_DIAG_EVENT_DEF(host_offload, struct vos_event_offload_req);
+ vos_mem_zero(&host_offload, sizeof(host_offload));
+
+ host_offload.offload_type = type;
+ host_offload.state = state;
+
+ WLAN_VOS_DIAG_EVENT_REPORT(&host_offload, EVENT_WLAN_OFFLOAD_REQ);
+}
+
+#endif
+
//Callback invoked by PMC to report status of standby request
void hdd_suspend_standby_cbk (void *callbackContext, eHalStatus status)
{
@@ -792,7 +816,8 @@ static void hdd_conf_ns_offload(hdd_adapter_t *pAdapter, int fenable)
SIR_IPV6_ADDR_VALID;
offLoadRequest.nsOffloadInfo.target_ipv6_addr_type[i] =
ipv6_addr_type[i];
-
+ hdd_wlan_offload_event(SIR_IPV6_NS_OFFLOAD,
+ SIR_OFFLOAD_ENABLE);
vos_mem_copy(&offLoadRequest.params.hostIpv6Addr,
&offLoadRequest.nsOffloadInfo.targetIPv6Addr[i],
sizeof(tANI_U8)*SIR_MAC_IPV6_ADDR_LEN);
@@ -832,6 +857,8 @@ static void hdd_conf_ns_offload(hdd_adapter_t *pAdapter, int fenable)
vos_mem_zero((void *)&offLoadRequest, sizeof(tSirHostOffloadReq));
offLoadRequest.enableOrDisable = SIR_OFFLOAD_DISABLE;
offLoadRequest.offloadType = SIR_IPV6_NS_OFFLOAD;
+ hdd_wlan_offload_event(SIR_IPV6_NS_OFFLOAD,
+ SIR_OFFLOAD_DISABLE);
if (eHAL_STATUS_SUCCESS !=
sme_SetHostOffload(WLAN_HDD_GET_HAL_CTX(pAdapter),
@@ -1222,6 +1249,8 @@ VOS_STATUS hdd_conf_arp_offload(hdd_adapter_t *pAdapter, int fenable)
{
offLoadRequest.offloadType = SIR_IPV4_ARP_REPLY_OFFLOAD;
offLoadRequest.enableOrDisable = SIR_OFFLOAD_ENABLE;
+ hdd_wlan_offload_event(SIR_IPV4_ARP_REPLY_OFFLOAD,
+ SIR_OFFLOAD_ENABLE);
hddLog(VOS_TRACE_LEVEL_INFO, "%s: Enabled", __func__);
@@ -1236,7 +1265,8 @@ VOS_STATUS hdd_conf_arp_offload(hdd_adapter_t *pAdapter, int fenable)
hddLog(VOS_TRACE_LEVEL_INFO,
"offload: inside arp offload conditional check");
}
-
+ hdd_wlan_offload_event(SIR_OFFLOAD_ARP_AND_BCAST_FILTER_ENABLE,
+ SIR_OFFLOAD_ENABLE);
hddLog(VOS_TRACE_LEVEL_INFO, "offload: arp filter programmed = %d",
offLoadRequest.enableOrDisable);
@@ -1273,6 +1303,8 @@ VOS_STATUS hdd_conf_arp_offload(hdd_adapter_t *pAdapter, int fenable)
vos_mem_zero((void *)&offLoadRequest, sizeof(tSirHostOffloadReq));
offLoadRequest.enableOrDisable = SIR_OFFLOAD_DISABLE;
offLoadRequest.offloadType = SIR_IPV4_ARP_REPLY_OFFLOAD;
+ hdd_wlan_offload_event(SIR_IPV4_ARP_REPLY_OFFLOAD,
+ SIR_OFFLOAD_DISABLE);
if (eHAL_STATUS_SUCCESS !=
sme_SetHostOffload(WLAN_HDD_GET_HAL_CTX(pAdapter),
diff --git a/CORE/VOSS/inc/event_defs.h b/CORE/VOSS/inc/event_defs.h
index 57d06794f901..b552863e0f6a 100644
--- a/CORE/VOSS/inc/event_defs.h
+++ b/CORE/VOSS/inc/event_defs.h
@@ -1908,6 +1908,7 @@ typedef enum
EVENT_WLAN_TDLS_TEARDOWN = 0xAB5,
EVENT_WLAN_TDLS_ENABLE_LINK = 0XAB6,
EVENT_WLAN_SUSPEND_RESUME = 0xAB7,
+ EVENT_WLAN_OFFLOAD_REQ = 0xAB8,
EVENT_WLAN_LOW_RESOURCE_FAILURE = 0xABB,
EVENT_NEXT_UNUSED_EVENT,
diff --git a/CORE/VOSS/inc/vos_diag_core_event.h b/CORE/VOSS/inc/vos_diag_core_event.h
index 48eab4766378..02458bf2fe34 100644
--- a/CORE/VOSS/inc/vos_diag_core_event.h
+++ b/CORE/VOSS/inc/vos_diag_core_event.h
@@ -364,6 +364,18 @@ struct vos_event_suspend {
uint8_t state;
};
+/**
+ * struct vos_event_offload_req - offload state
+ * @offload_type: offload type
+ * @state: enabled or disabled state
+ *
+ * This structure contains offload diag event info
+ */
+struct vos_event_offload_req {
+ uint8_t offload_type;
+ uint8_t state;
+};
+
/*-------------------------------------------------------------------------
Function declarations and documenation
------------------------------------------------------------------------*/