qcacmn: lock on queue
Adding lock for dp_txrx_ppdu_stats_handler given that insertion and deletion happen in different cores. Change-Id: Ic0102d615f02cbfed70acc1114a314426466638e
This commit is contained in:
@@ -4184,6 +4184,7 @@ static bool dp_txrx_ppdu_stats_handler(struct dp_soc *soc,
|
|||||||
!pdev->mcopy_mode && !pdev->bpr_enable)
|
!pdev->mcopy_mode && !pdev->bpr_enable)
|
||||||
return free_buf;
|
return free_buf;
|
||||||
|
|
||||||
|
qdf_spin_lock_bh(&pdev->ppdu_stats_lock);
|
||||||
ppdu_info = dp_htt_process_tlv(pdev, htt_t2h_msg);
|
ppdu_info = dp_htt_process_tlv(pdev, htt_t2h_msg);
|
||||||
|
|
||||||
if (pdev->mgmtctrl_frm_info.mgmt_buf) {
|
if (pdev->mgmtctrl_frm_info.mgmt_buf) {
|
||||||
@@ -4200,6 +4201,8 @@ static bool dp_txrx_ppdu_stats_handler(struct dp_soc *soc,
|
|||||||
pdev->mgmtctrl_frm_info.mgmt_buf_len = 0;
|
pdev->mgmtctrl_frm_info.mgmt_buf_len = 0;
|
||||||
pdev->mgmtctrl_frm_info.ppdu_id = 0;
|
pdev->mgmtctrl_frm_info.ppdu_id = 0;
|
||||||
|
|
||||||
|
qdf_spin_unlock_bh(&pdev->ppdu_stats_lock);
|
||||||
|
|
||||||
return free_buf;
|
return free_buf;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -4363,8 +4366,10 @@ dp_ppdu_stats_ind_handler(struct htt_soc *soc,
|
|||||||
dp_wdi_event_handler(WDI_EVENT_LITE_T2H, soc->dp_soc,
|
dp_wdi_event_handler(WDI_EVENT_LITE_T2H, soc->dp_soc,
|
||||||
htt_t2h_msg, HTT_INVALID_PEER, WDI_NO_VAL,
|
htt_t2h_msg, HTT_INVALID_PEER, WDI_NO_VAL,
|
||||||
pdev_id);
|
pdev_id);
|
||||||
|
|
||||||
free_buf = dp_txrx_ppdu_stats_handler(soc->dp_soc, pdev_id,
|
free_buf = dp_txrx_ppdu_stats_handler(soc->dp_soc, pdev_id,
|
||||||
htt_t2h_msg);
|
htt_t2h_msg);
|
||||||
|
|
||||||
return free_buf;
|
return free_buf;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@@ -4681,6 +4681,7 @@ static void dp_pdev_deinit(struct cdp_pdev *txrx_pdev, int force)
|
|||||||
|
|
||||||
qdf_spinlock_destroy(&pdev->tx_mutex);
|
qdf_spinlock_destroy(&pdev->tx_mutex);
|
||||||
qdf_spinlock_destroy(&pdev->vdev_list_lock);
|
qdf_spinlock_destroy(&pdev->vdev_list_lock);
|
||||||
|
qdf_spinlock_destroy(&pdev->ppdu_stats_lock);
|
||||||
|
|
||||||
if (pdev->invalid_peer)
|
if (pdev->invalid_peer)
|
||||||
qdf_mem_free(pdev->invalid_peer);
|
qdf_mem_free(pdev->invalid_peer);
|
||||||
@@ -14336,6 +14337,7 @@ static QDF_STATUS dp_pdev_init(struct cdp_soc_t *txrx_soc,
|
|||||||
|
|
||||||
TAILQ_INIT(&pdev->vdev_list);
|
TAILQ_INIT(&pdev->vdev_list);
|
||||||
qdf_spinlock_create(&pdev->vdev_list_lock);
|
qdf_spinlock_create(&pdev->vdev_list_lock);
|
||||||
|
qdf_spinlock_create(&pdev->ppdu_stats_lock);
|
||||||
pdev->vdev_count = 0;
|
pdev->vdev_count = 0;
|
||||||
|
|
||||||
qdf_spinlock_create(&pdev->tx_mutex);
|
qdf_spinlock_create(&pdev->tx_mutex);
|
||||||
@@ -14455,6 +14457,7 @@ fail4:
|
|||||||
qdf_spinlock_destroy(&pdev->neighbour_peer_mutex);
|
qdf_spinlock_destroy(&pdev->neighbour_peer_mutex);
|
||||||
qdf_spinlock_destroy(&pdev->tx_mutex);
|
qdf_spinlock_destroy(&pdev->tx_mutex);
|
||||||
qdf_spinlock_destroy(&pdev->vdev_list_lock);
|
qdf_spinlock_destroy(&pdev->vdev_list_lock);
|
||||||
|
qdf_spinlock_destroy(&pdev->ppdu_stats_lock);
|
||||||
qdf_mem_free(pdev->invalid_peer);
|
qdf_mem_free(pdev->invalid_peer);
|
||||||
fail3:
|
fail3:
|
||||||
dp_pdev_srng_deinit(pdev);
|
dp_pdev_srng_deinit(pdev);
|
||||||
|
@@ -2253,6 +2253,10 @@ struct dp_pdev {
|
|||||||
#ifdef ATH_SUPPORT_NAC_RSSI
|
#ifdef ATH_SUPPORT_NAC_RSSI
|
||||||
bool nac_rssi_filtering;
|
bool nac_rssi_filtering;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ppdu_stats lock for queue concurrency between cores*/
|
||||||
|
qdf_spinlock_t ppdu_stats_lock;
|
||||||
|
|
||||||
/* list of ppdu tlvs */
|
/* list of ppdu tlvs */
|
||||||
TAILQ_HEAD(, ppdu_info) ppdu_info_list;
|
TAILQ_HEAD(, ppdu_info) ppdu_info_list;
|
||||||
TAILQ_HEAD(, ppdu_info) sched_comp_ppdu_list;
|
TAILQ_HEAD(, ppdu_info) sched_comp_ppdu_list;
|
||||||
|
Reference in New Issue
Block a user