diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 7668954913..7e741c8af9 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -5450,30 +5450,6 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc, return QDF_STATUS_SUCCESS; } -#ifdef FEATURE_AST -/* - * dp_peer_delete_ast_entries(): Delete all AST entries for a peer - * @soc - datapath soc handle - * @peer - datapath peer handle - * - * Delete the AST entries belonging to a peer - */ -static inline void dp_peer_delete_ast_entries(struct dp_soc *soc, - struct dp_peer *peer) -{ - struct dp_ast_entry *ast_entry, *temp_ast_entry; - - DP_PEER_ITERATE_ASE_LIST(peer, ast_entry, temp_ast_entry) - dp_peer_del_ast(soc, ast_entry); - - peer->self_ast_entry = NULL; -} -#else -static inline void dp_peer_delete_ast_entries(struct dp_soc *soc, - struct dp_peer *peer) -{ -} -#endif #if ATH_SUPPORT_WRAP static inline struct dp_peer *dp_peer_can_reuse(struct dp_vdev *vdev, uint8_t *peer_mac_addr) diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index 763734b7ff..221cdac708 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -1591,6 +1591,9 @@ static void dp_peer_clean_wds_entries(struct dp_soc *soc, struct dp_peer *peer, uint32_t free_wds_count) { + qdf_spin_lock_bh(&soc->ast_lock); + dp_peer_delete_ast_entries(soc, peer); + qdf_spin_unlock_bh(&soc->ast_lock); } #endif diff --git a/dp/wifi3.0/dp_peer.h b/dp/wifi3.0/dp_peer.h index 229444b60a..69dde5d1a2 100644 --- a/dp/wifi3.0/dp_peer.h +++ b/dp/wifi3.0/dp_peer.h @@ -753,4 +753,29 @@ struct dp_peer *dp_vdev_bss_peer_ref_n_get(struct dp_soc *soc, struct dp_peer *dp_sta_vdev_self_peer_ref_n_get(struct dp_soc *soc, struct dp_vdev *vdev, enum dp_mod_id mod_id); + +#ifdef FEATURE_AST +/* + * dp_peer_delete_ast_entries(): Delete all AST entries for a peer + * @soc - datapath soc handle + * @peer - datapath peer handle + * + * Delete the AST entries belonging to a peer + */ +static inline void dp_peer_delete_ast_entries(struct dp_soc *soc, + struct dp_peer *peer) +{ + struct dp_ast_entry *ast_entry, *temp_ast_entry; + + DP_PEER_ITERATE_ASE_LIST(peer, ast_entry, temp_ast_entry) + dp_peer_del_ast(soc, ast_entry); + + peer->self_ast_entry = NULL; +} +#else +static inline void dp_peer_delete_ast_entries(struct dp_soc *soc, + struct dp_peer *peer) +{ +} +#endif #endif /* _DP_PEER_H_ */