qcacmn: Add support for multi group in global memory region

Add support for multi group in global shared memory region.

Change-Id: Ib8920f9180b3ba50f3f8faf0d9b020abfd0bc150
CRs-Fixed: 3343170
This commit is contained in:
Surya Prakash Raajen
2022-12-31 07:23:10 +05:30
committed by Madan Koyyalamudi
parent 0fdd53b791
commit 93d7b3fc1a
6 changed files with 125 additions and 44 deletions

View File

@@ -167,6 +167,7 @@ target_if_mgmt_rx_reo_get_num_active_hw_links(struct wlan_objmgr_psoc *psoc,
int8_t *num_active_hw_links)
{
struct wlan_lmac_if_mgmt_rx_reo_low_level_ops *low_level_ops;
uint8_t grp_id;
if (!psoc) {
mgmt_rx_reo_err("psoc is null");
@@ -178,6 +179,11 @@ target_if_mgmt_rx_reo_get_num_active_hw_links(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_NULL_VALUE;
}
if (!mlo_psoc_get_grp_id(psoc, &grp_id)) {
mgmt_rx_reo_err("Failed to get valid MLO Group id");
return QDF_STATUS_E_INVAL;
}
low_level_ops = target_if_get_mgmt_rx_reo_low_level_ops(psoc);
if (!low_level_ops) {
@@ -187,7 +193,7 @@ target_if_mgmt_rx_reo_get_num_active_hw_links(struct wlan_objmgr_psoc *psoc,
qdf_assert_always(low_level_ops->implemented);
*num_active_hw_links = low_level_ops->get_num_links();
*num_active_hw_links = low_level_ops->get_num_links(grp_id);
return QDF_STATUS_SUCCESS;
}
@@ -207,6 +213,7 @@ target_if_mgmt_rx_reo_get_valid_hw_link_bitmap(struct wlan_objmgr_psoc *psoc,
uint16_t *valid_hw_link_bitmap)
{
struct wlan_lmac_if_mgmt_rx_reo_low_level_ops *low_level_ops;
uint8_t grp_id;
if (!psoc) {
mgmt_rx_reo_err("psoc is null");
@@ -218,6 +225,11 @@ target_if_mgmt_rx_reo_get_valid_hw_link_bitmap(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_NULL_VALUE;
}
if (!mlo_psoc_get_grp_id(psoc, &grp_id)) {
mgmt_rx_reo_err("Failed to get valid MLO Group id");
return QDF_STATUS_E_INVAL;
}
low_level_ops = target_if_get_mgmt_rx_reo_low_level_ops(psoc);
if (!low_level_ops) {
@@ -227,7 +239,7 @@ target_if_mgmt_rx_reo_get_valid_hw_link_bitmap(struct wlan_objmgr_psoc *psoc,
qdf_assert_always(low_level_ops->implemented);
*valid_hw_link_bitmap = low_level_ops->get_valid_link_bitmap();
*valid_hw_link_bitmap = low_level_ops->get_valid_link_bitmap(grp_id);
return QDF_STATUS_SUCCESS;
}
@@ -471,12 +483,20 @@ target_if_mgmt_rx_reo_get_snapshot_info
struct wlan_lmac_if_mgmt_rx_reo_low_level_ops *low_level_ops;
int8_t link_id;
int8_t snapshot_version;
uint8_t grp_id;
struct wlan_objmgr_psoc *psoc;
if (!pdev) {
mgmt_rx_reo_err("pdev is null");
return QDF_STATUS_E_NULL_VALUE;
}
psoc = wlan_pdev_get_psoc(pdev);
if (!psoc) {
mgmt_rx_reo_err("psoc is null");
return QDF_STATUS_E_NULL_VALUE;
}
if (id >= MGMT_RX_REO_SHARED_SNAPSHOT_MAX) {
mgmt_rx_reo_err("Mgmt RX REO snapshot id invalid %d", id);
return QDF_STATUS_E_INVAL;
@@ -487,8 +507,12 @@ target_if_mgmt_rx_reo_get_snapshot_info
return QDF_STATUS_E_NULL_VALUE;
}
low_level_ops = target_if_get_mgmt_rx_reo_low_level_ops(
wlan_pdev_get_psoc(pdev));
if (!mlo_psoc_get_grp_id(psoc, &grp_id)) {
mgmt_rx_reo_err("Failed to get valid MLO Group id");
return QDF_STATUS_E_INVAL;
}
low_level_ops = target_if_get_mgmt_rx_reo_low_level_ops(psoc);
if (!low_level_ops) {
mgmt_rx_reo_err("Low level ops of MGMT Rx REO is null");
@@ -501,12 +525,13 @@ target_if_mgmt_rx_reo_get_snapshot_info
qdf_assert_always(link_id >= 0);
snapshot_info->address =
low_level_ops->get_snapshot_address(link_id, id);
low_level_ops->get_snapshot_address(grp_id,
link_id, id);
snapshot_version = low_level_ops->get_snapshot_version(id);
snapshot_version = low_level_ops->get_snapshot_version(grp_id, id);
if (snapshot_version < 0) {
mgmt_rx_reo_err("Invalid snapshot version %d",
snapshot_version);
mgmt_rx_reo_err("Invalid snapshot version %d MLO Group id %d",
snapshot_version, grp_id);
return QDF_STATUS_E_INVAL;
}