qcacmn: Add debug logs in MLD peer create/delete
Add debug logs in the MLD peer create/delete path to help debug any issues with MLD peer leak. Change-Id: I63126d9b86f3179a88809836371fc765d340b6d8 CRs-Fixed: 3379148
This commit is contained in:

committed by
Madan Koyyalamudi

parent
8762881511
commit
d7593bcef6
@@ -1934,6 +1934,7 @@ dp_mlo_peer_find_hash_find_be(struct dp_soc *soc,
|
|||||||
} else {
|
} else {
|
||||||
vdev = NULL;
|
vdev = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* search mld peer table if no link peer for given mac address */
|
/* search mld peer table if no link peer for given mac address */
|
||||||
index = dp_mlo_peer_find_hash_index(mld_hash_obj, mac_addr);
|
index = dp_mlo_peer_find_hash_index(mld_hash_obj, mac_addr);
|
||||||
qdf_spin_lock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
qdf_spin_lock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
||||||
@@ -1995,8 +1996,11 @@ dp_mlo_peer_find_hash_remove_be(struct dp_soc *soc, struct dp_peer *peer)
|
|||||||
TAILQ_REMOVE(&mld_hash_obj->mld_peer_hash.bins[index], peer,
|
TAILQ_REMOVE(&mld_hash_obj->mld_peer_hash.bins[index], peer,
|
||||||
hash_list_elem);
|
hash_list_elem);
|
||||||
|
|
||||||
|
dp_info("Peer %pK (" QDF_MAC_ADDR_FMT ") removed. (found %u)",
|
||||||
|
peer, QDF_MAC_ADDR_REF(peer->mac_addr.raw), found);
|
||||||
dp_peer_unref_delete(peer, DP_MOD_ID_CONFIG);
|
dp_peer_unref_delete(peer, DP_MOD_ID_CONFIG);
|
||||||
qdf_spin_unlock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
qdf_spin_unlock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -2010,6 +2014,14 @@ dp_mlo_peer_find_hash_add_be(struct dp_soc *soc, struct dp_peer *peer)
|
|||||||
if (!mld_hash_obj)
|
if (!mld_hash_obj)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (dp_mlo_peer_find_hash_find_be(soc, (uint8_t *)&peer->mac_addr, 1,
|
||||||
|
DP_MOD_ID_CONFIG, DP_VDEV_ALL)) {
|
||||||
|
dp_info("MLD peer %pK (" QDF_MAC_ADDR_FMT ") already in hash table",
|
||||||
|
peer, QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
||||||
|
dp_peer_unref_delete(peer, DP_MOD_ID_CONFIG);
|
||||||
|
qdf_assert_always(0);
|
||||||
|
}
|
||||||
|
|
||||||
index = dp_mlo_peer_find_hash_index(mld_hash_obj, &peer->mac_addr);
|
index = dp_mlo_peer_find_hash_index(mld_hash_obj, &peer->mac_addr);
|
||||||
|
|
||||||
qdf_spin_lock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
qdf_spin_lock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
||||||
@@ -2024,6 +2036,9 @@ dp_mlo_peer_find_hash_add_be(struct dp_soc *soc, struct dp_peer *peer)
|
|||||||
TAILQ_INSERT_TAIL(&mld_hash_obj->mld_peer_hash.bins[index], peer,
|
TAILQ_INSERT_TAIL(&mld_hash_obj->mld_peer_hash.bins[index], peer,
|
||||||
hash_list_elem);
|
hash_list_elem);
|
||||||
qdf_spin_unlock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
qdf_spin_unlock_bh(&mld_hash_obj->mld_peer_hash_lock);
|
||||||
|
|
||||||
|
dp_info("Peer %pK (" QDF_MAC_ADDR_FMT ") added",
|
||||||
|
peer, QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
||||||
}
|
}
|
||||||
|
|
||||||
void dp_print_mlo_ast_stats_be(struct dp_soc *soc)
|
void dp_print_mlo_ast_stats_be(struct dp_soc *soc)
|
||||||
|
@@ -8266,7 +8266,7 @@ QDF_STATUS dp_peer_mlo_setup(
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
dp_info("link peer: " QDF_MAC_ADDR_FMT "mld peer: " QDF_MAC_ADDR_FMT
|
dp_info("link peer: " QDF_MAC_ADDR_FMT "mld peer: " QDF_MAC_ADDR_FMT
|
||||||
"assoc_link %d, primary_link %d",
|
"first_link %d, primary_link %d",
|
||||||
QDF_MAC_ADDR_REF(peer->mac_addr.raw),
|
QDF_MAC_ADDR_REF(peer->mac_addr.raw),
|
||||||
QDF_MAC_ADDR_REF(setup_info->mld_peer_mac),
|
QDF_MAC_ADDR_REF(setup_info->mld_peer_mac),
|
||||||
setup_info->is_first_link,
|
setup_info->is_first_link,
|
||||||
@@ -8542,9 +8542,11 @@ dp_peer_setup_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
|||||||
&reo_dest, &hash_based,
|
&reo_dest, &hash_based,
|
||||||
&lmac_peer_id_msb);
|
&lmac_peer_id_msb);
|
||||||
|
|
||||||
dp_info("pdev: %d vdev :%d opmode:%u hash-based-steering:%d default-reo_dest:%u",
|
dp_info("pdev: %d vdev :%d opmode:%u peer %pK (" QDF_MAC_ADDR_FMT ") "
|
||||||
|
"hash-based-steering:%d default-reo_dest:%u",
|
||||||
pdev->pdev_id, vdev->vdev_id,
|
pdev->pdev_id, vdev->vdev_id,
|
||||||
vdev->opmode, hash_based, reo_dest);
|
vdev->opmode, peer,
|
||||||
|
QDF_MAC_ADDR_REF(peer->mac_addr.raw), hash_based, reo_dest);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There are corner cases where the AD1 = AD2 = "VAPs address"
|
* There are corner cases where the AD1 = AD2 = "VAPs address"
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -1311,6 +1311,7 @@ void dp_mld_peer_add_link_peer(struct dp_peer *mld_peer,
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct dp_peer_link_info *link_peer_info;
|
struct dp_peer_link_info *link_peer_info;
|
||||||
|
bool action_done = false;
|
||||||
|
|
||||||
qdf_spin_lock_bh(&mld_peer->link_peers_info_lock);
|
qdf_spin_lock_bh(&mld_peer->link_peers_info_lock);
|
||||||
for (i = 0; i < DP_MAX_MLO_LINKS; i++) {
|
for (i = 0; i < DP_MAX_MLO_LINKS; i++) {
|
||||||
@@ -1324,6 +1325,7 @@ void dp_mld_peer_add_link_peer(struct dp_peer *mld_peer,
|
|||||||
link_peer_info->chip_id =
|
link_peer_info->chip_id =
|
||||||
dp_mlo_get_chip_id(link_peer->vdev->pdev->soc);
|
dp_mlo_get_chip_id(link_peer->vdev->pdev->soc);
|
||||||
mld_peer->num_links++;
|
mld_peer->num_links++;
|
||||||
|
action_done = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1332,6 +1334,14 @@ void dp_mld_peer_add_link_peer(struct dp_peer *mld_peer,
|
|||||||
if (i == DP_MAX_MLO_LINKS)
|
if (i == DP_MAX_MLO_LINKS)
|
||||||
dp_err("fail to add link peer" QDF_MAC_ADDR_FMT "to mld peer",
|
dp_err("fail to add link peer" QDF_MAC_ADDR_FMT "to mld peer",
|
||||||
QDF_MAC_ADDR_REF(link_peer->mac_addr.raw));
|
QDF_MAC_ADDR_REF(link_peer->mac_addr.raw));
|
||||||
|
else
|
||||||
|
dp_peer_info("%s addition of link peer %pK (" QDF_MAC_ADDR_FMT ") "
|
||||||
|
"to MLD peer %pK (" QDF_MAC_ADDR_FMT "), "
|
||||||
|
"idx %u num_links %u",
|
||||||
|
action_done ? "Successful" : "Failed",
|
||||||
|
mld_peer, QDF_MAC_ADDR_REF(mld_peer->mac_addr.raw),
|
||||||
|
link_peer, QDF_MAC_ADDR_REF(link_peer->mac_addr.raw),
|
||||||
|
i, mld_peer->num_links);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1348,6 +1358,7 @@ uint8_t dp_mld_peer_del_link_peer(struct dp_peer *mld_peer,
|
|||||||
int i;
|
int i;
|
||||||
struct dp_peer_link_info *link_peer_info;
|
struct dp_peer_link_info *link_peer_info;
|
||||||
uint8_t num_links;
|
uint8_t num_links;
|
||||||
|
bool action_done = false;
|
||||||
|
|
||||||
qdf_spin_lock_bh(&mld_peer->link_peers_info_lock);
|
qdf_spin_lock_bh(&mld_peer->link_peers_info_lock);
|
||||||
for (i = 0; i < DP_MAX_MLO_LINKS; i++) {
|
for (i = 0; i < DP_MAX_MLO_LINKS; i++) {
|
||||||
@@ -1357,6 +1368,7 @@ uint8_t dp_mld_peer_del_link_peer(struct dp_peer *mld_peer,
|
|||||||
&link_peer_info->mac_addr)) {
|
&link_peer_info->mac_addr)) {
|
||||||
link_peer_info->is_valid = false;
|
link_peer_info->is_valid = false;
|
||||||
mld_peer->num_links--;
|
mld_peer->num_links--;
|
||||||
|
action_done = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1366,6 +1378,15 @@ uint8_t dp_mld_peer_del_link_peer(struct dp_peer *mld_peer,
|
|||||||
if (i == DP_MAX_MLO_LINKS)
|
if (i == DP_MAX_MLO_LINKS)
|
||||||
dp_err("fail to del link peer" QDF_MAC_ADDR_FMT "to mld peer",
|
dp_err("fail to del link peer" QDF_MAC_ADDR_FMT "to mld peer",
|
||||||
QDF_MAC_ADDR_REF(link_peer->mac_addr.raw));
|
QDF_MAC_ADDR_REF(link_peer->mac_addr.raw));
|
||||||
|
else
|
||||||
|
dp_peer_info("%s deletion of link peer %pK (" QDF_MAC_ADDR_FMT ") "
|
||||||
|
"from MLD peer %pK (" QDF_MAC_ADDR_FMT "), "
|
||||||
|
"idx %u num_links %u",
|
||||||
|
action_done ? "Successful" : "Failed",
|
||||||
|
mld_peer, QDF_MAC_ADDR_REF(mld_peer->mac_addr.raw),
|
||||||
|
link_peer, QDF_MAC_ADDR_REF(link_peer->mac_addr.raw),
|
||||||
|
i, mld_peer->num_links);
|
||||||
|
|
||||||
|
|
||||||
return num_links;
|
return num_links;
|
||||||
}
|
}
|
||||||
@@ -1589,6 +1610,9 @@ void dp_peer_mlo_delete(struct dp_peer *peer)
|
|||||||
struct dp_peer *ml_peer;
|
struct dp_peer *ml_peer;
|
||||||
struct dp_soc *soc;
|
struct dp_soc *soc;
|
||||||
|
|
||||||
|
dp_info("peer " QDF_MAC_ADDR_FMT " type %d",
|
||||||
|
QDF_MAC_ADDR_REF(peer->mac_addr.raw), peer->peer_type);
|
||||||
|
|
||||||
/* MLO connection link peer */
|
/* MLO connection link peer */
|
||||||
if (IS_MLO_DP_LINK_PEER(peer)) {
|
if (IS_MLO_DP_LINK_PEER(peer)) {
|
||||||
ml_peer = peer->mld_peer;
|
ml_peer = peer->mld_peer;
|
||||||
|
Reference in New Issue
Block a user