diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index 5cd6baf002..e873a3f3bc 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -545,8 +545,18 @@ int dp_peer_update_ast(struct dp_soc *soc, struct dp_peer *peer, struct dp_ast_entry *ast_entry, uint32_t flags) { int ret = -1; + struct dp_peer *old_peer; + + old_peer = ast_entry->peer; + TAILQ_REMOVE(&old_peer->ast_entry_list, ast_entry, ase_list_elem); ast_entry->peer = peer; + ast_entry->type = CDP_TXRX_AST_TYPE_WDS; + ast_entry->pdev_id = peer->vdev->pdev->pdev_id; + ast_entry->vdev_id = peer->vdev->vdev_id; + ast_entry->is_active = TRUE; + TAILQ_INSERT_TAIL(&peer->ast_entry_list, ast_entry, ase_list_elem); + if (ast_entry->type != CDP_TXRX_AST_TYPE_STATIC) { if (QDF_STATUS_SUCCESS == soc->cdp_soc.ol_ops->peer_update_wds_entry(