qcacmn: avoid updating peer stats under SOC AST lock

In teardown API update logical delete state to peer
before deleting AST entries of peer. Also in delete
AST API use __dp_peer_get_ref_by_id to get the peer

Change-Id: I6db227a284cf3726cc241ebc98386230eca58fcf
这个提交包含在:
Chaithanya Garrepalli
2020-10-01 16:36:20 +05:30
提交者 snandini
父节点 5e487cc20a
当前提交 650f0ffd7d
修改 3 个文件,包含 16 行新增9 行删除

查看文件

@@ -1248,8 +1248,12 @@ void dp_peer_del_ast(struct dp_soc *soc, struct dp_ast_entry *ast_entry)
ast_entry->delete_in_progress = true;
peer = dp_peer_get_ref_by_id(soc, ast_entry->peer_id,
DP_MOD_ID_AST);
/* In teardown del ast is called after setting logical delete state
* use __dp_peer_get_ref_by_id to get the reference irrespective of
* state
*/
peer = __dp_peer_get_ref_by_id(soc, ast_entry->peer_id,
DP_MOD_ID_AST);
dp_peer_ast_send_wds_del(soc, ast_entry, peer);
@@ -1503,13 +1507,16 @@ void dp_peer_ast_send_wds_del(struct dp_soc *soc,
ast_entry->next_hop, ast_entry->peer_id);
/*
* If peer is NULL, the peer is about to get
* If peer state is logical delete, the peer is about to get
* teared down with a peer delete command to firmware,
* which will cleanup all the wds ast entries.
* So, no need to send explicit wds ast delete to firmware.
*/
if (ast_entry->next_hop) {
if (peer)
if (peer && dp_peer_state_cmp(peer,
DP_PEER_STATE_LOGICAL_DELETE))
delete_in_fw = false;
else
delete_in_fw = true;
cdp_soc->ol_ops->peer_del_wds_entry(soc->ctrl_psoc,