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:
Ruben Columbus
2021-03-09 18:14:34 -08:00
committed by snandini
parent 45e98f35da
commit 2216aa520b
3 changed files with 12 additions and 0 deletions

View File

@@ -4184,6 +4184,7 @@ static bool dp_txrx_ppdu_stats_handler(struct dp_soc *soc,
!pdev->mcopy_mode && !pdev->bpr_enable)
return free_buf;
qdf_spin_lock_bh(&pdev->ppdu_stats_lock);
ppdu_info = dp_htt_process_tlv(pdev, htt_t2h_msg);
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.ppdu_id = 0;
qdf_spin_unlock_bh(&pdev->ppdu_stats_lock);
return free_buf;
}
#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,
htt_t2h_msg, HTT_INVALID_PEER, WDI_NO_VAL,
pdev_id);
free_buf = dp_txrx_ppdu_stats_handler(soc->dp_soc, pdev_id,
htt_t2h_msg);
return free_buf;
}
#else

View File

@@ -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->vdev_list_lock);
qdf_spinlock_destroy(&pdev->ppdu_stats_lock);
if (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);
qdf_spinlock_create(&pdev->vdev_list_lock);
qdf_spinlock_create(&pdev->ppdu_stats_lock);
pdev->vdev_count = 0;
qdf_spinlock_create(&pdev->tx_mutex);
@@ -14455,6 +14457,7 @@ fail4:
qdf_spinlock_destroy(&pdev->neighbour_peer_mutex);
qdf_spinlock_destroy(&pdev->tx_mutex);
qdf_spinlock_destroy(&pdev->vdev_list_lock);
qdf_spinlock_destroy(&pdev->ppdu_stats_lock);
qdf_mem_free(pdev->invalid_peer);
fail3:
dp_pdev_srng_deinit(pdev);

View File

@@ -2253,6 +2253,10 @@ struct dp_pdev {
#ifdef ATH_SUPPORT_NAC_RSSI
bool nac_rssi_filtering;
#endif
/* ppdu_stats lock for queue concurrency between cores*/
qdf_spinlock_t ppdu_stats_lock;
/* list of ppdu tlvs */
TAILQ_HEAD(, ppdu_info) ppdu_info_list;
TAILQ_HEAD(, ppdu_info) sched_comp_ppdu_list;