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