diff options
| author | Abhishek Singh <absingh@qti.qualcomm.com> | 2016-01-28 18:17:22 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-02-02 16:20:14 +0530 |
| commit | e4e26a5227ef2911dcdc6d64b90af791b9d25e8d (patch) | |
| tree | 7feac6b76faa39a5ddc0d3dde3f0821ffcd59fe8 | |
| parent | 14559177daecd8823f20d9cb42bd78f00f19d61b (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.h | 12 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_early_suspend.c | 36 | ||||
| -rw-r--r-- | CORE/VOSS/inc/event_defs.h | 1 | ||||
| -rw-r--r-- | CORE/VOSS/inc/vos_diag_core_event.h | 12 |
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 ------------------------------------------------------------------------*/ |
