|
@@ -496,6 +496,9 @@ static QDF_STATUS mlo_peer_attach_link_peer(
|
|
|
|
|
|
if (ml_peer->mlpeer_state != ML_PEER_CREATED) {
|
|
if (ml_peer->mlpeer_state != ML_PEER_CREATED) {
|
|
mlo_peer_lock_release(ml_peer);
|
|
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;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -505,9 +508,13 @@ static QDF_STATUS mlo_peer_attach_link_peer(
|
|
continue;
|
|
continue;
|
|
|
|
|
|
if (wlan_objmgr_peer_try_get_ref(link_peer, WLAN_MLO_MGR_ID) !=
|
|
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;
|
|
break;
|
|
-
|
|
|
|
|
|
+ }
|
|
peer_entry->link_peer = link_peer;
|
|
peer_entry->link_peer = link_peer;
|
|
qdf_copy_macaddr(&peer_entry->link_addr,
|
|
qdf_copy_macaddr(&peer_entry->link_addr,
|
|
(struct qdf_mac_addr *)&link_peer->macaddr[0]);
|
|
(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) {
|
|
if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE) {
|
|
status = mlo_dev_get_link_vdevs(vdev, ml_dev,
|
|
status = mlo_dev_get_link_vdevs(vdev, ml_dev,
|
|
ml_info, link_vdevs);
|
|
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;
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
|
+ }
|
|
|
|
|
|
for (i = 0; i < WLAN_UMAC_MLO_MAX_VDEVS; i++) {
|
|
for (i = 0; i < WLAN_UMAC_MLO_MAX_VDEVS; i++) {
|
|
vdev_link = link_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)
|
|
if (wlan_vdev_is_mlo_peer_create_allowed(vdev_link)
|
|
!= QDF_STATUS_SUCCESS) {
|
|
!= QDF_STATUS_SUCCESS) {
|
|
mlo_dev_release_link_vdevs(link_vdevs);
|
|
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;
|
|
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];
|
|
vdev_link = link_vdevs[i];
|
|
if (vdev_link && (vdev_link != vdev) &&
|
|
if (vdev_link && (vdev_link != vdev) &&
|
|
(wlan_vdev_get_peer_count(vdev_link) >
|
|
(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_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;
|
|
return QDF_STATUS_E_RESOURCES;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -748,6 +770,9 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
|
|
/* Allocate MLO peer */
|
|
/* Allocate MLO peer */
|
|
ml_peer = qdf_mem_malloc(sizeof(*ml_peer));
|
|
ml_peer = qdf_mem_malloc(sizeof(*ml_peer));
|
|
if (!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);
|
|
mlo_dev_release_link_vdevs(link_vdevs);
|
|
return QDF_STATUS_E_NOMEM;
|
|
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) {
|
|
if (aid == (uint16_t)-1) {
|
|
status = mlo_peer_allocate_aid(ml_dev, ml_peer);
|
|
status = mlo_peer_allocate_aid(ml_dev, ml_peer);
|
|
if (status != QDF_STATUS_SUCCESS) {
|
|
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_peer_free(ml_peer);
|
|
mlo_dev_release_link_vdevs(link_vdevs);
|
|
mlo_dev_release_link_vdevs(link_vdevs);
|
|
return status;
|
|
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_reset_link_peer(ml_peer, link_peer);
|
|
mlo_peer_free(ml_peer);
|
|
mlo_peer_free(ml_peer);
|
|
mlo_dev_release_link_vdevs(link_vdevs);
|
|
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;
|
|
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_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;
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
|
|
|