qcacmn: Initialize ppdu info flex mem pool during pdev attach

To avoid memory fragmentation during wifi down/up,
initialize ppdu info flex mem pool during pdev attach
instead of pdev init.

CRs-Fixed: 3235962
Change-Id: I7970ab056e600ccfe28ae1ccdc50a66d5ae0ade8
This commit is contained in:
Amir Patel
2022-07-06 19:05:07 +05:30
committed by Madan Koyyalamudi
parent b118e31770
commit e7422a7db6
3 changed files with 41 additions and 2 deletions

View File

@@ -44,6 +44,38 @@
#if !defined(DISABLE_MON_CONFIG) #if !defined(DISABLE_MON_CONFIG)
/**
* dp_mon_ppdu_info_pool_init_2_0 () - PPDU info pool init
*
* @pdev: DP pdev handle
*
* Return: QDF_STATUS
*/
QDF_STATUS dp_mon_ppdu_info_pool_init_2_0(struct dp_pdev *pdev)
{
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
dp_rx_mon_ppdu_info_pool_init(mon_pdev);
return QDF_STATUS_SUCCESS;
}
/**
* dp_mon_ppdu_info_pool_deinit_2_0 () - PPDU info pool deinit
*
* @pdev: DP pdev handle
*
* Return: void
*/
void dp_mon_ppdu_info_pool_deinit_2_0(struct dp_pdev *pdev)
{
struct dp_mon_pdev *mon_pdev = pdev->monitor_pdev;
struct dp_mon_pdev_be *mon_pdev_be =
dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
dp_rx_mon_ppdu_info_pool_deinit(mon_pdev_be);
}
/** /**
* dp_mon_pdev_ext_init_2_0() - Init pdev ext param * dp_mon_pdev_ext_init_2_0() - Init pdev ext param
* *
@@ -70,7 +102,6 @@ QDF_STATUS dp_mon_pdev_ext_init_2_0(struct dp_pdev *pdev)
TAILQ_INIT(&mon_pdev_be->rx_mon_queue); TAILQ_INIT(&mon_pdev_be->rx_mon_queue);
qdf_spinlock_create(&mon_pdev_be->rx_mon_wq_lock); qdf_spinlock_create(&mon_pdev_be->rx_mon_wq_lock);
dp_rx_mon_ppdu_info_pool_init(mon_pdev);
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
@@ -100,7 +131,6 @@ QDF_STATUS dp_mon_pdev_ext_deinit_2_0(struct dp_pdev *pdev)
qdf_disable_work(&mon_pdev_be->rx_mon_work); qdf_disable_work(&mon_pdev_be->rx_mon_work);
mon_pdev_be->rx_mon_workqueue = NULL; mon_pdev_be->rx_mon_workqueue = NULL;
dp_rx_mon_drain_wq(pdev); dp_rx_mon_drain_wq(pdev);
dp_rx_mon_ppdu_info_pool_deinit(mon_pdev_be);
qdf_spinlock_destroy(&mon_pdev_be->rx_mon_wq_lock); qdf_spinlock_destroy(&mon_pdev_be->rx_mon_wq_lock);
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
@@ -1624,6 +1654,8 @@ struct dp_mon_ops monitor_ops_2_0 = {
.mon_lite_mon_dealloc = dp_lite_mon_dealloc, .mon_lite_mon_dealloc = dp_lite_mon_dealloc,
.mon_lite_mon_vdev_delete = dp_lite_mon_vdev_delete, .mon_lite_mon_vdev_delete = dp_lite_mon_vdev_delete,
.mon_lite_mon_disable_rx = dp_lite_mon_disable_rx, .mon_lite_mon_disable_rx = dp_lite_mon_disable_rx,
.rx_mon_ppdu_info_pool_init = dp_mon_ppdu_info_pool_init_2_0,
.rx_mon_ppdu_info_pool_deinit = dp_mon_ppdu_info_pool_deinit_2_0,
}; };
struct cdp_mon_ops dp_ops_mon_2_0 = { struct cdp_mon_ops dp_ops_mon_2_0 = {

View File

@@ -4941,6 +4941,9 @@ QDF_STATUS dp_mon_pdev_attach(struct dp_pdev *pdev)
} }
} }
if (mon_ops->rx_mon_ppdu_info_pool_init)
mon_ops->rx_mon_ppdu_info_pool_init(pdev);
pdev->monitor_pdev = mon_pdev; pdev->monitor_pdev = mon_pdev;
dp_mon_pdev_per_target_config(pdev); dp_mon_pdev_per_target_config(pdev);
@@ -4980,6 +4983,8 @@ QDF_STATUS dp_mon_pdev_detach(struct dp_pdev *pdev)
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
if (mon_ops->rx_mon_ppdu_info_pool_deinit)
mon_ops->rx_mon_ppdu_info_pool_deinit(pdev);
if (mon_ops->rx_mon_desc_pool_free) if (mon_ops->rx_mon_desc_pool_free)
mon_ops->rx_mon_desc_pool_free(pdev); mon_ops->rx_mon_desc_pool_free(pdev);
if (mon_ops->mon_rings_free) if (mon_ops->mon_rings_free)

View File

@@ -786,6 +786,8 @@ struct dp_mon_ops {
/* Print advanced monitor stats */ /* Print advanced monitor stats */
void (*mon_rx_print_advanced_stats) void (*mon_rx_print_advanced_stats)
(struct dp_soc *soc, struct dp_pdev *pdev); (struct dp_soc *soc, struct dp_pdev *pdev);
QDF_STATUS (*rx_mon_ppdu_info_pool_init)(struct dp_pdev *pdev);
void (*rx_mon_ppdu_info_pool_deinit)(struct dp_pdev *pdev);
}; };
/** /**