Merge "qcacmn: Don't take peer ref by id on AST cleanup in unmap handling"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
fe88e92fa2
@@ -1187,11 +1187,17 @@ void dp_peer_unlink_ast_entry(struct dp_soc *soc,
|
|||||||
struct dp_ast_entry *ast_entry,
|
struct dp_ast_entry *ast_entry,
|
||||||
struct dp_peer *peer)
|
struct dp_peer *peer)
|
||||||
{
|
{
|
||||||
if (!peer)
|
if (!peer) {
|
||||||
|
dp_err_rl("NULL peer");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ast_entry->peer_id == HTT_INVALID_PEER)
|
if (ast_entry->peer_id == HTT_INVALID_PEER) {
|
||||||
|
dp_err_rl("Invalid peer id in AST entry mac addr:"QDF_MAC_ADDR_FMT" type:%d",
|
||||||
|
QDF_MAC_ADDR_REF(ast_entry->mac_addr.raw),
|
||||||
|
ast_entry->type);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* NOTE: Ensure that call to this API is done
|
* NOTE: Ensure that call to this API is done
|
||||||
* after soc->ast_lock is taken
|
* after soc->ast_lock is taken
|
||||||
@@ -1228,11 +1234,17 @@ void dp_peer_del_ast(struct dp_soc *soc, struct dp_ast_entry *ast_entry)
|
|||||||
{
|
{
|
||||||
struct dp_peer *peer = NULL;
|
struct dp_peer *peer = NULL;
|
||||||
|
|
||||||
if (!ast_entry)
|
if (!ast_entry) {
|
||||||
|
dp_err_rl("NULL AST entry");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ast_entry->delete_in_progress)
|
if (ast_entry->delete_in_progress) {
|
||||||
|
dp_err_rl("AST entry deletion in progress mac addr:"QDF_MAC_ADDR_FMT" type:%d",
|
||||||
|
QDF_MAC_ADDR_REF(ast_entry->mac_addr.raw),
|
||||||
|
ast_entry->type);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ast_entry->delete_in_progress = true;
|
ast_entry->delete_in_progress = true;
|
||||||
|
|
||||||
@@ -1591,8 +1603,20 @@ static void
|
|||||||
dp_peer_clean_wds_entries(struct dp_soc *soc, struct dp_peer *peer,
|
dp_peer_clean_wds_entries(struct dp_soc *soc, struct dp_peer *peer,
|
||||||
uint32_t free_wds_count)
|
uint32_t free_wds_count)
|
||||||
{
|
{
|
||||||
|
struct dp_ast_entry *ast_entry, *temp_ast_entry;
|
||||||
|
|
||||||
qdf_spin_lock_bh(&soc->ast_lock);
|
qdf_spin_lock_bh(&soc->ast_lock);
|
||||||
dp_peer_delete_ast_entries(soc, peer);
|
|
||||||
|
DP_PEER_ITERATE_ASE_LIST(peer, ast_entry, temp_ast_entry) {
|
||||||
|
dp_peer_unlink_ast_entry(soc, ast_entry, peer);
|
||||||
|
|
||||||
|
if (ast_entry->is_mapped)
|
||||||
|
soc->ast_table[ast_entry->ast_idx] = NULL;
|
||||||
|
|
||||||
|
dp_peer_free_ast_entry(soc, ast_entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
peer->self_ast_entry = NULL;
|
||||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
qdf_spin_unlock_bh(&soc->ast_lock);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user