1 /* 2 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 /* 18 * DOC: contains declarations for CoAP core functions 19 */ 20 21 #ifndef _WLAN_COAP_MAIN_H_ 22 #define _WLAN_COAP_MAIN_H_ 23 24 #ifdef WLAN_FEATURE_COAP 25 #include "wlan_objmgr_vdev_obj.h" 26 27 #define coap_err(params...) \ 28 QDF_TRACE_ERROR(QDF_MODULE_ID_COAP, params) 29 #define coap_info(params...) \ 30 QDF_TRACE_INFO(QDF_MODULE_ID_COAP, params) 31 #define coap_debug(params...) \ 32 QDF_TRACE_DEBUG(QDF_MODULE_ID_COAP, params) 33 34 /** 35 * struct wlan_coap_comp_priv - CoAP component private structure 36 * @req_id: cache get request id 37 * @cache_get_cbk: Callback function to be called with the cache get result 38 * @cache_get_context: context to be used by the caller to associate the get 39 * cache request with the response 40 */ 41 struct wlan_coap_comp_priv { 42 uint32_t req_id; 43 coap_cache_get_callback cache_get_cbk; 44 void *cache_get_context; 45 }; 46 47 static inline struct wlan_coap_comp_priv * wlan_get_vdev_coap_obj(struct wlan_objmgr_vdev * vdev)48 wlan_get_vdev_coap_obj(struct wlan_objmgr_vdev *vdev) 49 { 50 return wlan_objmgr_vdev_get_comp_private_obj(vdev, 51 WLAN_UMAC_COMP_COAP); 52 } 53 54 /* 55 * wlan_coap_init() - CoAP module initialization API 56 * 57 * Return: QDF_STATUS 58 */ 59 QDF_STATUS wlan_coap_init(void); 60 61 /* 62 * wlan_coap_init() - CoAP module deinitialization API 63 * 64 * Return: QDF_STATUS 65 */ 66 QDF_STATUS wlan_coap_deinit(void); 67 68 /** 69 * wlan_coap_enable(): API to enable CoAP component 70 * @psoc: pointer to psoc 71 * 72 * This API is invoked from dispatcher psoc enable. 73 * This API will register CoAP related WMI event handlers. 74 * 75 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error 76 */ 77 QDF_STATUS wlan_coap_enable(struct wlan_objmgr_psoc *psoc); 78 79 /** 80 * wlan_coap_disable(): API to disable CoAP component 81 * @psoc: pointer to psoc 82 * 83 * This API is invoked from dispatcher psoc disable. 84 * This API will unregister CoAP related WMI event handlers. 85 * 86 * Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error 87 */ 88 QDF_STATUS wlan_coap_disable(struct wlan_objmgr_psoc *psoc); 89 90 /** 91 * wlan_coap_offload_reply_enable() - private API to enable CoAP offload reply 92 * @vdev: pointer to vdev object 93 * @param: parameters of CoAP offload reply 94 * 95 * Return: status of operation 96 */ 97 QDF_STATUS 98 wlan_coap_offload_reply_enable(struct wlan_objmgr_vdev *vdev, 99 struct coap_offload_reply_param *param); 100 101 /** 102 * wlan_coap_offload_reply_disable() - private API to disable CoAP offload reply 103 * @vdev: pointer to vdev object 104 * @req_id: request id 105 * @cbk: callback function to be called with the cache info 106 * @context: context to be used by the caller to associate the disable request 107 * 108 * Return: status of operation 109 */ 110 QDF_STATUS 111 wlan_coap_offload_reply_disable(struct wlan_objmgr_vdev *vdev, uint32_t req_id, 112 coap_cache_get_callback cbk, void *context); 113 114 /** 115 * wlan_coap_offload_periodic_tx_enable() - private API to enable CoAP offload 116 * periodic transmitting 117 * @vdev: pointer to vdev object 118 * @param: parameters of CoAP periodic transmit 119 * 120 * Return: status of operation 121 */ 122 QDF_STATUS 123 wlan_coap_offload_periodic_tx_enable(struct wlan_objmgr_vdev *vdev, 124 struct coap_offload_periodic_tx_param *param); 125 126 /** 127 * wlan_coap_offload_periodic_tx_disable() - private API to disable CoAP 128 * offload periodic transmitting 129 * @vdev: pointer to vdev object 130 * @req_id: request id 131 * 132 * Return: status of operation 133 */ 134 QDF_STATUS 135 wlan_coap_offload_periodic_tx_disable(struct wlan_objmgr_vdev *vdev, 136 uint32_t req_id); 137 138 /** 139 * wlan_coap_offload_cache_get() - private API to get CoAP offload cache 140 * @vdev: pointer to vdev object 141 * @req_id: request id 142 * @cbk: callback function to be called with the cache get result 143 * @context: context to be used by the caller to associate the get 144 * cache request with the response 145 * 146 * Return: status of operation 147 */ 148 QDF_STATUS 149 wlan_coap_offload_cache_get(struct wlan_objmgr_vdev *vdev, uint32_t req_id, 150 coap_cache_get_callback cbk, void *context); 151 #endif 152 #endif 153