From 78b844e995f946ee8c4bc1d2df233d75e33cf968 Mon Sep 17 00:00:00 2001 From: Devender Kumar Date: Mon, 29 Aug 2022 15:29:50 +0530 Subject: [PATCH] qcacmn: Fix for calling cdp api from dp layer cdp api is getting call from dp layer. Fix is to call correct dp api from datapath file. CRs-Fixed: 3279426 Change-Id: I142910276d76c600e5d79289270bbfe156bfab1c --- dp/wifi3.0/dp_ipa.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/dp/wifi3.0/dp_ipa.c b/dp/wifi3.0/dp_ipa.c index 634494ee22..9910d6e831 100644 --- a/dp/wifi3.0/dp_ipa.c +++ b/dp/wifi3.0/dp_ipa.c @@ -3344,23 +3344,32 @@ static qdf_nbuf_t dp_ipa_intrabss_send(struct dp_pdev *pdev, static inline bool dp_ipa_peer_check(struct dp_soc *soc, uint8_t *peer_mac_addr, uint8_t vdev_id) { - struct cdp_ast_entry_info ast_info = {0}; - ol_txrx_soc_handle cdp_soc; + struct dp_ast_entry *ast_entry = NULL; struct dp_peer *peer = NULL; - cdp_soc = dp_soc_to_cdp_soc_t(soc); - cdp_peer_get_ast_info_by_soc(cdp_soc, peer_mac_addr, &ast_info); + qdf_spin_lock_bh(&soc->ast_lock); + ast_entry = dp_peer_ast_hash_find_soc(soc, peer_mac_addr); - peer = dp_peer_get_ref_by_id(soc, ast_info.peer_id, DP_MOD_ID_IPA); + if ((!ast_entry) || + (ast_entry->delete_in_progress && !ast_entry->callback)) { + qdf_spin_unlock_bh(&soc->ast_lock); + return false; + } + + peer = dp_peer_get_ref_by_id(soc, ast_entry->peer_id, + DP_MOD_ID_AST); if (!peer) { + qdf_spin_unlock_bh(&soc->ast_lock); return false; } else { - if ((peer->vdev->vdev_id == vdev_id)) { + if (peer->vdev->vdev_id == vdev_id) { dp_peer_unref_delete(peer, DP_MOD_ID_IPA); + qdf_spin_unlock_bh(&soc->ast_lock); return true; } dp_peer_unref_delete(peer, DP_MOD_ID_IPA); + qdf_spin_unlock_bh(&soc->ast_lock); return false; } }