Ver código fonte

qcacmn: Allow MLO sta connetion with single link

For single link MLO connection, there is no partner peer creation,
so wlan_mlo_link_peer_attach is not triggered. wlan_mlo_peer_create
is good enough to trigger mlo_mlme_peer_assoc_resp.

Change-Id: Ia76503e146a07d15d7b263aa36f9e8c4d110fc6e
CRs-Fixed: 3168623
Bing Sun 3 anos atrás
pai
commit
67df961d63
1 arquivos alterados com 15 adições e 0 exclusões
  1. 15 0
      umac/mlo_mgr/src/wlan_mlo_mgr_peer.c

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

@@ -745,6 +745,7 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 	struct wlan_objmgr_vdev *vdev_link;
 	QDF_STATUS status;
 	uint16_t i;
+	struct wlan_objmgr_peer *assoc_peer;
 
 	/* get ML VDEV from VDEV */
 	ml_dev = vdev->mlo_dev_ctx;
@@ -894,6 +895,20 @@ QDF_STATUS wlan_mlo_peer_create(struct wlan_objmgr_vdev *vdev,
 		 ml_dev->mld_id,
 		 QDF_MAC_ADDR_REF(ml_peer->peer_mld_addr.bytes),
 		 ml_peer);
+
+	/*
+	 * wlan_mlo_peer_create() is trigggered after getting peer
+	 * assoc confirm from FW. For single link MLO connection, it is
+	 * OK to trigger assoc response from here.
+	 */
+	if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE) {
+		if (ml_peer->max_links == ml_peer->link_peer_cnt) {
+			assoc_peer = ml_peer->peer_list[0].link_peer;
+			if (assoc_peer)
+				mlo_mlme_peer_assoc_resp(assoc_peer);
+		}
+	}
+
 	return QDF_STATUS_SUCCESS;
 }