1 /* 2 * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: os_if_fwol.h 22 * 23 * This Header file provide declaration for OS interface API 24 */ 25 26 #ifndef __OS_IF_FWOL_H__ 27 #define __OS_IF_FWOL_H__ 28 29 #include "wlan_objmgr_vdev_obj.h" 30 #include "wlan_fwol_public_structs.h" 31 32 #ifdef WLAN_FEATURE_ELNA 33 /** 34 * os_if_fwol_set_elna_bypass() - Set eLNA bypass 35 * @vdev: Pointer to vdev 36 * @attr: Pointer to struct nlattr 37 * 38 * Return: 0 on success; error number otherwise 39 */ 40 int os_if_fwol_set_elna_bypass(struct wlan_objmgr_vdev *vdev, 41 const struct nlattr *attr); 42 43 /** 44 * os_if_fwol_get_elna_bypass() - Get eLNA bypass 45 * @vdev: Pointer to vdev 46 * @skb: sk buffer to hold nl80211 attributes 47 * @attr: Pointer to struct nlattr 48 * 49 * Return: 0 on success; error number otherwise 50 */ 51 int os_if_fwol_get_elna_bypass(struct wlan_objmgr_vdev *vdev, 52 struct sk_buff *skb, 53 const struct nlattr *attr); 54 #else os_if_fwol_set_elna_bypass(struct wlan_objmgr_vdev * vdev,const struct nlattr * attr)55 static inline int os_if_fwol_set_elna_bypass(struct wlan_objmgr_vdev *vdev, 56 const struct nlattr *attr) 57 { 58 return 0; 59 } 60 os_if_fwol_get_elna_bypass(struct wlan_objmgr_vdev * vdev,struct sk_buff * skb,const struct nlattr * attr)61 static inline int os_if_fwol_get_elna_bypass(struct wlan_objmgr_vdev *vdev, 62 struct sk_buff *skb, 63 const struct nlattr *attr) 64 { 65 return 0; 66 } 67 #endif /* WLAN_FEATURE_ELNA */ 68 69 #ifdef WLAN_SEND_DSCP_UP_MAP_TO_FW 70 /** 71 * os_if_fwol_send_dscp_up_map_to_fw() - Send DSCP to UP map to FW 72 * @vdev: Pointer to vdev 73 * @dscp_to_up_map: Array of DSCP to UP map values 74 * 75 * Return: 0 on success; error number otherwise 76 */ 77 int os_if_fwol_send_dscp_up_map_to_fw(struct wlan_objmgr_vdev *vdev, 78 uint32_t *dscp_to_up_map); 79 #else os_if_fwol_send_dscp_up_map_to_fw(struct wlan_objmgr_vdev * vdev,uint32_t * dscp_to_up_map)80 static inline int os_if_fwol_send_dscp_up_map_to_fw( 81 struct wlan_objmgr_vdev *vdev, uint32_t *dscp_to_up_map) 82 { 83 return -EOPNOTSUPP; 84 } 85 #endif /* WLAN_SEND_DSCP_UP_MAP_TO_FW */ 86 87 #ifdef WLAN_FEATURE_MDNS_OFFLOAD 88 /** 89 * os_if_fwol_enable_mdns_offload() - Enable mdns offload 90 * @psoc: Pointer to psoc object 91 * @mdns_info: MDNS offload information 92 * 93 * This function will offload mdns response to FW. 94 * 95 * Return: 0 on success; error number otherwise 96 */ 97 int os_if_fwol_enable_mdns_offload(struct wlan_objmgr_psoc *psoc, 98 struct mdns_config_info *mdns_info); 99 100 /** 101 * os_if_fwol_disable_mdns_offload() - Disable mdns offload 102 * @psoc: Pointer to psoc 103 * 104 * This function will disable the mdns offload feature. 105 * 106 * Return: 0 on success; error number otherwise 107 */ 108 int os_if_fwol_disable_mdns_offload(struct wlan_objmgr_psoc *psoc); 109 #else os_if_fwol_enable_mdns_offload(struct wlan_objmgr_psoc * psoc)110 static inline int os_if_fwol_enable_mdns_offload(struct wlan_objmgr_psoc *psoc) 111 { 112 return 0; 113 } 114 os_if_fwol_disable_mdns_offload(struct wlan_objmgr_psoc * psoc)115 static inline int os_if_fwol_disable_mdns_offload(struct wlan_objmgr_psoc *psoc) 116 { 117 return 0; 118 } 119 #endif /* WLAN_FEATURE_MDNS_OFFLOAD */ 120 121 #ifdef THERMAL_STATS_SUPPORT 122 int os_if_fwol_get_thermal_stats_req(struct wlan_objmgr_psoc *psoc, 123 enum thermal_stats_request_type req, 124 void (*callback)(void *context, 125 struct thermal_throttle_info *response), 126 void *context); 127 #endif /* THERMAL_STATS_SUPPORT */ 128 129 #endif /* __OS_IF_FWOL_H__ */ 130