qcacmn: target_if: Add TWT componentization structs and skeleton code

Add TWT componentization structs and skeleton code.

Change-Id: Ibddef3798149268f1799734664c5fbf679ee7a51
CRs-Fixed: 3085341
This commit is contained in:
Srinivas Girigowda
2021-11-29 19:59:34 -08:00
committed by Madan Koyyalamudi
parent b6ef4fe306
commit ff60609e39
10 changed files with 580 additions and 2 deletions

View File

@@ -104,6 +104,7 @@
#endif /* WLAN_MGMT_RX_REO_SUPPORT */
#include "wmi_unified_api.h"
#include <target_if_twt.h>
#ifdef WLAN_FEATURE_11BE_MLO
#include <target_if_mlo_mgr.h>
@@ -529,6 +530,19 @@ static void target_if_ipa_tx_ops_register(struct wlan_lmac_if_tx_ops *tx_ops)
{ }
#endif
#if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
static
void target_if_twt_tx_ops_register(struct wlan_lmac_if_tx_ops *tx_ops)
{
target_if_twt_register_tx_ops(tx_ops);
}
#else
static
void target_if_twt_tx_ops_register(struct wlan_lmac_if_tx_ops *tx_ops)
{
}
#endif /* WLAN_SUPPORT_TWT && WLAN_TWT_CONV_SUPPORTED */
static
QDF_STATUS target_if_register_umac_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
{
@@ -582,6 +596,9 @@ QDF_STATUS target_if_register_umac_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
target_if_mlo_tx_ops_register(tx_ops);
target_if_ipa_tx_ops_register(tx_ops);
target_if_twt_tx_ops_register(tx_ops);
/* Converged UMAC components to register their TX-ops here */
return QDF_STATUS_SUCCESS;
}

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2022 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
@@ -33,6 +33,7 @@
#include <init_cmd_api.h>
#include <target_if_scan.h>
#include <target_if_reg.h>
#include <target_if_twt.h>
/**
* init_deinit_alloc_host_mem_chunk() - allocates chunk of memory requested
@@ -466,8 +467,10 @@ void init_deinit_prepare_send_init_cmd(
QDF_MIN(info->wlan_res_cfg.max_ndp_sessions,
info->service_ext2_param.max_ndp_sessions);
if (info->service_ext2_param.twt_ack_support_cap)
if (info->service_ext2_param.twt_ack_support_cap) {
info->wlan_res_cfg.twt_ack_support_cap = true;
target_if_twt_set_twt_ack_support(psoc, true);
}
info->wlan_res_cfg.target_cap_flags =
target_psoc_get_target_cap_flags(tgt_hdl);

View File

@@ -38,6 +38,7 @@
#include <wlan_mlo_mgr_cmn.h>
#include <wlan_mlo_mgr_setup.h>
#endif
#include <target_if_twt.h>
static void init_deinit_set_send_init_cmd(struct wlan_objmgr_psoc *psoc,
struct target_psoc_info *tgt_hdl)
@@ -255,6 +256,7 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle,
target_if_reg_set_offloaded_info(psoc);
target_if_reg_set_6ghz_info(psoc);
target_if_reg_set_5dot9_ghz_info(psoc);
target_if_twt_fill_tgt_caps(psoc, wmi_handle);
/* Send num_msdu_desc to DP layer */
cdp_soc_set_param(wlan_psoc_get_dp_handle(psoc),

View File

@@ -0,0 +1,153 @@
/*
* Copyright (c) 2022 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_ext_twt.h
* This file contains twt component's target related APIs
*/
#ifndef _TARGET_IF_EXT_TWT_H_
#define _TARGET_IF_EXT_TWT_H_
#include <wlan_lmac_if_def.h>
#if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
/**
* target_if_twt_register_ext_events() - Register twt wmi events
* @psoc: psoc handle
*
* Register TWT ext (outside of qcacmn) WMI events
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_register_ext_events(struct wlan_objmgr_psoc *psoc);
/**
* target_if_twt_register_ext_tx_ops() - Register twt tx ops
* @twt_tx_ops: twt_tx_ops structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_register_ext_tx_ops(struct wlan_lmac_if_twt_tx_ops *twt_tx_ops);
/**
* target_if_twt_setup_req() - target if twt setup request
* @psoc: psoc handle
* @req: TWT add dialog request structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_setup_req(struct wlan_objmgr_psoc *psoc,
struct twt_add_dialog_param *req);
/**
* target_if_twt_teardown_req() - target if twt teardown request
* @psoc: psoc handle
* @req: TWT del dialog request structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_teardown_req(struct wlan_objmgr_psoc *psoc,
struct twt_del_dialog_param *req);
/**
* target_if_twt_pause_req() - target if twt pause request
* @psoc: psoc handle
* @req: TWT pause dialog request structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_pause_req(struct wlan_objmgr_psoc *psoc,
struct twt_pause_dialog_cmd_param *req);
/**
* target_if_twt_resume_req() - target if twt resume request
* @psoc: psoc handle
* @req: TWT resume dialog request structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_resume_req(struct wlan_objmgr_psoc *psoc,
struct twt_resume_dialog_cmd_param *req);
/**
* target_if_twt_nudge_req() - target if twt nudge request
* @psoc: psoc handle
* @req: TWT nudge dialog request structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_nudge_req(struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_cmd_param *req);
#else
static inline QDF_STATUS
target_if_twt_register_ext_tx_ops(struct wlan_lmac_if_twt_tx_ops *twt_tx_ops)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
target_if_twt_register_ext_events(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
target_if_twt_setup_req(struct wlan_objmgr_psoc *psoc,
struct twt_add_dialog_param *req)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
target_if_twt_teardown_req(struct wlan_objmgr_psoc *psoc,
struct twt_del_dialog_param *req)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
target_if_twt_pause_req(struct wlan_objmgr_psoc *psoc,
struct twt_pause_dialog_cmd_param *req)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
target_if_twt_resume_req(struct wlan_objmgr_psoc *psoc,
struct twt_resume_dialog_cmd_param *req)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
target_if_twt_nudge_req(struct wlan_objmgr_psoc *psoc,
struct twt_nudge_dialog_cmd_param *req)
{
return QDF_STATUS_SUCCESS;
}
#endif
#endif /*_TARGET_IF_EXT_TWT_H_ */

View File

@@ -0,0 +1,121 @@
/*
* Copyright (c) 2022 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_twt.h
*/
#ifndef _TARGET_IF_TWT_H_
#define _TARGET_IF_TWT_H_
#include <wmi_unified_param.h>
#include <wlan_lmac_if_def.h>
#include <target_if.h>
#include <wlan_twt_public_structs.h>
#if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
/**
* target_if_twt_set_twt_ack_support() - set ack support
* @psoc: psoc handle
* @val: value
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_set_twt_ack_support(struct wlan_objmgr_psoc *psoc,
bool val);
/**
* target_if_twt_fill_tgt_caps() - fill twt target caps
* @psoc: psoc handle
* @wmi_handle: wmi handle
*
* This function populates twt target capability info in twt private psoc object
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_fill_tgt_caps(struct wlan_objmgr_psoc *psoc,
wmi_unified_t wmi_handle);
/**
* target_if_twt_register_tx_ops() - Register twt tx ops
* @tx_ops: tx_ops structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops);
/**
* target_if_twt_register_events() - Register twt wmi events
* @psoc: psoc handle
*
* Register TWT WMI events
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_register_events(struct wlan_objmgr_psoc *psoc);
/**
* target_if_twt_deregister_events() - De-register twt wmi events
* @psoc: psoc handle
*
* De-register TWT WMI events
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_deregister_events(struct wlan_objmgr_psoc *psoc);
#else
static inline
QDF_STATUS target_if_twt_set_twt_ack_support(struct wlan_objmgr_psoc *psoc,
bool val)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS target_if_twt_fill_tgt_caps(struct wlan_objmgr_psoc *psoc,
wmi_unified_t wmi_handle)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS target_if_twt_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS target_if_twt_register_events(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS target_if_twt_deregister_events(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
#endif
#endif /* _TARGET_IF_TWT_H_ */

View File

@@ -0,0 +1,70 @@
/*
* Copyright (c) 2022 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_twt_cmd.h
*/
#ifndef _TARGET_IF_TWT_CMD_H_
#define _TARGET_IF_TWT_CMD_H_
#include <wmi_unified_param.h>
#include <wlan_lmac_if_def.h>
#include <target_if.h>
#include <wlan_twt_public_structs.h>
#if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
/**
* target_if_twt_enable_req() - target if twt enable request
* @psoc: psoc handle
* @req: TWT enable request structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_enable_req(struct wlan_objmgr_psoc *psoc,
struct twt_enable_param *req);
/**
* target_if_twt_disable_req() - target if twt disable request
* @psoc: psoc handle
* @req: TWT disable request structure
*
* return: QDF_STATUS
*/
QDF_STATUS
target_if_twt_disable_req(struct wlan_objmgr_psoc *psoc,
struct twt_disable_param *req);
#else
static inline QDF_STATUS
target_if_twt_enable_req(struct wlan_objmgr_psoc *psoc,
struct twt_enable_param *params)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
target_if_twt_disable_req(struct wlan_objmgr_psoc *psoc,
struct twt_disable_param *params)
{
return QDF_STATUS_SUCCESS;
}
#endif
#endif /* _TARGET_IF_TWT_CMD_H_ */

View File

@@ -0,0 +1,73 @@
/*
* Copyright (c) 2022 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_twt_evt.h
*/
#ifndef _TARGET_IF_TWT_EVT_H_
#define _TARGET_IF_TWT_EVT_H_
#include <wmi_unified_param.h>
#include <wlan_lmac_if_def.h>
#include <target_if.h>
#include <wlan_twt_public_structs.h>
#if defined(WLAN_SUPPORT_TWT) && defined(WLAN_TWT_CONV_SUPPORTED)
/**
* target_if_twt_en_complete_event_handler - TWT enable complete event handler
* @scn: scn handle
* @data: buffer with event
* @datalen: buffer length
*
* Return: 0 on success, negative value on failure
*/
int
target_if_twt_en_complete_event_handler(ol_scn_t scn,
uint8_t *data, uint32_t datalen);
/**
* target_if_twt_disable_comp_event_handler - TWT disable complete event handler
* @scn: scn handle
* @data: buffer with event
* @datalen: buffer length
*
* Return: 0 on success, negative value on failure
*/
int
target_if_twt_disable_comp_event_handler(ol_scn_t scn,
uint8_t *data, uint32_t datalen);
#else
static inline int
target_if_twt_en_complete_event_handler(ol_scn_t scn,
uint8_t *data, uint32_t datalen)
{
return 0;
}
static inline int
target_if_twt_disable_comp_event_handler(ol_scn_t scn,
uint8_t *data, uint32_t datalen)
{
return 0;
}
#endif
#endif /* _TARGET_IF_TWT_EVT_H_ */

View File

@@ -0,0 +1,59 @@
/*
* Copyright (c) 2022 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_twt.c
* This file contains twt component's target related function definitions
*/
#include <target_if_twt.h>
#include <target_if_twt_cmd.h>
#include <target_if_twt_evt.h>
#include <target_if_ext_twt.h>
#include "twt/core/src/wlan_twt_common.h"
#include "twt/core/src/wlan_twt_priv.h"
QDF_STATUS
target_if_twt_register_events(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
target_if_twt_deregister_events(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
target_if_twt_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
target_if_twt_set_twt_ack_support(struct wlan_objmgr_psoc *psoc,
bool val)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
target_if_twt_fill_tgt_caps(struct wlan_objmgr_psoc *psoc,
wmi_unified_t wmi_handle)
{
return QDF_STATUS_SUCCESS;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2022 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_twt_cmd.c
* This file contains twt component's target related function definitions
*/
#include <target_if_twt.h>
#include <target_if_twt_cmd.h>
#include <target_if_ext_twt.h>
#include "twt/core/src/wlan_twt_common.h"
QDF_STATUS
target_if_twt_enable_req(struct wlan_objmgr_psoc *psoc,
struct twt_enable_param *req)
{
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
target_if_twt_disable_req(struct wlan_objmgr_psoc *psoc,
struct twt_disable_param *req)
{
return QDF_STATUS_SUCCESS;
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright (c) 2022 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_twt_evt.c
* This file contains twt component's target related function definitions
*/
#include <target_if_twt.h>
#include <target_if_twt_evt.h>
#include <target_if_ext_twt.h>
#include "twt/core/src/wlan_twt_priv.h"
#include <wlan_twt_api.h>
#include <wmi_unified_twt_api.h>
int
target_if_twt_en_complete_event_handler(ol_scn_t scn,
uint8_t *data, uint32_t datalen)
{
return 0;
}
int
target_if_twt_disable_comp_event_handler(ol_scn_t scn,
uint8_t *data, uint32_t datalen)
{
return 0;
}