qcacmn: Maintain dp_mlo_ctxt per each MLO group

As per current design, dp_mlo_ctxt is allocated during the
initialization of module while the MLO grouping information is
understood after WMI_READY_EVENT. The same is deinitialized while
unregistering the module.
To ensure dp_mlo_ctxt exists per MLO group, bring the dp_handle
a layer below in the hierarchy into the mlo_setup_info and allocate
dp_mlo_ctxt after the WMI_READY_EVENT is received from all the SOCs
for a given group. Deallocate it after the WMI_MLO_TEARDOWN_COMPLETE
event is received.

CRs-Fixed: 3355405
Change-Id: Ic3102a34a8d44877827e2ff1f7da2e414b2b463f
This commit is contained in:
Surya Prakash Raajen
2022-12-19 20:24:40 +05:30
zatwierdzone przez Madan Koyyalamudi
rodzic 27f8943f9c
commit 49ca504dbd
5 zmienionych plików z 46 dodań i 11 usunięć

Wyświetl plik

@@ -886,7 +886,6 @@ static QDF_STATUS dp_pdev_attach_be(struct dp_pdev *pdev,
struct cdp_pdev_attach_params *params)
{
dp_pdev_mlo_fill_params(pdev, params);
dp_mlo_update_link_to_pdev_map(pdev->soc, pdev);
return QDF_STATUS_SUCCESS;
}

Wyświetl plik

@@ -265,10 +265,19 @@ static void dp_mlo_soc_setup(struct cdp_soc_t *soc_hdl,
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
struct dp_mlo_ctxt *mlo_ctxt = cdp_mlo_ctx_to_dp(cdp_ml_ctxt);
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
uint8_t pdev_id;
if (!cdp_ml_ctxt)
return;
be_soc->ml_ctxt = mlo_ctxt;
for (pdev_id = 0; pdev_id < MAX_PDEV_CNT; pdev_id++) {
if (soc->pdev_list[pdev_id])
dp_mlo_update_link_to_pdev_map(soc,
soc->pdev_list[pdev_id]);
}
dp_mlo_set_soc_by_chip_id(mlo_ctxt, soc, be_soc->mlo_chip_id);
}