Browse Source

qcacmn: Add debug prints for MLO peer mgmt

This change adds debug prints in error cases to
print error and relevant info to understand issue.

Change-Id: Ie5670d535015f410e81bd5b06ce58046a02b19f0
CRs-Fixed: 3091155
Srinivas Pitla 3 năm trước cách đây
mục cha
commit
e9f0077a00

+ 19 - 5
umac/mlo_mgr/src/wlan_mlo_mgr_aid.c

@@ -48,11 +48,15 @@ static uint16_t wlan_mlo_peer_alloc_aid(
 	uint16_t start_aid;
 	struct mlo_mgr_context *mlo_mgr_ctx = wlan_objmgr_get_mlo_ctx();
 
-	if (!mlo_mgr_ctx)
+	if (!mlo_mgr_ctx) {
+		mlo_err(" MLO mgr context is NULL, assoc id alloc failed");
 		return assoc_id;
+	}
 
-	if (!is_mlo_peer && link_ix == MLO_INVALID_LINK_IDX)
+	if (!is_mlo_peer && link_ix == MLO_INVALID_LINK_IDX) {
+		mlo_err(" is MLO peer %d, link_ix %d", is_mlo_peer, link_ix);
 		return assoc_id;
+	}
 	/* TODO check locking strategy */
 	ml_aid_lock_acquire(mlo_mgr_ctx);
 
@@ -348,19 +352,29 @@ QDF_STATUS mlo_peer_allocate_aid(
 	struct wlan_mlo_ap *ap_ctx;
 
 	ap_ctx = ml_dev->ap_ctx;
-	if (!ap_ctx)
+	if (!ap_ctx) {
+		mlo_err("MLD ID %d ap_ctx is NULL", ml_dev->mld_id);
 		return QDF_STATUS_E_INVAL;
+	}
 
 	ml_aid_mgr = ap_ctx->ml_aid_mgr;
-	if (!ml_aid_mgr)
+	if (!ml_aid_mgr) {
+		mlo_err("MLD ID %d aid mgr is NULL", ml_dev->mld_id);
 		return QDF_STATUS_E_INVAL;
+	}
 
 	assoc_id = wlan_mlo_peer_alloc_aid(ml_aid_mgr, true, 0xff);
-	if (assoc_id == (uint16_t)-1)
+	if (assoc_id == (uint16_t)-1) {
+		mlo_err("MLD ID %d aid mgr is NULL", ml_dev->mld_id);
 		return QDF_STATUS_E_NOENT;
+	}
 
 	ml_peer->assoc_id = assoc_id;
 
+	mlo_debug("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " ML assoc id %d",
+		  ml_dev->mld_id,
+		  QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes), assoc_id);
+
 	return QDF_STATUS_SUCCESS;
 }
 

+ 4 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_ap.c

@@ -278,6 +278,8 @@ uint16_t mlo_ap_ml_peerid_alloc(void)
 	if (i == mlo_ctx->max_mlo_peer_id)
 		return MLO_INVALID_PEER_ID;
 
+	mlo_debug(" ML peee id %d is allocated", i + 1);
+
 	return i + 1;
 }
 
@@ -293,6 +295,8 @@ void mlo_ap_ml_peerid_free(uint16_t mlo_peer_id)
 		qdf_clear_bit(mlo_peer_id - 1, mlo_ctx->mlo_peer_id_bmap);
 
 	ml_peerid_lock_release(mlo_ctx);
+
+	mlo_debug(" ML peee id %d is freed", mlo_peer_id);
 }
 
 void mlo_ap_vdev_quiet_set(struct wlan_objmgr_vdev *vdev)

+ 40 - 5
umac/mlo_mgr/src/wlan_mlo_mgr_peer.c

@@ -496,6 +496,9 @@ static QDF_STATUS mlo_peer_attach_link_peer(
 
 	if (ml_peer->mlpeer_state != ML_PEER_CREATED) {
 		mlo_peer_lock_release(ml_peer);
+		mlo_err("ML Peer " QDF_MAC_ADDR_FMT " is not in created state (state %d)",
+			QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes),
+			ml_peer->mlpeer_state);
 		return status;
 	}
 
@@ -505,9 +508,13 @@ static QDF_STATUS mlo_peer_attach_link_peer(
 			continue;
 
 		if (wlan_objmgr_peer_try_get_ref(link_peer, WLAN_MLO_MGR_ID) !=
-						QDF_STATUS_SUCCESS)
+						QDF_STATUS_SUCCESS) {
+			mlo_err("ML Peer " QDF_MAC_ADDR_FMT ", link peer " QDF_MAC_ADDR_FMT " is not in valid state",
+				QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes),
+				QDF_MAC_ADDR_REF
+					(wlan_peer_get_macaddr(link_peer)));
 			break;
-
+		}
 		peer_entry->link_peer = link_peer;
 		qdf_copy_macaddr(&peer_entry->link_addr,
 				 (struct qdf_mac_addr *)&link_peer->macaddr[0]);
@@ -710,8 +717,12 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 	if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE) {
 		status = mlo_dev_get_link_vdevs(vdev, ml_dev,
 						ml_info, link_vdevs);
-		if (QDF_IS_STATUS_ERROR(status))
+		if (QDF_IS_STATUS_ERROR(status)) {
+			mlo_err("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " get link vdevs failed",
+				ml_dev->mld_id,
+				QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes));
 			return QDF_STATUS_E_FAILURE;
+		}
 
 		for (i = 0; i < WLAN_UMAC_MLO_MAX_VDEVS; i++) {
 			vdev_link = link_vdevs[i];
@@ -723,6 +734,12 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 			if (wlan_vdev_is_mlo_peer_create_allowed(vdev_link)
 					!= QDF_STATUS_SUCCESS) {
 				mlo_dev_release_link_vdevs(link_vdevs);
+
+				mlo_err("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " create not allowed on link vdev %d",
+					ml_dev->mld_id,
+					QDF_MAC_ADDR_REF
+						(ml_peer->peer_mld_addr.bytes),
+					wlan_vdev_get_id(vdev_link));
 				return QDF_STATUS_E_INVAL;
 			}
 		}
@@ -731,8 +748,13 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 			vdev_link = link_vdevs[i];
 			if (vdev_link && (vdev_link != vdev) &&
 			    (wlan_vdev_get_peer_count(vdev_link) >
-			    wlan_vdev_get_max_peer_count(vdev_link))) {
+			     wlan_vdev_get_max_peer_count(vdev_link))) {
 				mlo_dev_release_link_vdevs(link_vdevs);
+				mlo_err("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " Max peer count reached on link vdev %d",
+					ml_dev->mld_id,
+					QDF_MAC_ADDR_REF
+						(ml_peer->peer_mld_addr.bytes),
+					wlan_vdev_get_id(vdev_link));
 				return QDF_STATUS_E_RESOURCES;
 			}
 		}
@@ -748,6 +770,9 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 		/* Allocate MLO peer */
 		ml_peer = qdf_mem_malloc(sizeof(*ml_peer));
 		if (!ml_peer) {
+			mlo_err("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " mem alloc failed",
+				ml_dev->mld_id,
+				QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes));
 			mlo_dev_release_link_vdevs(link_vdevs);
 			return QDF_STATUS_E_NOMEM;
 		}
@@ -766,6 +791,10 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 			if (aid == (uint16_t)-1) {
 				status = mlo_peer_allocate_aid(ml_dev, ml_peer);
 				if (status != QDF_STATUS_SUCCESS) {
+					mlo_err("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " aid alloc failed",
+						ml_dev->mld_id,
+						QDF_MAC_ADDR_REF
+						(ml_peer->peer_mld_addr.bytes));
 					mlo_peer_free(ml_peer);
 					mlo_dev_release_link_vdevs(link_vdevs);
 					return status;
@@ -798,6 +827,9 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 			mlo_reset_link_peer(ml_peer, link_peer);
 			mlo_peer_free(ml_peer);
 			mlo_dev_release_link_vdevs(link_vdevs);
+			mlo_err("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " attach failed",
+				ml_dev->mld_id,
+				QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes));
 			return status;
 		}
 	}
@@ -817,7 +849,10 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 		}
 	}
 	mlo_dev_release_link_vdevs(link_vdevs);
-
+	mlo_info("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " allocated %pK",
+		 ml_dev->mld_id,
+		 QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes),
+		 ml_peer);
 	return QDF_STATUS_SUCCESS;
 }
 

+ 23 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_peer_list.c

@@ -15,6 +15,7 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
+#include <wlan_mlo_mgr_cmn.h>
 #include <wlan_mlo_mgr_public_structs.h>
 #include "wlan_mlo_mgr_main.h"
 #include "qdf_types.h"
@@ -156,15 +157,22 @@ wlan_find_mlpeer_link_mac_addr(struct wlan_mlo_dev_context *ml_dev,
 	uint8_t i;
 
 	ml_peer = (struct wlan_mlo_peer_context *)iter_ml_peer;
+	mlo_debug("MLD ID %d ML Peer mac " QDF_MAC_ADDR_FMT,
+		  ml_dev->mld_id,
+		  QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes));
 	for (i = 0; i < MAX_MLO_LINK_PEERS; i++) {
 		link_peer = &ml_peer->peer_list[i];
 
+		mlo_debug("MLD ID %d, index %d ML Peer exists with mac " QDF_MAC_ADDR_FMT,
+			  i, ml_dev->mld_id,
+			  QDF_MAC_ADDR_REF(link_peer->link_addr.bytes));
 		if (qdf_is_macaddr_equal(&link_mac_arg->mac_addr,
 					 &link_peer->link_addr)) {
 			link_mac_arg->ml_peer = ml_peer;
 			return QDF_STATUS_SUCCESS;
 		}
 	}
+
 	return QDF_STATUS_E_NOENT;
 }
 
@@ -210,6 +218,8 @@ struct wlan_mlo_peer_context *wlan_mlo_get_mlpeer_by_linkmac(
 	struct link_mac_search link_mac_arg;
 	QDF_STATUS status;
 
+	mlo_debug("MLD ID %d ML Peer search with link mac " QDF_MAC_ADDR_FMT,
+		  ml_dev->mld_id, QDF_MAC_ADDR_REF(link_mac->bytes));
 	qdf_copy_macaddr(&link_mac_arg.mac_addr, link_mac);
 	status = wlan_mlo_iterate_ml_peerlist(ml_dev,
 					      wlan_find_mlpeer_link_mac_addr,
@@ -267,6 +277,8 @@ struct wlan_mlo_peer_context *wlan_mlo_get_mlpeer(
 	struct wlan_mlo_peer_context *ml_peer;
 	struct wlan_mlo_peer_list *mlo_peer_list;
 
+	mlo_debug("MLD ID %d ML Peer search mac " QDF_MAC_ADDR_FMT,
+		  ml_dev->mld_id, QDF_MAC_ADDR_REF(ml_addr->bytes));
 	mlo_peer_list = &ml_dev->mlo_peer_list;
 	ml_peerlist_lock_acquire(mlo_peer_list);
 	ml_peer = mlo_get_mlpeer(ml_dev, ml_addr);
@@ -313,6 +325,9 @@ QDF_STATUS mlo_dev_mlpeer_attach(struct wlan_mlo_dev_context *ml_dev,
 	ml_peerlist_lock_acquire(mlo_peer_list);
 	if (mlo_get_mlpeer(ml_dev, &ml_peer->peer_mld_addr)) {
 		ml_peerlist_lock_release(mlo_peer_list);
+		mlo_err("MLD ID %d ML Peer exists with mac " QDF_MAC_ADDR_FMT,
+			ml_dev->mld_id,
+			QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes));
 		return QDF_STATUS_E_EXISTS;
 	}
 
@@ -321,6 +336,10 @@ QDF_STATUS mlo_dev_mlpeer_attach(struct wlan_mlo_dev_context *ml_dev,
 				   ml_peer);
 	ml_peerlist_lock_release(mlo_peer_list);
 
+	mlo_debug("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " is attached",
+		  ml_dev->mld_id,
+		  QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes));
+
 	return QDF_STATUS_SUCCESS;
 }
 
@@ -339,6 +358,10 @@ QDF_STATUS mlo_dev_mlpeer_detach(struct wlan_mlo_dev_context *ml_dev,
 					ml_peer);
 	ml_peerlist_lock_release(mlo_peer_list);
 
+	mlo_debug("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " is detached",
+		  ml_dev->mld_id,
+		  QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes));
+
 	return status;
 }
 

+ 15 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_primary_umac.c

@@ -78,6 +78,11 @@ QDF_STATUS mlo_peer_allocate_primary_umac(
 	/* For Station mode, assign assoc peer as primary umac */
 	if (wlan_peer_get_peer_type(assoc_peer) == WLAN_PEER_AP) {
 		mlo_peer_assign_primary_umac(ml_peer, peer_entry);
+		mlo_info("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " primary umac soc %d ",
+			 ml_dev->mld_id,
+			 QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes),
+			 ml_peer->primary_umac_psoc_id);
+
 		return QDF_STATUS_SUCCESS;
 	}
 
@@ -108,6 +113,11 @@ QDF_STATUS mlo_peer_allocate_primary_umac(
 		if (!primary_umac_set)
 			ml_peer->primary_umac_psoc_id = first_link_id;
 
+		mlo_info("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " primary umac soc %d ",
+			 ml_dev->mld_id,
+			 QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes),
+			 ml_peer->primary_umac_psoc_id);
+
 		return QDF_STATUS_SUCCESS;
 	}
 
@@ -117,6 +127,11 @@ QDF_STATUS mlo_peer_allocate_primary_umac(
 
 	mlo_peer_assign_primary_umac(ml_peer, peer_entry);
 
+	mlo_info("MLD ID %d ML Peer " QDF_MAC_ADDR_FMT " avg RSSI %d primary umac soc %d ",
+		 ml_dev->mld_id,
+		 QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes),
+		 ml_peer->avg_link_rssi, ml_peer->primary_umac_psoc_id);
+
 	return QDF_STATUS_SUCCESS;
 }