|
@@ -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;
|