|
@@ -823,7 +823,8 @@ static int parse_mlo_glb_h_shmem_arena(
|
|
|
|
|
|
QDF_STATUS mlo_glb_h_shmem_arena_ctx_init(void *arena_vaddr,
|
|
QDF_STATUS mlo_glb_h_shmem_arena_ctx_init(void *arena_vaddr,
|
|
size_t arena_len,
|
|
size_t arena_len,
|
|
- uint8_t grp_id)
|
|
|
|
|
|
+ uint8_t grp_id,
|
|
|
|
+ uint8_t recovery)
|
|
{
|
|
{
|
|
struct wlan_host_mlo_glb_h_shmem_arena_ctx *shmem_arena_ctx;
|
|
struct wlan_host_mlo_glb_h_shmem_arena_ctx *shmem_arena_ctx;
|
|
|
|
|
|
@@ -837,7 +838,8 @@ QDF_STATUS mlo_glb_h_shmem_arena_ctx_init(void *arena_vaddr,
|
|
}
|
|
}
|
|
|
|
|
|
/* We need to initialize only for the first invocation */
|
|
/* We need to initialize only for the first invocation */
|
|
- if (qdf_atomic_read(&shmem_arena_ctx->init_count))
|
|
|
|
|
|
+ if ((recovery != MLO_RECOVERY_MODE_1) &&
|
|
|
|
+ qdf_atomic_read(&shmem_arena_ctx->init_count))
|
|
goto success;
|
|
goto success;
|
|
|
|
|
|
if (parse_mlo_glb_h_shmem_arena(arena_vaddr, arena_len,
|
|
if (parse_mlo_glb_h_shmem_arena(arena_vaddr, arena_len,
|
|
@@ -856,7 +858,7 @@ success:
|
|
|
|
|
|
qdf_export_symbol(mlo_glb_h_shmem_arena_ctx_init);
|
|
qdf_export_symbol(mlo_glb_h_shmem_arena_ctx_init);
|
|
|
|
|
|
-QDF_STATUS mlo_glb_h_shmem_arena_ctx_deinit(uint8_t grp_id)
|
|
|
|
|
|
+QDF_STATUS mlo_glb_h_shmem_arena_ctx_deinit(uint8_t grp_id, uint8_t recovery)
|
|
{
|
|
{
|
|
struct wlan_host_mlo_glb_h_shmem_arena_ctx *shmem_arena_ctx;
|
|
struct wlan_host_mlo_glb_h_shmem_arena_ctx *shmem_arena_ctx;
|
|
|
|
|
|
@@ -874,8 +876,9 @@ QDF_STATUS mlo_glb_h_shmem_arena_ctx_deinit(uint8_t grp_id)
|
|
return QDF_STATUS_E_FAILURE;
|
|
return QDF_STATUS_E_FAILURE;
|
|
}
|
|
}
|
|
|
|
|
|
- /* We need to de-initialize only for the last invocation */
|
|
|
|
- if (qdf_atomic_dec_and_test(&shmem_arena_ctx->init_count))
|
|
|
|
|
|
+ /* We need to de-initialize only for the last invocation */
|
|
|
|
+ if ((recovery != MLO_RECOVERY_MODE_1) &&
|
|
|
|
+ qdf_atomic_dec_and_test(&shmem_arena_ctx->init_count))
|
|
goto success;
|
|
goto success;
|
|
|
|
|
|
free_mlo_glb_rx_reo_per_link_info(
|
|
free_mlo_glb_rx_reo_per_link_info(
|