Browse Source

qcacmn: Use different Rx ring mask for ML and non-ML peers

Add framework to use different RX hash values and ring masks
for ML and non-ML peers

Change-Id: I098cb50b8873eb137ce096011d01a5c21aaf854f
CRs-Fixed: 3269916
Chaithanya Garrepalli 2 years ago
parent
commit
adbb77002a
8 changed files with 190 additions and 150 deletions
  1. 2 0
      dp/inc/cdp_txrx_cmn_struct.h
  2. 85 0
      dp/wifi3.0/be/dp_be.c
  3. 47 36
      dp/wifi3.0/dp_main.c
  4. 7 0
      dp/wifi3.0/dp_types.h
  5. 19 0
      dp/wifi3.0/li/dp_li.c
  6. 5 46
      wlan_cfg/cfg_dp.h
  7. 12 36
      wlan_cfg/wlan_cfg.c
  8. 13 32
      wlan_cfg/wlan_cfg.h

+ 2 - 0
dp/inc/cdp_txrx_cmn_struct.h

@@ -418,12 +418,14 @@ enum cdp_peer_type {
  * @is_first_link: set true for first MLO link peer
  * @is_first_link: set true for first MLO link peer
  * @is_primary_link: set true for MLO primary link peer
  * @is_primary_link: set true for MLO primary link peer
  * @primary_umac_id: primary umac_id
  * @primary_umac_id: primary umac_id
+ * @num_links: number of links in MLO
  */
  */
 struct cdp_peer_setup_info {
 struct cdp_peer_setup_info {
 	uint8_t *mld_peer_mac;
 	uint8_t *mld_peer_mac;
 	uint8_t is_first_link:1,
 	uint8_t is_first_link:1,
 		is_primary_link:1;
 		is_primary_link:1;
 	uint8_t primary_umac_id;
 	uint8_t primary_umac_id;
+	uint8_t num_links;
 };
 };
 
 
 /**
 /**

+ 85 - 0
dp/wifi3.0/be/dp_be.c

@@ -1866,6 +1866,89 @@ dp_initialize_arch_ops_be_mlo(struct dp_arch_ops *arch_ops)
 }
 }
 #endif /* WLAN_FEATURE_11BE_MLO */
 #endif /* WLAN_FEATURE_11BE_MLO */
 
 
+#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
+#define DP_LMAC_PEER_ID_MSB_LEGACY 2
+#define DP_LMAC_PEER_ID_MSB_MLO 3
+
+static void dp_peer_get_reo_hash_be(struct dp_vdev *vdev,
+				    struct cdp_peer_setup_info *setup_info,
+				    enum cdp_host_reo_dest_ring *reo_dest,
+				    bool *hash_based,
+				    uint8_t *lmac_peer_id_msb)
+{
+	struct dp_soc *soc = vdev->pdev->soc;
+	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
+
+	if (!be_soc->mlo_enabled)
+		return dp_vdev_get_default_reo_hash(vdev, reo_dest,
+						    hash_based);
+
+	*hash_based = wlan_cfg_is_rx_hash_enabled(soc->wlan_cfg_ctx);
+	*reo_dest = vdev->pdev->reo_dest;
+
+	/* Not a ML link peer use non-mlo */
+	if (!setup_info) {
+		*lmac_peer_id_msb = DP_LMAC_PEER_ID_MSB_LEGACY;
+		return;
+	}
+
+	/* For STA ML VAP we do not have num links info at this point
+	 * use MLO case always
+	 */
+	if (vdev->opmode == wlan_op_mode_sta) {
+		*lmac_peer_id_msb = DP_LMAC_PEER_ID_MSB_MLO;
+		return;
+	}
+
+	/* For AP ML VAP consider the peer as ML only it associates with
+	 * multiple links
+	 */
+	if (setup_info->num_links == 1) {
+		*lmac_peer_id_msb = DP_LMAC_PEER_ID_MSB_LEGACY;
+		return;
+	}
+
+	*lmac_peer_id_msb = DP_LMAC_PEER_ID_MSB_MLO;
+}
+
+static bool dp_reo_remap_config_be(struct dp_soc *soc,
+				   uint32_t *remap0,
+				   uint32_t *remap1,
+				   uint32_t *remap2)
+{
+	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
+	uint32_t reo_config = wlan_cfg_get_reo_rings_mapping(soc->wlan_cfg_ctx);
+	uint32_t reo_mlo_config =
+		wlan_cfg_mlo_rx_ring_map_get(soc->wlan_cfg_ctx);
+
+	if (!be_soc->mlo_enabled)
+		return dp_reo_remap_config(soc, remap0, remap1, remap2);
+
+	*remap0 = hal_reo_ix_remap_value_get_be(soc->hal_soc, reo_mlo_config);
+	*remap1 = hal_reo_ix_remap_value_get_be(soc->hal_soc, reo_config);
+	*remap2 = hal_reo_ix_remap_value_get_be(soc->hal_soc, reo_mlo_config);
+
+	return true;
+}
+#else
+static void dp_peer_get_reo_hash_be(struct dp_vdev *vdev,
+				    struct cdp_peer_setup_info *setup_info,
+				    enum cdp_host_reo_dest_ring *reo_dest,
+				    bool *hash_based,
+				    uint8_t *lmac_peer_id_msb)
+{
+	dp_vdev_get_default_reo_hash(vdev, reo_dest, hash_based);
+}
+
+static bool dp_reo_remap_config_be(struct dp_soc *soc,
+				   uint32_t *remap0,
+				   uint32_t *remap1,
+				   uint32_t *remap2)
+{
+	return dp_reo_remap_config(soc, remap0, remap1, remap2);
+}
+#endif
+
 void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 {
 {
 #ifndef QCA_HOST_MODE_WIFI_DISABLED
 #ifndef QCA_HOST_MODE_WIFI_DISABLED
@@ -1924,4 +2007,6 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 	dp_init_near_full_arch_ops_be(arch_ops);
 	dp_init_near_full_arch_ops_be(arch_ops);
 	arch_ops->get_rx_hash_key = dp_get_rx_hash_key_be;
 	arch_ops->get_rx_hash_key = dp_get_rx_hash_key_be;
 	arch_ops->print_mlo_ast_stats = dp_print_mlo_ast_stats_be;
 	arch_ops->print_mlo_ast_stats = dp_print_mlo_ast_stats_be;
+	arch_ops->peer_get_reo_hash = dp_peer_get_reo_hash_be;
+	arch_ops->reo_remap_config = dp_reo_remap_config_be;
 }
 }

+ 47 - 36
dp/wifi3.0/dp_main.c

@@ -6594,6 +6594,7 @@ dp_soc_attach_target_wifi3(struct cdp_soc_t *cdp_soc)
 {
 {
 	struct dp_soc *soc = (struct dp_soc *)cdp_soc;
 	struct dp_soc *soc = (struct dp_soc *)cdp_soc;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	struct hal_reo_params reo_params;
 
 
 	htt_soc_attach_target(soc->htt_handle);
 	htt_soc_attach_target(soc->htt_handle);
 
 
@@ -6649,6 +6650,39 @@ dp_soc_attach_target_wifi3(struct cdp_soc_t *cdp_soc)
 	/* initialize work queue for stats processing */
 	/* initialize work queue for stats processing */
 	qdf_create_work(0, &soc->htt_stats.work, htt_t2h_stats_handler, soc);
 	qdf_create_work(0, &soc->htt_stats.work, htt_t2h_stats_handler, soc);
 
 
+	wlan_cfg_soc_update_tgt_params(soc->wlan_cfg_ctx,
+				       soc->ctrl_psoc);
+	/* Setup HW REO */
+	qdf_mem_zero(&reo_params, sizeof(reo_params));
+
+	if (wlan_cfg_is_rx_hash_enabled(soc->wlan_cfg_ctx)) {
+		/*
+		 * Reo ring remap is not required if both radios
+		 * are offloaded to NSS
+		 */
+
+		if (soc->arch_ops.reo_remap_config(soc, &reo_params.remap0,
+						   &reo_params.remap1,
+						   &reo_params.remap2))
+			reo_params.rx_hash_enabled = true;
+		else
+			reo_params.rx_hash_enabled = false;
+	}
+
+	/*
+	 * set the fragment destination ring
+	 */
+	dp_reo_frag_dst_set(soc, &reo_params.frag_dst_ring);
+
+	if (wlan_cfg_get_dp_soc_nss_cfg(soc->wlan_cfg_ctx))
+		reo_params.alt_dst_ind_0 = REO_REMAP_RELEASE;
+
+	hal_reo_setup(soc->hal_soc, &reo_params, 1);
+
+	hal_reo_set_err_dst_remap(soc->hal_soc);
+
+	soc->features.pn_in_reo_dest = hal_reo_enable_pn_in_dest(soc->hal_soc);
+
 	return QDF_STATUS_SUCCESS;
 	return QDF_STATUS_SUCCESS;
 }
 }
 
 
@@ -8039,8 +8073,10 @@ static inline bool dp_is_vdev_subtype_p2p(struct dp_vdev *vdev)
  * Return: None
  * Return: None
  */
  */
 static void dp_peer_setup_get_reo_hash(struct dp_vdev *vdev,
 static void dp_peer_setup_get_reo_hash(struct dp_vdev *vdev,
+				       struct cdp_peer_setup_info *setup_info,
 				       enum cdp_host_reo_dest_ring *reo_dest,
 				       enum cdp_host_reo_dest_ring *reo_dest,
-				       bool *hash_based)
+				       bool *hash_based,
+				       uint8_t *lmac_peer_id_msb)
 {
 {
 	struct dp_soc *soc;
 	struct dp_soc *soc;
 	struct dp_pdev *pdev;
 	struct dp_pdev *pdev;
@@ -8088,10 +8124,15 @@ static void dp_peer_setup_get_reo_hash(struct dp_vdev *vdev,
  * Return: None
  * Return: None
  */
  */
 static void dp_peer_setup_get_reo_hash(struct dp_vdev *vdev,
 static void dp_peer_setup_get_reo_hash(struct dp_vdev *vdev,
+				       struct cdp_peer_setup_info *setup_info,
 				       enum cdp_host_reo_dest_ring *reo_dest,
 				       enum cdp_host_reo_dest_ring *reo_dest,
-				       bool *hash_based)
+				       bool *hash_based,
+				       uint8_t *lmac_peer_id_msb)
 {
 {
-	dp_vdev_get_default_reo_hash(vdev, reo_dest, hash_based);
+	struct dp_soc *soc = vdev->pdev->soc;
+
+	soc->arch_ops.peer_get_reo_hash(vdev, setup_info, reo_dest, hash_based,
+					lmac_peer_id_msb);
 }
 }
 #endif /* IPA_OFFLOAD */
 #endif /* IPA_OFFLOAD */
 
 
@@ -8134,7 +8175,9 @@ dp_peer_setup_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 	/* save vdev related member in case vdev freed */
 	/* save vdev related member in case vdev freed */
 	vdev_opmode = vdev->opmode;
 	vdev_opmode = vdev->opmode;
 	pdev = vdev->pdev;
 	pdev = vdev->pdev;
-	dp_peer_setup_get_reo_hash(vdev, &reo_dest, &hash_based);
+	dp_peer_setup_get_reo_hash(vdev, setup_info,
+				   &reo_dest, &hash_based,
+				   &lmac_peer_id_msb);
 
 
 	dp_info("pdev: %d vdev :%d opmode:%u hash-based-steering:%d default-reo_dest:%u",
 	dp_info("pdev: %d vdev :%d opmode:%u hash-based-steering:%d default-reo_dest:%u",
 		pdev->pdev_id, vdev->vdev_id,
 		pdev->pdev_id, vdev->vdev_id,
@@ -14879,7 +14922,6 @@ void *dp_soc_init(struct dp_soc *soc, HTC_HANDLE htc_handle,
 {
 {
 	struct htt_soc *htt_soc = (struct htt_soc *)soc->htt_handle;
 	struct htt_soc *htt_soc = (struct htt_soc *)soc->htt_handle;
 	bool is_monitor_mode = false;
 	bool is_monitor_mode = false;
-	struct hal_reo_params reo_params;
 	uint8_t i;
 	uint8_t i;
 	int num_dp_msi;
 	int num_dp_msi;
 	struct dp_mon_ops *mon_ops;
 	struct dp_mon_ops *mon_ops;
@@ -15004,23 +15046,6 @@ void *dp_soc_init(struct dp_soc *soc, HTC_HANDLE htc_handle,
 	if (soc->disable_mac1_intr)
 	if (soc->disable_mac1_intr)
 		dp_soc_disable_unused_mac_intr_mask(soc, 0x1);
 		dp_soc_disable_unused_mac_intr_mask(soc, 0x1);
 
 
-	/* Setup HW REO */
-	qdf_mem_zero(&reo_params, sizeof(reo_params));
-
-	if (wlan_cfg_is_rx_hash_enabled(soc->wlan_cfg_ctx)) {
-		/*
-		 * Reo ring remap is not required if both radios
-		 * are offloaded to NSS
-		 */
-
-		if (dp_reo_remap_config(soc, &reo_params.remap0,
-					&reo_params.remap1,
-					&reo_params.remap2))
-			reo_params.rx_hash_enabled = true;
-		else
-			reo_params.rx_hash_enabled = false;
-	}
-
 	/* setup the global rx defrag waitlist */
 	/* setup the global rx defrag waitlist */
 	TAILQ_INIT(&soc->rx.defrag.waitlist);
 	TAILQ_INIT(&soc->rx.defrag.waitlist);
 	soc->rx.defrag.timeout_ms =
 	soc->rx.defrag.timeout_ms =
@@ -15030,20 +15055,6 @@ void *dp_soc_init(struct dp_soc *soc, HTC_HANDLE htc_handle,
 		wlan_cfg_get_defrag_timeout_check(soc->wlan_cfg_ctx);
 		wlan_cfg_get_defrag_timeout_check(soc->wlan_cfg_ctx);
 	qdf_spinlock_create(&soc->rx.defrag.defrag_lock);
 	qdf_spinlock_create(&soc->rx.defrag.defrag_lock);
 
 
-	/*
-	 * set the fragment destination ring
-	 */
-	dp_reo_frag_dst_set(soc, &reo_params.frag_dst_ring);
-
-	if (wlan_cfg_get_dp_soc_nss_cfg(soc->wlan_cfg_ctx))
-		reo_params.alt_dst_ind_0 = REO_REMAP_RELEASE;
-
-	hal_reo_setup(soc->hal_soc, &reo_params, 1);
-
-	hal_reo_set_err_dst_remap(soc->hal_soc);
-
-	soc->features.pn_in_reo_dest = hal_reo_enable_pn_in_dest(soc->hal_soc);
-
 	mon_ops = dp_mon_ops_get(soc);
 	mon_ops = dp_mon_ops_get(soc);
 	if (mon_ops && mon_ops->mon_soc_init)
 	if (mon_ops && mon_ops->mon_soc_init)
 		mon_ops->mon_soc_init(soc);
 		mon_ops->mon_soc_init(soc);

+ 7 - 0
dp/wifi3.0/dp_types.h

@@ -1830,6 +1830,13 @@ struct dp_arch_ops {
 	void (*txrx_peer_map_detach)(struct dp_soc *soc);
 	void (*txrx_peer_map_detach)(struct dp_soc *soc);
 	QDF_STATUS (*dp_rxdma_ring_sel_cfg)(struct dp_soc *soc);
 	QDF_STATUS (*dp_rxdma_ring_sel_cfg)(struct dp_soc *soc);
 	void (*soc_cfg_attach)(struct dp_soc *soc);
 	void (*soc_cfg_attach)(struct dp_soc *soc);
+	void (*peer_get_reo_hash)(struct dp_vdev *vdev,
+				  struct cdp_peer_setup_info *setup_info,
+				  enum cdp_host_reo_dest_ring *reo_dest,
+				  bool *hash_based,
+				  uint8_t *lmac_peer_id_msb);
+	 bool (*reo_remap_config)(struct dp_soc *soc, uint32_t *remap0,
+				  uint32_t *remap1, uint32_t *remap2);
 
 
 	/* TX RX Arch Ops */
 	/* TX RX Arch Ops */
 	QDF_STATUS (*tx_hw_enqueue)(struct dp_soc *soc, struct dp_vdev *vdev,
 	QDF_STATUS (*tx_hw_enqueue)(struct dp_soc *soc, struct dp_vdev *vdev,

+ 19 - 0
dp/wifi3.0/li/dp_li.c

@@ -558,6 +558,23 @@ static void dp_get_rx_hash_key_li(struct dp_soc *soc,
 	dp_get_rx_hash_key_bytes(lro_hash);
 	dp_get_rx_hash_key_bytes(lro_hash);
 }
 }
 
 
+static void dp_peer_get_reo_hash_li(struct dp_vdev *vdev,
+				    struct cdp_peer_setup_info *setup_info,
+				    enum cdp_host_reo_dest_ring *reo_dest,
+				    bool *hash_based,
+				    uint8_t *lmac_peer_id_msb)
+{
+	dp_vdev_get_default_reo_hash(vdev, reo_dest, hash_based);
+}
+
+static bool dp_reo_remap_config_li(struct dp_soc *soc,
+				   uint32_t *remap0,
+				   uint32_t *remap1,
+				   uint32_t *remap2)
+{
+	return dp_reo_remap_config(soc, remap0, remap1, remap2);
+}
+
 void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
 void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
 {
 {
 #ifndef QCA_HOST_MODE_WIFI_DISABLED
 #ifndef QCA_HOST_MODE_WIFI_DISABLED
@@ -609,6 +626,8 @@ void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
 	arch_ops->dp_peer_rx_reorder_queue_setup =
 	arch_ops->dp_peer_rx_reorder_queue_setup =
 					dp_peer_rx_reorder_queue_setup_li;
 					dp_peer_rx_reorder_queue_setup_li;
 	arch_ops->dp_find_peer_by_destmac = dp_find_peer_by_destmac_li;
 	arch_ops->dp_find_peer_by_destmac = dp_find_peer_by_destmac_li;
+	arch_ops->peer_get_reo_hash = dp_peer_get_reo_hash_li;
+	arch_ops->reo_remap_config = dp_reo_remap_config_li;
 }
 }
 
 
 #ifdef QCA_DP_TX_HW_SW_NBUF_DESC_PREFETCH
 #ifdef QCA_DP_TX_HW_SW_NBUF_DESC_PREFETCH

+ 5 - 46
wlan_cfg/cfg_dp.h

@@ -450,7 +450,7 @@
 #define WLAN_CFG_PPE_RELEASE_RING_SIZE_MAX 1024
 #define WLAN_CFG_PPE_RELEASE_RING_SIZE_MAX 1024
 
 
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
-#define WLAN_CFG_MLO_RX_RING_MAP 0xF
+#define WLAN_CFG_MLO_RX_RING_MAP 0x7
 #define WLAN_CFG_MLO_RX_RING_MAP_MIN 0x0
 #define WLAN_CFG_MLO_RX_RING_MAP_MIN 0x0
 #define WLAN_CFG_MLO_RX_RING_MAP_MAX 0xFF
 #define WLAN_CFG_MLO_RX_RING_MAP_MAX 0xFF
 #endif
 #endif
@@ -1614,57 +1614,16 @@
  *
  *
  * </ini>
  * </ini>
  */
  */
-#define CFG_DP_MLO_CHIP0_RX_RING_MAP \
-		CFG_INI_UINT("dp_chip0_rx_ring_map", \
+#define CFG_DP_MLO_RX_RING_MAP \
+		CFG_INI_UINT("dp_mlo_reo_rings_map", \
 		WLAN_CFG_MLO_RX_RING_MAP_MIN, \
 		WLAN_CFG_MLO_RX_RING_MAP_MIN, \
 		WLAN_CFG_MLO_RX_RING_MAP_MAX, \
 		WLAN_CFG_MLO_RX_RING_MAP_MAX, \
 		WLAN_CFG_MLO_RX_RING_MAP, \
 		WLAN_CFG_MLO_RX_RING_MAP, \
-		CFG_VALUE_OR_DEFAULT, "DP Rx ring map chip0")
+		CFG_VALUE_OR_DEFAULT, "DP MLO Rx ring map")
 
 
-/*
- * <ini>
- * dp_chip1_rx_ring_map - Set Rx ring map for CHIP 1
- * @Min: 0x0
- * @Max: 0xFF
- * @Default: 0xF
- *
- * This ini sets Rx ring map for CHIP 1
- *
- * Usage: Internal
- *
- * </ini>
- */
-#define CFG_DP_MLO_CHIP1_RX_RING_MAP \
-		CFG_INI_UINT("dp_chip1_rx_ring_map", \
-		WLAN_CFG_MLO_RX_RING_MAP_MIN, \
-		WLAN_CFG_MLO_RX_RING_MAP_MAX, \
-		WLAN_CFG_MLO_RX_RING_MAP, \
-		CFG_VALUE_OR_DEFAULT, "DP Rx ring map chip1")
-
-/*
- * <ini>
- * dp_chip2_rx_ring_map - Set Rx ring map for CHIP 2
- * @Min: 0x0
- * @Max: 0xFF
- * @Default: 0xF
- *
- * This ini sets Rx ring map for CHIP 2
- *
- * Usage: Internal
- *
- * </ini>
- */
-#define CFG_DP_MLO_CHIP2_RX_RING_MAP \
-		CFG_INI_UINT("dp_chip2_rx_ring_map", \
-		WLAN_CFG_MLO_RX_RING_MAP_MIN, \
-		WLAN_CFG_MLO_RX_RING_MAP_MAX, \
-		WLAN_CFG_MLO_RX_RING_MAP, \
-		CFG_VALUE_OR_DEFAULT, "DP Rx ring map chip2")
 
 
 #define CFG_DP_MLO_CONFIG \
 #define CFG_DP_MLO_CONFIG \
-	CFG(CFG_DP_MLO_CHIP0_RX_RING_MAP) \
-	CFG(CFG_DP_MLO_CHIP1_RX_RING_MAP) \
-	CFG(CFG_DP_MLO_CHIP2_RX_RING_MAP)
+	CFG(CFG_DP_MLO_RX_RING_MAP)
 #else
 #else
 #define CFG_DP_MLO_CONFIG
 #define CFG_DP_MLO_CONFIG
 #endif
 #endif

+ 12 - 36
wlan_cfg/wlan_cfg.c

@@ -2546,25 +2546,8 @@ wlan_multi_soc_mlo_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
 	uint8_t rx_ring_map;
 	uint8_t rx_ring_map;
 
 
 	rx_ring_map =
 	rx_ring_map =
-		cfg_get(psoc, CFG_DP_MLO_CHIP0_RX_RING_MAP);
-	wlan_cfg_ctx->mlo_chip_rx_ring_map[0] = rx_ring_map;
-	wlan_cfg_ctx->mlo_chip_default_rx_ring_id[0] =
-			wlan_cfg_get_lsb_set_pos(rx_ring_map);
-	wlan_cfg_ctx->lmac_peer_id_msb[0] = 1;
-
-	rx_ring_map =
-		cfg_get(psoc, CFG_DP_MLO_CHIP1_RX_RING_MAP);
-	wlan_cfg_ctx->mlo_chip_rx_ring_map[1] = rx_ring_map;
-	wlan_cfg_ctx->mlo_chip_default_rx_ring_id[1] =
-			wlan_cfg_get_lsb_set_pos(rx_ring_map);
-	wlan_cfg_ctx->lmac_peer_id_msb[1] = 2;
-
-	rx_ring_map =
-		cfg_get(psoc, CFG_DP_MLO_CHIP2_RX_RING_MAP);
-	wlan_cfg_ctx->mlo_chip_rx_ring_map[2] = rx_ring_map;
-	wlan_cfg_ctx->mlo_chip_default_rx_ring_id[2] =
-			wlan_cfg_get_lsb_set_pos(rx_ring_map);
-	wlan_cfg_ctx->lmac_peer_id_msb[2] = 3;
+		cfg_get(psoc, CFG_DP_MLO_RX_RING_MAP);
+	wlan_cfg_ctx->mlo_chip_rx_ring_map = rx_ring_map;
 }
 }
 #else
 #else
 static inline void
 static inline void
@@ -2637,6 +2620,14 @@ static void wlan_soc_tx_capt_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
 }
 }
 #endif
 #endif
 
 
+void
+wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
+			       struct cdp_ctrl_objmgr_psoc *psoc)
+{
+	wlan_cfg_ctx->reo_rings_mapping = cfg_get(psoc,
+						  CFG_DP_REO_RINGS_MAP);
+}
+
 /**
 /**
  * wlan_cfg_soc_attach() - Allocate and prepare SoC configuration
  * wlan_cfg_soc_attach() - Allocate and prepare SoC configuration
  * @psoc - Object manager psoc
  * @psoc - Object manager psoc
@@ -3983,24 +3974,9 @@ wlan_cfg_set_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg,
 
 
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 uint8_t
 uint8_t
-wlan_cfg_mlo_rx_ring_map_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
-					uint8_t chip_id)
-{
-	return cfg->mlo_chip_rx_ring_map[chip_id];
-}
-
-uint8_t
-wlan_cfg_mlo_default_rx_ring_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
-					    uint8_t chip_id)
-{
-	return cfg->mlo_chip_default_rx_ring_id[chip_id];
-}
-
-uint8_t
-wlan_cfg_mlo_lmac_peer_id_msb_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
-					     uint8_t chip_id)
+wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt *cfg)
 {
 {
-	return cfg->lmac_peer_id_msb[chip_id];
+	return cfg->mlo_chip_rx_ring_map;
 }
 }
 #endif
 #endif
 
 

+ 13 - 32
wlan_cfg/wlan_cfg.h

@@ -260,8 +260,6 @@ struct wlan_srng_cfg {
  * @tx_rings_grp_bitmap: bitmap of group intr contexts which have
  * @tx_rings_grp_bitmap: bitmap of group intr contexts which have
  *  non-zero tx ring mask
  *  non-zero tx ring mask
  * @mlo_chip_rx_ring_map: map of chip_id to rx ring map
  * @mlo_chip_rx_ring_map: map of chip_id to rx ring map
- * @mlo_chip_default_rx_ring_id: default rx_ring of chip when hash is not found
- * @lmac_peer_id_msb: value used for hash based routing
  * @vdev_stats_hw_offload_config: HW vdev stats config
  * @vdev_stats_hw_offload_config: HW vdev stats config
  * @vdev_stats_hw_offload_timer: HW vdev stats timer duration
  * @vdev_stats_hw_offload_timer: HW vdev stats timer duration
  * @txmon_hw_support: TxMON HW support
  * @txmon_hw_support: TxMON HW support
@@ -424,9 +422,7 @@ struct wlan_cfg_dp_soc_ctxt {
 	uint8_t rx_rel_wbm2sw_ring_id;
 	uint8_t rx_rel_wbm2sw_ring_id;
 	uint32_t tx_rings_grp_bitmap;
 	uint32_t tx_rings_grp_bitmap;
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
-	uint8_t mlo_chip_rx_ring_map[WLAN_MAX_MLO_CHIPS];
-	uint8_t mlo_chip_default_rx_ring_id[WLAN_MAX_MLO_CHIPS];
-	uint8_t lmac_peer_id_msb[WLAN_MAX_MLO_CHIPS];
+	uint8_t mlo_chip_rx_ring_map;
 #endif
 #endif
 #ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
 #ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
 	bool vdev_stats_hw_offload_config;
 	bool vdev_stats_hw_offload_config;
@@ -2099,38 +2095,13 @@ wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg);
 
 
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 /**
 /**
- * wlan_cfg_mlo_rx_ring_map_get_by_chip_id() - get rx ring map
+ * wlan_cfg_mlo_rx_ring_map_get() - get rx ring map
  * @cfg: soc configuration context
  * @cfg: soc configuration context
- * @chip_id: mlo_chip_id
  *
  *
  * Return: rx_ring_map
  * Return: rx_ring_map
  */
  */
 uint8_t
 uint8_t
-wlan_cfg_mlo_rx_ring_map_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
-					uint8_t chip_id);
-
-/**
- * wlan_cfg_mlo_default_rx_ring_get_by_chip_id() - get default RX ring
- * @cfg: soc configuration context
- * @chip_id: mlo_chip_id
- *
- * Return: default rx ring
- */
-uint8_t
-wlan_cfg_mlo_default_rx_ring_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
-					    uint8_t chip_id);
-
-/**
- * wlan_cfg_mlo_lmac_peer_id_msb_get_by_chip_id() - get chip's lmac_peer_id_msb
- * @cfg: soc configuration context
- * @chip_id: mlo_chip_id
- *
- * Return: lmac_peer_id_msb
- */
-uint8_t
-wlan_cfg_mlo_lmac_peer_id_msb_get_by_chip_id(struct wlan_cfg_dp_soc_ctxt *cfg,
-					     uint8_t chip_id);
-
+wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt *cfg);
 #endif
 #endif
 
 
 /*
 /*
@@ -2194,4 +2165,14 @@ wlan_cfg_get_tx_capt_max_mem(struct wlan_cfg_dp_soc_ctxt *cfg)
  */
  */
 uint8_t wlan_cfg_get_napi_scale_factor(struct wlan_cfg_dp_soc_ctxt *cfg);
 uint8_t wlan_cfg_get_napi_scale_factor(struct wlan_cfg_dp_soc_ctxt *cfg);
 
 
+/**
+ * wlan_cfg_soc_update_tgt_params() - Update band specific params
+ * @wlan_cfg_ctx - SOC cfg context
+ * @ctrl_obj - PSOC object
+ *
+ * Return: void
+ */
+void
+wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
+			       struct cdp_ctrl_objmgr_psoc *ctrl_obj);
 #endif /*__WLAN_CFG_H*/
 #endif /*__WLAN_CFG_H*/