diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index a21bdfd2adfb..00ea18de93ac 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -317,12 +317,10 @@ static int dp_peer_update_ast_wifi3(struct cdp_soc_t *soc_hdl, { int status; struct dp_soc *soc = (struct dp_soc *)soc_hdl; - qdf_spin_lock_bh(&soc->ast_lock); status = dp_peer_update_ast(soc, (struct dp_peer *)peer_hdl, (struct dp_ast_entry *)ast_entry_hdl, flags); - qdf_spin_unlock_bh(&soc->ast_lock); return status; } diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index ff1fdc85a14a..40baa0761341 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -547,6 +547,8 @@ int dp_peer_update_ast(struct dp_soc *soc, struct dp_peer *peer, int ret = -1; struct dp_peer *old_peer; + qdf_spin_lock_bh(&soc->ast_lock); + old_peer = ast_entry->peer; TAILQ_REMOVE(&old_peer->ast_entry_list, ast_entry, ase_list_elem); @@ -563,10 +565,14 @@ int dp_peer_update_ast(struct dp_soc *soc, struct dp_peer *peer, peer->vdev->osif_vdev, ast_entry->mac_addr.raw, peer->mac_addr.raw, - flags)) + flags)) { + qdf_spin_unlock_bh(&soc->ast_lock); return 0; + } } + qdf_spin_unlock_bh(&soc->ast_lock); + return ret; }