qcacmn: DP peer changes for multi-chip MLO

DP peer changes required for multi-chip MLO.
This change includes

1) Adding MLO peer to global peer hash at ML context
2) Add ML peer to all partner chips id to objtable

Change-Id: I230a6c1b14484c587b190a9a318fe9ffb1caea11
This commit is contained in:
Chaithanya Garrepalli
2021-11-23 15:34:15 +05:30
committed by Madan Koyyalamudi
parent fb6af4edcd
commit bbe062b4b7
10 changed files with 713 additions and 198 deletions

View File

@@ -5515,6 +5515,7 @@ static void dp_soc_detach(struct cdp_soc_t *txrx_soc)
dp_mon_soc_detach_wrapper(soc);
}
qdf_mem_free(soc->cdp_soc.ops);
qdf_mem_free(soc);
}
@@ -12341,42 +12342,43 @@ static struct cdp_peer_ops dp_ops_peer = {
};
#endif
static struct cdp_ops dp_txrx_ops = {
.cmn_drv_ops = &dp_ops_cmn,
.ctrl_ops = &dp_ops_ctrl,
.me_ops = &dp_ops_me,
.host_stats_ops = &dp_ops_host_stats,
.wds_ops = &dp_ops_wds,
.raw_ops = &dp_ops_raw,
static void dp_soc_txrx_ops_attach(struct dp_soc *soc)
{
soc->cdp_soc.ops->cmn_drv_ops = &dp_ops_cmn;
soc->cdp_soc.ops->ctrl_ops = &dp_ops_ctrl;
soc->cdp_soc.ops->me_ops = &dp_ops_me;
soc->cdp_soc.ops->host_stats_ops = &dp_ops_host_stats;
soc->cdp_soc.ops->wds_ops = &dp_ops_wds;
soc->cdp_soc.ops->raw_ops = &dp_ops_raw;
#ifdef PEER_FLOW_CONTROL
.pflow_ops = &dp_ops_pflow,
soc->cdp_soc.ops->pflow_ops = &dp_ops_pflow;
#endif /* PEER_FLOW_CONTROL */
#ifdef DP_PEER_EXTENDED_API
.misc_ops = &dp_ops_misc,
.ocb_ops = &dp_ops_ocb,
.peer_ops = &dp_ops_peer,
.mob_stats_ops = &dp_ops_mob_stats,
soc->cdp_soc.ops->misc_ops = &dp_ops_misc;
soc->cdp_soc.ops->ocb_ops = &dp_ops_ocb;
soc->cdp_soc.ops->peer_ops = &dp_ops_peer;
soc->cdp_soc.ops->mob_stats_ops = &dp_ops_mob_stats;
#endif
#ifdef DP_FLOW_CTL
.cfg_ops = &dp_ops_cfg,
.flowctl_ops = &dp_ops_flowctl,
.l_flowctl_ops = &dp_ops_l_flowctl,
.throttle_ops = &dp_ops_throttle,
soc->cdp_soc.ops->cfg_ops = &dp_ops_cfg;
soc->cdp_soc.ops->flowctl_ops = &dp_ops_flowctl;
soc->cdp_soc.ops->l_flowctl_ops = &dp_ops_l_flowctl;
soc->cdp_soc.ops->throttle_ops = &dp_ops_throttle;
#endif
#ifdef IPA_OFFLOAD
.ipa_ops = &dp_ops_ipa,
soc->cdp_soc.ops->ipa_ops = &dp_ops_ipa;
#endif
#ifdef DP_POWER_SAVE
.bus_ops = &dp_ops_bus,
soc->cdp_soc.ops->bus_ops = &dp_ops_bus;
#endif
#if defined(WLAN_CFR_ENABLE) && defined(WLAN_ENH_CFR_ENABLE)
.cfr_ops = &dp_ops_cfr,
soc->cdp_soc.ops->cfr_ops = &dp_ops_cfr;
#endif
#ifdef WLAN_SUPPORT_MSCS
.mscs_ops = &dp_ops_mscs,
soc->cdp_soc.ops->mscs_ops = &dp_ops_mscs;
#endif
#ifdef WLAN_SUPPORT_MESH_LATENCY
.mesh_latency_ops = &dp_ops_mesh_latency,
soc->cdp_soc.ops->mesh_latency_ops = &dp_ops_mesh_latency;
#endif
};
@@ -12483,7 +12485,12 @@ dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
&soc->cmem_size);
int_ctx = 0;
soc->device_id = device_id;
soc->cdp_soc.ops = &dp_txrx_ops;
soc->cdp_soc.ops =
(struct cdp_ops *)qdf_mem_malloc(sizeof(struct cdp_ops));
if (!soc->cdp_soc.ops)
goto fail1;
dp_soc_txrx_ops_attach(soc);
soc->cdp_soc.ol_ops = ol_ops;
soc->ctrl_psoc = ctrl_psoc;
soc->osdev = qdf_osdev;
@@ -12507,40 +12514,40 @@ dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
soc->wlan_cfg_ctx = wlan_cfg_soc_attach(soc->ctrl_psoc);
if (!soc->wlan_cfg_ctx) {
dp_err("wlan_cfg_ctx failed\n");
goto fail1;
goto fail2;
}
dp_soc_cfg_attach(soc);
if (dp_hw_link_desc_pool_banks_alloc(soc, WLAN_INVALID_PDEV_ID)) {
dp_err("failed to allocate link desc pool banks");
goto fail2;
goto fail3;
}
if (dp_hw_link_desc_ring_alloc(soc)) {
dp_err("failed to allocate link_desc_ring");
goto fail3;
goto fail4;
}
if (!QDF_IS_STATUS_SUCCESS(soc->arch_ops.txrx_soc_attach(soc,
params))) {
dp_err("unable to do target specific attach");
goto fail4;
goto fail5;
}
if (dp_soc_srng_alloc(soc)) {
dp_err("failed to allocate soc srng rings");
goto fail5;
goto fail6;
}
if (dp_soc_tx_desc_sw_pools_alloc(soc)) {
dp_err("dp_soc_tx_desc_sw_pools_alloc failed");
goto fail6;
goto fail7;
}
if (!dp_monitor_modularized_enable()) {
if (dp_mon_soc_attach_wrapper(soc)) {
dp_err("failed to attach monitor");
goto fail7;
goto fail8;
}
}
@@ -12559,18 +12566,20 @@ dp_soc_attach(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
qdf_skb_total_mem_stats_read());
return soc;
fail7:
fail8:
dp_soc_tx_desc_sw_pools_free(soc);
fail6:
fail7:
dp_soc_srng_free(soc);
fail5:
fail6:
soc->arch_ops.txrx_soc_detach(soc);
fail4:
fail5:
dp_hw_link_desc_ring_free(soc);
fail3:
fail4:
dp_hw_link_desc_pool_banks_free(soc, WLAN_INVALID_PDEV_ID);
fail2:
fail3:
wlan_cfg_soc_detach(soc->wlan_cfg_ctx);
fail2:
qdf_mem_free(soc->cdp_soc.ops);
fail1:
qdf_mem_free(soc);
fail0: