/* * Copyright (c) 2021, The Linux Foundation. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /** * DOC: target_if_mgmt_txrx_rx_reo.h * This file contains declarations of management rx re-ordering related APIs. */ #ifndef _TARGET_IF_MGMT_TXRX_RX_REO_H_ #define _TARGET_IF_MGMT_TXRX_RX_REO_H_ #include <qdf_types.h> #include <wlan_objmgr_psoc_obj.h> #include <wlan_mgmt_txrx_rx_reo_utils_api.h> #include <wlan_mgmt_txrx_rx_reo_tgt_api.h> #include <wlan_lmac_if_api.h> #include <wlan_lmac_if_def.h> #include <wmi_unified_param.h> #ifdef WLAN_MGMT_RX_REO_SUPPORT /** * target_if_get_mgmt_rx_reo_low_level_ops() - Get low-level ops of management * rx-reorder module * @psoc: Pointer to psoc object * * Return: Pointer to management rx-reorder low-level ops */ static inline struct wlan_lmac_if_mgmt_rx_reo_low_level_ops * target_if_get_mgmt_rx_reo_low_level_ops(struct wlan_objmgr_psoc *psoc) { struct wlan_lmac_if_mgmt_rx_reo_tx_ops *mgmt_rx_reo_tx_ops; mgmt_rx_reo_tx_ops = wlan_psoc_get_mgmt_rx_reo_txops(psoc); if (!mgmt_rx_reo_tx_ops) { mgmt_txrx_err("txops is null for mgmt rx reo module"); return NULL; } return &mgmt_rx_reo_tx_ops->low_level_ops; } /** * target_if_mgmt_rx_reo_register_event_handlers() - Register management * rx-reordering related event handlers. * @psoc: psoc object * * Return: QDF_STATUS */ QDF_STATUS target_if_mgmt_rx_reo_register_event_handlers(struct wlan_objmgr_psoc *psoc); /** * target_if_mgmt_rx_reo_unregister_event_handlers() - Unregister management * rx-reordering related event handlers. * @psoc: psoc object * * Return: QDF_STATUS */ QDF_STATUS target_if_mgmt_rx_reo_unregister_event_handlers(struct wlan_objmgr_psoc *psoc); /** * target_if_mgmt_rx_reo_tx_ops_register() - Register management rx-reordring * txops * @mgmt_txrx_tx_ops: Pointer to mgmt_txrx module's txops * * Return: QDF_STATUS */ QDF_STATUS target_if_mgmt_rx_reo_tx_ops_register( struct wlan_lmac_if_mgmt_txrx_tx_ops *mgmt_txrx_tx_ops); /** * target_if_mgmt_rx_reo_get_rx_ops() - Retrieve rx_ops of MGMT Rx REO module * @psoc:psoc context * * Return: Pointer to rx_ops of MGMT Rx REO module */ static struct wlan_lmac_if_mgmt_rx_reo_rx_ops * target_if_mgmt_rx_reo_get_rx_ops(struct wlan_objmgr_psoc *psoc) { struct wlan_lmac_if_mgmt_txrx_rx_ops *mgmt_rx_ops; mgmt_rx_ops = wlan_lmac_if_get_mgmt_txrx_rx_ops(psoc); if (!mgmt_rx_ops) { mgmt_rx_reo_err("MGMT TxRx rx_ops is NULL"); return NULL; } return &mgmt_rx_ops->mgmt_rx_reo_rx_ops; } /** * target_if_mgmt_rx_reo_extract_reo_params() - Extract MGMT Rx REO params from * MGMT_RX_EVENT_ID * @wmi_handle: wmi handle * @evt_buf: pointer to event buffer * @params: Pointer to MGMT Rx event parameters * * Return: QDF_STATUS of operation */ QDF_STATUS target_if_mgmt_rx_reo_extract_reo_params(wmi_unified_t wmi_handle, void *evt_buf, struct mgmt_rx_event_params *params); /** * target_if_mgmt_rx_reo_host_drop_handler() - MGMT Rx REO handler for the * management Rx frames that gets dropped in the Host before entering * MGMT Rx REO algorithm * @pdev: pdev for which this frame was intended * @params: MGMT Rx event parameters * * Return: QDF_STATUS of operation */ QDF_STATUS target_if_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev, struct mgmt_rx_event_params *params); /** * target_if_mgmt_rx_reo_release_frames() - API to release the management * frames of a given psoc * @arg: Pointer to void * argument * * Return: void */ void target_if_mgmt_rx_reo_release_frames(void *arg); #else /** * target_if_mgmt_rx_reo_register_event_handlers() - Register management * rx-reordering related event handlers. * @psoc: psoc object * * Return: QDF_STATUS */ static inline QDF_STATUS target_if_mgmt_rx_reo_register_event_handlers(struct wlan_objmgr_psoc *psoc) { return QDF_STATUS_SUCCESS; } /** * target_if_mgmt_rx_reo_unregister_event_handlers() - Unregister management * rx-reordering related event handlers. * @psoc: psoc object * * Return: QDF_STATUS */ static inline QDF_STATUS target_if_mgmt_rx_reo_unregister_event_handlers(struct wlan_objmgr_psoc *psoc) { return QDF_STATUS_SUCCESS; } /** * target_if_mgmt_rx_reo_tx_ops_register() - Register management rx-reordring * txops * @mgmt_txrx_tx_ops: Pointer to mgmt_txrx module's txops * * Return: QDF_STATUS */ static inline QDF_STATUS target_if_mgmt_rx_reo_tx_ops_register( struct wlan_lmac_if_mgmt_txrx_tx_ops *mgmt_txrx_tx_ops) { return QDF_STATUS_SUCCESS; } /** * target_if_mgmt_rx_reo_extract_reo_params() - Extract MGMT Rx REO params from * MGMT_RX_EVENT_ID * @wmi_handle: wmi handle * @evt_buf: pointer to event buffer * @hdr: Pointer to MGMT Rx event parameters * * Return: QDF_STATUS of operation */ static inline QDF_STATUS target_if_mgmt_rx_reo_extract_reo_params(wmi_unified_t wmi_handle, void *evt_buf, struct mgmt_rx_event_params *hdr) { return QDF_STATUS_SUCCESS; } /** * target_if_mgmt_rx_reo_host_drop_handler() - MGMT Rx REO handler for the * management Rx frames that gets dropped in the Host before entering * MGMT Rx REO algorithm * @pdev: pdev for which this frame was intended * @params: MGMT Rx event parameters * * Return: QDF_STATUS of operation */ static inline QDF_STATUS target_if_mgmt_rx_reo_host_drop_handler(struct wlan_objmgr_pdev *pdev, struct mgmt_rx_event_params *params) { /* Nothing to do when REO is compiled off */ return QDF_STATUS_SUCCESS; } /** * target_if_mgmt_rx_reo_release_frames() - API to release the management * frames of a given psoc * @arg: Pointer to void * argument * * Return: void */ static inline void target_if_mgmt_rx_reo_release_frames(void *arg) { } #endif /* WLAN_MGMT_RX_REO_SUPPORT */ #endif /* _TARGET_IF_MGMT_TXRX_RX_REO_H_ */