Browse Source

qcacmn: Handle ppe peer setup for QCA5332 platform

As ppe_ds is not supported on QCA5332 platform, in
case of MLO peer always setup ppe peer using primary
peer

Change-Id: Icd05b69c07c05fe2fc793f49fcf28b5d58bc8bb6
CRs-Fixed: 3480359
Chaithanya Garrepalli 2 năm trước cách đây
mục cha
commit
6605c27dcc
1 tập tin đã thay đổi với 15 bổ sung7 xóa
  1. 15 7
      dp/wifi3.0/be/dp_be.c

+ 15 - 7
dp/wifi3.0/be/dp_be.c

@@ -1183,11 +1183,13 @@ static void dp_soc_txrx_peer_setup_be(struct dp_soc *soc, uint8_t vdev_id,
 {
 	struct dp_vdev_be *be_vdev;
 	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
+	struct dp_soc_be *be_soc;
 	struct cdp_ds_vp_params vp_params = {0};
-	struct cdp_soc_t *cdp_soc = &soc->cdp_soc;
+	struct cdp_soc_t *cdp_soc;
 	enum wlan_op_mode vdev_opmode;
 	struct dp_peer *peer;
+	struct dp_peer *tgt_peer = NULL;
+	struct dp_soc *tgt_soc = NULL;
 
 	peer = dp_peer_find_hash_find(soc, peer_mac, 0, vdev_id, DP_MOD_ID_CDP);
 	if (!peer)
@@ -1200,7 +1202,12 @@ static void dp_soc_txrx_peer_setup_be(struct dp_soc *soc, uint8_t vdev_id,
 		return;
 	}
 
-	be_vdev = dp_get_be_vdev_from_dp_vdev(peer->vdev);
+	tgt_peer = dp_get_tgt_peer_from_peer(peer);
+	tgt_soc = tgt_peer->vdev->pdev->soc;
+	be_soc = dp_get_be_soc_from_dp_soc(tgt_soc);
+	cdp_soc = &tgt_soc->cdp_soc;
+
+	be_vdev = dp_get_be_vdev_from_dp_vdev(tgt_peer->vdev);
 	if (!be_vdev) {
 		qdf_err("BE vap is null");
 		qdf_status = QDF_STATUS_E_NULL_VALUE;
@@ -1219,9 +1226,10 @@ static void dp_soc_txrx_peer_setup_be(struct dp_soc *soc, uint8_t vdev_id,
 	/*
 	 * Check if PPE DS routing is enabled on the associated vap.
 	 */
-	qdf_status = cdp_soc->ol_ops->get_ppeds_profile_info_for_vap(soc->ctrl_psoc,
-								     peer->vdev->vdev_id,
-								     &vp_params);
+	qdf_status =
+	cdp_soc->ol_ops->get_ppeds_profile_info_for_vap(tgt_soc->ctrl_psoc,
+							tgt_peer->vdev->vdev_id,
+							&vp_params);
 	if (qdf_status == QDF_STATUS_E_NULL_VALUE) {
 		dp_err("%pK: Could not find ppeds profile info vdev\n", be_vdev);
 		qdf_status = QDF_STATUS_E_NULL_VALUE;
@@ -1229,7 +1237,7 @@ static void dp_soc_txrx_peer_setup_be(struct dp_soc *soc, uint8_t vdev_id,
 	}
 
 	if (vp_params.ppe_vp_type == PPE_VP_USER_TYPE_DS) {
-		qdf_status = dp_peer_setup_ppeds_be(soc, peer, be_vdev,
+		qdf_status = dp_peer_setup_ppeds_be(tgt_soc, tgt_peer, be_vdev,
 						    (void *)&be_soc->ppe_vp_profile[vp_params.ppe_vp_profile_idx]);
 	}