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

This commit is contained in:
Linux Build Service Account
2020-09-02 16:36:33 -07:00
committed by Gerrit - the friendly Code Review server

View File

@@ -1187,11 +1187,17 @@ void dp_peer_unlink_ast_entry(struct dp_soc *soc,
struct dp_ast_entry *ast_entry,
struct dp_peer *peer)
{
if (!peer)
if (!peer) {
dp_err_rl("NULL peer");
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;
}
/*
* NOTE: Ensure that call to this API is done
* 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;
if (!ast_entry)
if (!ast_entry) {
dp_err_rl("NULL AST entry");
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;
}
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,
uint32_t free_wds_count)
{
struct dp_ast_entry *ast_entry, *temp_ast_entry;
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);
}
#endif