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