qcacmn: Write Rx desc SPT on partner SOC
Changes to write Rx descriptor secondary page tables on partner SOCs. Change-Id: If89eff3425078aebb975463a01d0a45c9f5a21db
This commit is contained in:

committed by
Madan Koyyalamudi

parent
f49b3a1753
commit
ed4b7bf28b
@@ -93,4 +93,18 @@ cdp_update_mlo_ptnr_list(ol_txrx_soc_handle soc, int8_t vdev_ids[],
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void cdp_mlo_setup_complete(ol_txrx_soc_handle soc,
|
||||
struct cdp_mlo_ctxt *mlo_ctx)
|
||||
{
|
||||
if (!soc || !soc->ops) {
|
||||
QDF_BUG(0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!soc->ops->mlo_ops ||
|
||||
!soc->ops->mlo_ops->mlo_setup_complete)
|
||||
return;
|
||||
|
||||
soc->ops->mlo_ops->mlo_setup_complete(mlo_ctx);
|
||||
}
|
||||
#endif /*_CDP_TXRX_MLO_H_*/
|
||||
|
@@ -109,6 +109,7 @@ enum vdev_ll_conn_actions {
|
||||
* struct cdp_mlo_ops - MLO ops for multichip
|
||||
* @mlo_soc_setup: setup DP mlo for SOC
|
||||
* @mlo_soc_teardown: teardown DP mlo for SOC
|
||||
* @mlo_setup_complete: indication to DP that all SOCs mlo is setup
|
||||
*/
|
||||
#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
|
||||
struct cdp_mlo_ops {
|
||||
@@ -119,6 +120,7 @@ struct cdp_mlo_ops {
|
||||
QDF_STATUS (*update_mlo_ptnr_list)(struct cdp_soc_t *soc_hdl,
|
||||
int8_t *vdev_ids, uint8_t num_vdevs,
|
||||
uint8_t vdev_id);
|
||||
void (*mlo_setup_complete)(struct cdp_mlo_ctxt *mlo_ctxt);
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@@ -1289,12 +1289,7 @@ static void dp_peer_get_reo_hash_be(struct dp_vdev *vdev,
|
||||
return dp_vdev_get_default_reo_hash(vdev, reo_dest,
|
||||
hash_based);
|
||||
|
||||
/* Not a ML link peer configure local chip*/
|
||||
if (!setup_info)
|
||||
chip_id = be_soc->mlo_chip_id;
|
||||
else
|
||||
chip_id = setup_info->primary_umac_id;
|
||||
|
||||
chip_id = be_soc->mlo_chip_id;
|
||||
default_rx_ring_id =
|
||||
wlan_cfg_mlo_default_rx_ring_get_by_chip_id(soc->wlan_cfg_ctx,
|
||||
chip_id);
|
||||
|
@@ -123,6 +123,37 @@ dp_mlo_get_soc_ref_by_chip_id(struct dp_mlo_ctxt *ml_ctxt,
|
||||
return soc;
|
||||
}
|
||||
|
||||
static QDF_STATUS dp_partner_soc_rx_hw_cc_init(struct dp_mlo_ctxt *mlo_ctxt,
|
||||
struct dp_soc_be *be_soc)
|
||||
{
|
||||
uint8_t i;
|
||||
struct dp_soc *partner_soc;
|
||||
struct dp_soc_be *be_partner_soc;
|
||||
uint8_t pool_id;
|
||||
QDF_STATUS qdf_status;
|
||||
|
||||
for (i = 0; i < WLAN_MAX_MLO_CHIPS; i++) {
|
||||
partner_soc = dp_mlo_get_soc_ref_by_chip_id(mlo_ctxt, i);
|
||||
if (!partner_soc)
|
||||
continue;
|
||||
|
||||
be_partner_soc = dp_get_be_soc_from_dp_soc(partner_soc);
|
||||
|
||||
for (pool_id = 0; pool_id < MAX_RXDESC_POOLS; pool_id++) {
|
||||
qdf_status =
|
||||
dp_hw_cookie_conversion_init
|
||||
(be_soc,
|
||||
&be_partner_soc->rx_cc_ctx[pool_id]);
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||
dp_alert("MLO partner soc RX CC init failed");
|
||||
return qdf_status;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return qdf_status;
|
||||
}
|
||||
|
||||
static void dp_mlo_soc_setup(struct cdp_soc_t *soc_hdl,
|
||||
struct cdp_mlo_ctxt *cdp_ml_ctxt)
|
||||
{
|
||||
@@ -307,10 +338,38 @@ void dp_clr_mlo_ptnr_list(struct dp_soc *soc, struct dp_vdev *vdev)
|
||||
}
|
||||
}
|
||||
|
||||
static void dp_mlo_setup_complete(struct cdp_mlo_ctxt *cdp_ml_ctxt)
|
||||
{
|
||||
struct dp_mlo_ctxt *mlo_ctxt = cdp_mlo_ctx_to_dp(cdp_ml_ctxt);
|
||||
int i;
|
||||
struct dp_soc *soc;
|
||||
struct dp_soc_be *be_soc;
|
||||
QDF_STATUS qdf_status;
|
||||
|
||||
if (!cdp_ml_ctxt)
|
||||
return;
|
||||
|
||||
for (i = 0; i < WLAN_MAX_MLO_CHIPS; i++) {
|
||||
soc = dp_mlo_get_soc_ref_by_chip_id(mlo_ctxt, i);
|
||||
|
||||
if (!soc)
|
||||
continue;
|
||||
be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||
|
||||
qdf_status = dp_partner_soc_rx_hw_cc_init(mlo_ctxt, be_soc);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||
dp_alert("MLO partner SOC Rx desc CC init failed");
|
||||
qdf_assert_always(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static struct cdp_mlo_ops dp_mlo_ops = {
|
||||
.mlo_soc_setup = dp_mlo_soc_setup,
|
||||
.mlo_soc_teardown = dp_mlo_soc_teardown,
|
||||
.update_mlo_ptnr_list = dp_update_mlo_ptnr_list,
|
||||
.mlo_setup_complete = dp_mlo_setup_complete,
|
||||
};
|
||||
|
||||
void dp_soc_mlo_fill_params(struct dp_soc *soc,
|
||||
|
@@ -73,6 +73,9 @@ void mlo_setup_update_soc_ready(struct wlan_objmgr_psoc *psoc)
|
||||
cdp_soc_mlo_soc_setup(wlan_psoc_get_dp_handle(tmp_soc),
|
||||
mlo_ctx->dp_handle);
|
||||
}
|
||||
|
||||
cdp_mlo_setup_complete(wlan_psoc_get_dp_handle(psoc),
|
||||
mlo_ctx->dp_handle);
|
||||
}
|
||||
|
||||
qdf_export_symbol(mlo_setup_update_soc_ready);
|
||||
|
Reference in New Issue
Block a user