qcacmn: Add a missing lock for del_ast
Add a missing lock for protecting AST table while deleting an AST entry in STA roaming case Change-Id: I38b08c71e4080867780ba81063ac9d7a73962e04
This commit is contained in:

committed by
nshrivas

parent
a76abc45d7
commit
3eab5b1b92
@@ -3890,9 +3890,11 @@ static void *dp_peer_create_wifi3(struct cdp_vdev *vdev_handle,
|
|||||||
* If an AST entry exists, but no peer entry exists with a given
|
* If an AST entry exists, but no peer entry exists with a given
|
||||||
* MAC addresses, we could deduce it as a WDS entry
|
* MAC addresses, we could deduce it as a WDS entry
|
||||||
*/
|
*/
|
||||||
|
qdf_spin_lock_bh(&soc->ast_lock);
|
||||||
ast_entry = dp_peer_ast_hash_find(soc, peer_mac_addr);
|
ast_entry = dp_peer_ast_hash_find(soc, peer_mac_addr);
|
||||||
if (ast_entry)
|
if (ast_entry)
|
||||||
dp_peer_del_ast(soc, ast_entry);
|
dp_peer_del_ast(soc, ast_entry);
|
||||||
|
qdf_spin_unlock_bh(&soc->ast_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef notyet
|
#ifdef notyet
|
||||||
|
@@ -548,6 +548,10 @@ void dp_peer_del_ast(struct dp_soc *soc, struct dp_ast_entry *ast_entry)
|
|||||||
|
|
||||||
soc->ast_table[ast_entry->ast_idx] = NULL;
|
soc->ast_table[ast_entry->ast_idx] = NULL;
|
||||||
TAILQ_REMOVE(&peer->ast_entry_list, ast_entry, ase_list_elem);
|
TAILQ_REMOVE(&peer->ast_entry_list, ast_entry, ase_list_elem);
|
||||||
|
|
||||||
|
if (ast_entry == peer->self_ast_entry)
|
||||||
|
peer->self_ast_entry = NULL;
|
||||||
|
|
||||||
DP_STATS_INC(soc, ast.deleted, 1);
|
DP_STATS_INC(soc, ast.deleted, 1);
|
||||||
dp_peer_ast_hash_remove(soc, ast_entry);
|
dp_peer_ast_hash_remove(soc, ast_entry);
|
||||||
qdf_mem_free(ast_entry);
|
qdf_mem_free(ast_entry);
|
||||||
|
Reference in New Issue
Block a user