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:

committed by
Madan Koyyalamudi

parent
b118e31770
commit
e7422a7db6
@@ -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 = {
|
||||||
|
@@ -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)
|
||||||
|
@@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user