qcacmn: Fix a race condition in WDS timer attach

WDS aging timer is dependent on a flag which is set in soc_cmn_setup,
but in current implementation wds_timer_attach is done from soc attach
and soc_cmn_setup is involed from pdev_attach. Fix this race condition
by moving wds_attach to soc_cmn_setup

Change-Id: Ia88201c627b434b85e56daadd0c7ab20e6ce0b3f
CRs-Fixed: 2373127
This commit is contained in:
Pamidipati, Vijay
2019-01-22 22:06:36 +05:30
کامیت شده توسط nshrivas
والد 2c6f4d1906
کامیت b113bbc335
2فایلهای تغییر یافته به همراه4 افزوده شده و 2 حذف شده

مشاهده پرونده

@@ -2816,6 +2816,8 @@ out:
hal_reo_setup(soc->hal_soc, &reo_params);
qdf_atomic_set(&soc->cmn_init_done, 1);
dp_soc_wds_attach(soc);
qdf_nbuf_queue_init(&soc->htt_stats.msg);
return 0;
fail1:
@@ -9641,7 +9643,6 @@ void *dp_soc_init(void *dpsoc, HTC_HANDLE htc_handle, void *hif_handle)
qdf_spinlock_create(&soc->peer_ref_mutex);
qdf_spinlock_create(&soc->ast_lock);
dp_soc_wds_attach(soc);
qdf_spinlock_create(&soc->reo_desc_freelist_lock);
qdf_list_create(&soc->reo_desc_freelist, REO_DESC_FREELIST_SIZE);

مشاهده پرونده

@@ -592,7 +592,8 @@ int dp_peer_add_ast(struct dp_soc *soc,
ast_entry = dp_peer_ast_hash_find_soc(soc, mac_addr);
if (ast_entry) {
if (ast_entry->type == CDP_TXRX_AST_TYPE_MEC)
if ((type == CDP_TXRX_AST_TYPE_MEC) &&
(ast_entry->type == CDP_TXRX_AST_TYPE_MEC))
ast_entry->is_active = TRUE;
if ((ast_entry->type == CDP_TXRX_AST_TYPE_WDS_HM) &&