xref: /wlan-dirver/qca-wifi-host-cmn/target_if/mgmt_txrx/inc/target_if_mgmt_txrx_rx_reo.h (revision 2f4b444fb7e689b83a4ab0e7b3b38f0bf4def8e0) !
1 /*
2  * Copyright (c) 2021, The Linux Foundation. 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: target_if_mgmt_txrx_rx_reo.h
19  *  This file contains declarations of management rx re-ordering related APIs.
20  */
21 
22 #ifndef _TARGET_IF_MGMT_TXRX_RX_REO_H_
23 #define _TARGET_IF_MGMT_TXRX_RX_REO_H_
24 
25 #include <qdf_types.h>
26 #include <wlan_objmgr_psoc_obj.h>
27 #include <wlan_mgmt_txrx_rx_reo_utils_api.h>
28 #include <wlan_mgmt_txrx_rx_reo_tgt_api.h>
29 #include <wlan_lmac_if_api.h>
30 #include <wlan_lmac_if_def.h>
31 #include <wmi_unified_param.h>
32 
33 #ifdef WLAN_MGMT_RX_REO_SUPPORT
34 
35 #define MGMT_RX_REO_SNAPSHOT_READ_RETRY_LIMIT (5)
36 
37 /**
38  * target_if_get_mgmt_rx_reo_low_level_ops() - Get low-level ops of management
39  * rx-reorder module
40  * @psoc: Pointer to psoc object
41  *
42  * Return: Pointer to management rx-reorder low-level ops
43  */
44 static inline struct wlan_lmac_if_mgmt_rx_reo_low_level_ops *
45 target_if_get_mgmt_rx_reo_low_level_ops(struct wlan_objmgr_psoc *psoc)
46 {
47 	struct wlan_lmac_if_mgmt_rx_reo_tx_ops *mgmt_rx_reo_tx_ops;
48 
49 	mgmt_rx_reo_tx_ops = wlan_psoc_get_mgmt_rx_reo_txops(psoc);
50 	if (!mgmt_rx_reo_tx_ops) {
51 		mgmt_txrx_err("txops is null for mgmt rx reo module");
52 		return NULL;
53 	}
54 
55 	return &mgmt_rx_reo_tx_ops->low_level_ops;
56 }
57 
58 /**
59  * target_if_mgmt_rx_reo_register_event_handlers() - Register management
60  * rx-reordering related event handlers.
61  * @psoc: psoc object
62  *
63  * Return: QDF_STATUS
64  */
65 QDF_STATUS
66 target_if_mgmt_rx_reo_register_event_handlers(struct wlan_objmgr_psoc *psoc);
67 
68 /**
69  * target_if_mgmt_rx_reo_unregister_event_handlers() - Unregister management
70  * rx-reordering related event handlers.
71  * @psoc: psoc object
72  *
73  * Return: QDF_STATUS
74  */
75 QDF_STATUS
76 target_if_mgmt_rx_reo_unregister_event_handlers(struct wlan_objmgr_psoc *psoc);
77 
78 /**
79  * target_if_mgmt_rx_reo_tx_ops_register() - Register management rx-reordring
80  * txops
81  * @mgmt_txrx_tx_ops: Pointer to mgmt_txrx module's txops
82  *
83  * Return: QDF_STATUS
84  */
85 QDF_STATUS
86 target_if_mgmt_rx_reo_tx_ops_register(
87 		struct wlan_lmac_if_mgmt_txrx_tx_ops *mgmt_txrx_tx_ops);
88 
89 /**
90  * target_if_mgmt_rx_reo_get_rx_ops() - Retrieve rx_ops of MGMT Rx REO module
91  * @psoc:psoc context
92  *
93  * Return: Pointer to rx_ops of MGMT Rx REO module
94  */
95 static struct wlan_lmac_if_mgmt_rx_reo_rx_ops *
96 target_if_mgmt_rx_reo_get_rx_ops(struct wlan_objmgr_psoc *psoc)
97 {
98 	struct wlan_lmac_if_mgmt_txrx_rx_ops *mgmt_rx_ops;
99 
100 	mgmt_rx_ops = wlan_lmac_if_get_mgmt_txrx_rx_ops(psoc);
101 	if (!mgmt_rx_ops) {
102 		mgmt_rx_reo_err("MGMT TxRx rx_ops is NULL");
103 		return NULL;
104 	}
105 
106 	return &mgmt_rx_ops->mgmt_rx_reo_rx_ops;
107 }
108 
109 /**
110  * target_if_mgmt_rx_reo_extract_reo_params() - Extract MGMT Rx REO params from
111  * MGMT_RX_EVENT_ID
112  * @wmi_handle: wmi handle
113  * @evt_buf: pointer to event buffer
114  * @params: Pointer to MGMT Rx event parameters
115  *
116  * Return: QDF_STATUS of operation
117  */
118 QDF_STATUS
119 target_if_mgmt_rx_reo_extract_reo_params(wmi_unified_t wmi_handle,
120 					 void *evt_buf,
121 					 struct mgmt_rx_event_params *params);
122 /**
123  * target_if_mgmt_rx_reo_host_drop_handler() - MGMT Rx REO handler for the
124  * management Rx frames that gets dropped in the Host before entering
125  * MGMT Rx REO algorithm
126  * @pdev: pdev for which this frame was intended
127  * @params: MGMT Rx event parameters
128  *
129  * Return: QDF_STATUS of operation
130  */
131 QDF_STATUS
132 target_if_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev,
133 					struct mgmt_rx_event_params *params);
134 #else
135 /**
136  * target_if_mgmt_rx_reo_register_event_handlers() - Register management
137  * rx-reordering related event handlers.
138  * @psoc: psoc object
139  *
140  * Return: QDF_STATUS
141  */
142 static inline QDF_STATUS
143 target_if_mgmt_rx_reo_register_event_handlers(struct wlan_objmgr_psoc *psoc)
144 {
145 	return QDF_STATUS_SUCCESS;
146 }
147 
148 /**
149  * target_if_mgmt_rx_reo_unregister_event_handlers() - Unregister management
150  * rx-reordering related event handlers.
151  * @psoc: psoc object
152  *
153  * Return: QDF_STATUS
154  */
155 static inline QDF_STATUS
156 target_if_mgmt_rx_reo_unregister_event_handlers(struct wlan_objmgr_psoc *psoc)
157 {
158 	return QDF_STATUS_SUCCESS;
159 }
160 
161 /**
162  * target_if_mgmt_rx_reo_tx_ops_register() - Register management rx-reordring
163  * txops
164  * @mgmt_txrx_tx_ops: Pointer to mgmt_txrx module's txops
165  *
166  * Return: QDF_STATUS
167  */
168 static inline QDF_STATUS
169 target_if_mgmt_rx_reo_tx_ops_register(
170 		struct wlan_lmac_if_mgmt_txrx_tx_ops *mgmt_txrx_tx_ops)
171 {
172 	return QDF_STATUS_SUCCESS;
173 }
174 
175 /**
176  * target_if_mgmt_rx_reo_extract_reo_params() - Extract MGMT Rx REO params from
177  * MGMT_RX_EVENT_ID
178  * @wmi_handle: wmi handle
179  * @evt_buf: pointer to event buffer
180  * @hdr: Pointer to MGMT Rx event parameters
181  *
182  * Return: QDF_STATUS of operation
183  */
184 static inline QDF_STATUS
185 target_if_mgmt_rx_reo_extract_reo_params(wmi_unified_t wmi_handle,
186 					 void *evt_buf,
187 					 struct mgmt_rx_event_params *hdr)
188 {
189 	return QDF_STATUS_SUCCESS;
190 }
191 
192 /**
193  * target_if_mgmt_rx_reo_host_drop_handler() - MGMT Rx REO handler for the
194  * management Rx frames that gets dropped in the Host before entering
195  * MGMT Rx REO algorithm
196  * @pdev: pdev for which this frame was intended
197  * @params: MGMT Rx event parameters
198  *
199  * Return: QDF_STATUS of operation
200  */
201 static inline QDF_STATUS
202 target_if_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev,
203 					struct mgmt_rx_event_params *params)
204 {
205 	/* Nothing to do when REO is compiled off */
206 	return QDF_STATUS_SUCCESS;
207 }
208 #endif /* WLAN_MGMT_RX_REO_SUPPORT */
209 #endif /* _TARGET_IF_MGMT_TXRX_RX_REO_H_ */
210