1 /* 2 * Copyright (c) 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 any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 /** 19 * DOC: target_if_mgmt_txrx_rx_reo.h 20 * This file contains declarations of management rx re-ordering related APIs. 21 */ 22 23 #ifndef _TARGET_IF_MGMT_TXRX_RX_REO_H_ 24 #define _TARGET_IF_MGMT_TXRX_RX_REO_H_ 25 26 #include <qdf_types.h> 27 #include <wlan_objmgr_psoc_obj.h> 28 #include <wlan_mgmt_txrx_rx_reo_utils_api.h> 29 #include <wlan_mgmt_txrx_rx_reo_tgt_api.h> 30 #include <wlan_lmac_if_api.h> 31 #include <wlan_lmac_if_def.h> 32 #include <wmi_unified_param.h> 33 34 #ifdef WLAN_MGMT_RX_REO_SUPPORT 35 /** 36 * target_if_get_mgmt_rx_reo_low_level_ops() - Get low-level ops of management 37 * rx-reorder module 38 * @psoc: Pointer to psoc object 39 * 40 * Return: Pointer to management rx-reorder low-level ops 41 */ 42 static inline struct wlan_lmac_if_mgmt_rx_reo_low_level_ops * 43 target_if_get_mgmt_rx_reo_low_level_ops(struct wlan_objmgr_psoc *psoc) 44 { 45 struct wlan_lmac_if_mgmt_rx_reo_tx_ops *mgmt_rx_reo_tx_ops; 46 47 mgmt_rx_reo_tx_ops = wlan_psoc_get_mgmt_rx_reo_txops(psoc); 48 if (!mgmt_rx_reo_tx_ops) { 49 mgmt_txrx_err("txops is null for mgmt rx reo module"); 50 return NULL; 51 } 52 53 return &mgmt_rx_reo_tx_ops->low_level_ops; 54 } 55 56 /** 57 * target_if_mgmt_rx_reo_register_event_handlers() - Register management 58 * rx-reordering related event handlers. 59 * @psoc: psoc object 60 * 61 * Return: QDF_STATUS 62 */ 63 QDF_STATUS 64 target_if_mgmt_rx_reo_register_event_handlers(struct wlan_objmgr_psoc *psoc); 65 66 /** 67 * target_if_mgmt_rx_reo_unregister_event_handlers() - Unregister management 68 * rx-reordering related event handlers. 69 * @psoc: psoc object 70 * 71 * Return: QDF_STATUS 72 */ 73 QDF_STATUS 74 target_if_mgmt_rx_reo_unregister_event_handlers(struct wlan_objmgr_psoc *psoc); 75 76 /** 77 * target_if_mgmt_rx_reo_tx_ops_register() - Register management rx-reordring 78 * txops 79 * @mgmt_txrx_tx_ops: Pointer to mgmt_txrx module's txops 80 * 81 * Return: QDF_STATUS 82 */ 83 QDF_STATUS 84 target_if_mgmt_rx_reo_tx_ops_register( 85 struct wlan_lmac_if_mgmt_txrx_tx_ops *mgmt_txrx_tx_ops); 86 87 /** 88 * target_if_mgmt_rx_reo_get_rx_ops() - Retrieve rx_ops of MGMT Rx REO module 89 * @psoc:psoc context 90 * 91 * Return: Pointer to rx_ops of MGMT Rx REO module 92 */ 93 static struct wlan_lmac_if_mgmt_rx_reo_rx_ops * 94 target_if_mgmt_rx_reo_get_rx_ops(struct wlan_objmgr_psoc *psoc) 95 { 96 struct wlan_lmac_if_mgmt_txrx_rx_ops *mgmt_rx_ops; 97 98 mgmt_rx_ops = wlan_lmac_if_get_mgmt_txrx_rx_ops(psoc); 99 if (!mgmt_rx_ops) { 100 mgmt_rx_reo_err("MGMT TxRx rx_ops is NULL"); 101 return NULL; 102 } 103 104 return &mgmt_rx_ops->mgmt_rx_reo_rx_ops; 105 } 106 107 /** 108 * target_if_mgmt_rx_reo_extract_reo_params() - Extract MGMT Rx REO params from 109 * MGMT_RX_EVENT_ID 110 * @wmi_handle: wmi handle 111 * @evt_buf: pointer to event buffer 112 * @params: Pointer to MGMT Rx event parameters 113 * 114 * Return: QDF_STATUS of operation 115 */ 116 QDF_STATUS 117 target_if_mgmt_rx_reo_extract_reo_params(wmi_unified_t wmi_handle, 118 void *evt_buf, 119 struct mgmt_rx_event_params *params); 120 /** 121 * target_if_mgmt_rx_reo_host_drop_handler() - MGMT Rx REO handler for the 122 * management Rx frames that gets dropped in the Host before entering 123 * MGMT Rx REO algorithm 124 * @pdev: pdev for which this frame was intended 125 * @params: MGMT Rx event parameters 126 * 127 * Return: QDF_STATUS of operation 128 */ 129 QDF_STATUS 130 target_if_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev, 131 struct mgmt_rx_event_params *params); 132 #else 133 /** 134 * target_if_mgmt_rx_reo_register_event_handlers() - Register management 135 * rx-reordering related event handlers. 136 * @psoc: psoc object 137 * 138 * Return: QDF_STATUS 139 */ 140 static inline QDF_STATUS 141 target_if_mgmt_rx_reo_register_event_handlers(struct wlan_objmgr_psoc *psoc) 142 { 143 return QDF_STATUS_SUCCESS; 144 } 145 146 /** 147 * target_if_mgmt_rx_reo_unregister_event_handlers() - Unregister management 148 * rx-reordering related event handlers. 149 * @psoc: psoc object 150 * 151 * Return: QDF_STATUS 152 */ 153 static inline QDF_STATUS 154 target_if_mgmt_rx_reo_unregister_event_handlers(struct wlan_objmgr_psoc *psoc) 155 { 156 return QDF_STATUS_SUCCESS; 157 } 158 159 /** 160 * target_if_mgmt_rx_reo_tx_ops_register() - Register management rx-reordring 161 * txops 162 * @mgmt_txrx_tx_ops: Pointer to mgmt_txrx module's txops 163 * 164 * Return: QDF_STATUS 165 */ 166 static inline QDF_STATUS 167 target_if_mgmt_rx_reo_tx_ops_register( 168 struct wlan_lmac_if_mgmt_txrx_tx_ops *mgmt_txrx_tx_ops) 169 { 170 return QDF_STATUS_SUCCESS; 171 } 172 173 /** 174 * target_if_mgmt_rx_reo_extract_reo_params() - Extract MGMT Rx REO params from 175 * MGMT_RX_EVENT_ID 176 * @wmi_handle: wmi handle 177 * @evt_buf: pointer to event buffer 178 * @hdr: Pointer to MGMT Rx event parameters 179 * 180 * Return: QDF_STATUS of operation 181 */ 182 static inline QDF_STATUS 183 target_if_mgmt_rx_reo_extract_reo_params(wmi_unified_t wmi_handle, 184 void *evt_buf, 185 struct mgmt_rx_event_params *hdr) 186 { 187 return QDF_STATUS_SUCCESS; 188 } 189 190 /** 191 * target_if_mgmt_rx_reo_host_drop_handler() - MGMT Rx REO handler for the 192 * management Rx frames that gets dropped in the Host before entering 193 * MGMT Rx REO algorithm 194 * @pdev: pdev for which this frame was intended 195 * @params: MGMT Rx event parameters 196 * 197 * Return: QDF_STATUS of operation 198 */ 199 static inline QDF_STATUS 200 target_if_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev, 201 struct mgmt_rx_event_params *params) 202 { 203 /* Nothing to do when REO is compiled off */ 204 return QDF_STATUS_SUCCESS; 205 } 206 #endif /* WLAN_MGMT_RX_REO_SUPPORT */ 207 #endif /* _TARGET_IF_MGMT_TXRX_RX_REO_H_ */ 208