Преглед на файлове

qcacld-3.0: Send MLO peer capabilities

Add path to enable the MLO capability flag when sending the peer assoc
command.

Change-Id: I9bfe8472ca0febbd98d3ddb999b4dc4f6c3e10f2
CRs-fixed: 2976191
Lincoln Tran преди 3 години
родител
ревизия
f1591d8755
променени са 1 файла, в които са добавени 50 реда и са изтрити 0 реда
  1. 50 0
      core/wma/src/wma_mgmt.c

+ 50 - 0
core/wma/src/wma_mgmt.c

@@ -1264,6 +1264,54 @@ static void wma_objmgr_set_peer_mlme_type(tp_wma_handle wma,
 	wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_WMA_ID);
 }
 
+#ifdef WLAN_FEATURE_11BE_MLO
+/**
+ * wma_set_mlo_capability() - set MLO caps to the peer assoc request
+ * @wma: wma handle
+ * @vdev: vdev object
+ * @req: peer assoc request parameters
+ *
+ * Return: None
+ */
+static void wma_set_mlo_capability(tp_wma_handle wma,
+				   struct wlan_objmgr_vdev *vdev,
+				   struct peer_assoc_params *req)
+{
+	uint8_t pdev_id;
+	struct wlan_objmgr_peer *peer;
+	struct wlan_objmgr_psoc *psoc = wma->psoc;
+
+	pdev_id = wlan_objmgr_pdev_get_pdev_id(wma->pdev);
+	peer = wlan_objmgr_get_peer(psoc, pdev_id, req->peer_mac,
+				    WLAN_LEGACY_WMA_ID);
+
+	if (!peer) {
+		wma_err("peer not valid");
+		return;
+	}
+
+	if (!qdf_is_macaddr_zero((struct qdf_mac_addr *)peer->mldaddr)) {
+		req->mlo_params.mlo_enabled = true;
+		req->mlo_params.mlo_assoc_link =
+					wlan_peer_mlme_get_assoc_peer(peer);
+		WLAN_ADDR_COPY(req->mlo_params.mld_mac, peer->mldaddr);
+		wma_debug("assoc_link %d " QDF_MAC_ADDR_FMT,
+			  req->mlo_params.mlo_assoc_link,
+			  QDF_MAC_ADDR_REF(peer->mldaddr));
+	} else {
+		wma_debug("Peer MLO context is NULL");
+		req->mlo_params.mlo_enabled = false;
+	}
+	wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_WMA_ID);
+}
+#else
+static inline void wma_set_mlo_capability(tp_wma_handle wma,
+					  struct wlan_objmgr_vdev *vdev,
+					  struct peer_assoc_params *req)
+{
+}
+#endif
+
 /**
  * wmi_unified_send_peer_assoc() - send peer assoc command to fw
  * @wma: wma handle
@@ -1603,6 +1651,8 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
 		}
 	}
 
+	wma_set_mlo_capability(wma, intr->vdev, cmd);
+
 	wma_debug("rx_max_rate %d, rx_mcs %x, tx_max_rate %d, tx_mcs: %x num rates %d need 4 way %d",
 		  cmd->rx_max_rate, cmd->rx_mcs_set, cmd->tx_max_rate,
 		  cmd->tx_mcs_set, peer_ht_rates.num_rates,