qcacmn: Add support for handling MLO TSF sync capability

Add APIs to init the TSF sync capability based on
WMI_SERVICE_MLO_TSF_SYNC service bit sent from FW,
per ML group.

Change-Id: I5dad3fef7ebfa2af330b95d45cac3bef862f46f0
CRs-Fixed: 3491364
This commit is contained in:
Jhalak Naik
2023-04-17 14:44:32 +05:30
committed by Madan Koyyalamudi
orang tua ba55e0f2a8
melakukan d563641c08
6 mengubah file dengan 69 tambahan dan 0 penghapusan

Melihat File

@@ -148,6 +148,7 @@ struct mlo_chip_info {
* @event: event for teardown completion
* @dp_handle: pointer to DP ML context
* @chip_info: chip specific info of the soc
* @tsf_sync_enabled: MLO TSF sync is enabled at FW or not
*/
struct mlo_setup_info {
uint8_t ml_grp_id;
@@ -166,6 +167,7 @@ struct mlo_setup_info {
qdf_event_t event;
struct cdp_mlo_ctxt *dp_handle;
struct mlo_chip_info chip_info;
bool tsf_sync_enabled;
};
/**

Melihat File

@@ -220,6 +220,18 @@ bool mlo_vdevs_check_single_soc(struct wlan_objmgr_vdev **wlan_vdev_list,
QDF_STATUS mlo_check_all_pdev_state(struct wlan_objmgr_psoc *psoc,
uint8_t grp_id,
enum MLO_LINK_STATE state);
/**
* mlo_update_tsf_sync_support() - API to update TSF sync support per MLO
* group.
*
* @psoc: Pointer to psoc object
* @tsf_sync_enab: Indicates TSF sync is to be enabled or not
*
* Return: None
*/
void mlo_update_tsf_sync_support(struct wlan_objmgr_psoc *psoc,
bool tsf_sync_enab);
#else
static inline void mlo_setup_init(uint8_t total_grp)
{
@@ -248,5 +260,11 @@ bool mlo_psoc_get_grp_id(struct wlan_objmgr_psoc *psoc, uint8_t *grp_id)
{
return 0;
}
static inline
void mlo_update_tsf_sync_support(struct wlan_objmgr_psoc *psoc,
bool tsf_sync_enab)
{
}
#endif /* WLAN_MLO_MULTI_CHIP */
#endif /* _WLAN_MLO_MGR_SETUP_H_ */

Melihat File

@@ -434,6 +434,7 @@ void mlo_setup_init(uint8_t total_grp)
mlo_ctx->setup_info = setup_info;
mlo_ctx->setup_info[0].ml_grp_id = 0;
for (id = 0; id < total_grp; id++) {
mlo_ctx->setup_info[id].tsf_sync_enabled = true;
if (qdf_event_create(&mlo_ctx->setup_info[id].event) !=
QDF_STATUS_SUCCESS)
mlo_err("Unable to create teardown event");
@@ -1096,4 +1097,23 @@ QDF_STATUS mlo_link_teardown_link(struct wlan_objmgr_psoc *psoc,
}
qdf_export_symbol(mlo_link_teardown_link);
void mlo_update_tsf_sync_support(struct wlan_objmgr_psoc *psoc,
bool tsf_sync_enab)
{
uint8_t ml_grp_id;
struct mlo_mgr_context *mlo_ctx = wlan_objmgr_get_mlo_ctx();
struct mlo_setup_info *mlo_setup;
ml_grp_id = wlan_mlo_get_psoc_group_id(psoc);
if (ml_grp_id < 0) {
mlo_err("Invalid ML Grp ID %d", ml_grp_id);
return;
}
mlo_setup = &mlo_ctx->setup_info[ml_grp_id];
mlo_setup->tsf_sync_enabled &= tsf_sync_enab;
}
qdf_export_symbol(mlo_update_tsf_sync_support);
#endif /*WLAN_MLO_MULTI_CHIP*/