Browse Source

qcacmn: Add new API to get partner soc

added a new API to get partner soc by passing chip_id
while adding and deleting flow entry.

Change-Id: Ib1d8c0dedb8e11d164f00791e59cf52ef8332cb5
CRs-Fixed: 3508805
KARTHIK KUMAR T 2 years ago
parent
commit
080c5089fd

+ 3 - 1
dp/wifi3.0/be/dp_be.c

@@ -2879,7 +2879,9 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 	arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_be;
 	arch_ops->txrx_set_vdev_param = dp_txrx_set_vdev_param_be;
 	dp_initialize_arch_ops_be_mlo(arch_ops);
-	arch_ops->dp_rx_replenish_soc_get = dp_rx_replensih_soc_get;
+#ifdef WLAN_MLO_MULTI_CHIP
+	arch_ops->dp_get_soc_by_chip_id = dp_get_soc_by_chip_id_be;
+#endif
 	arch_ops->dp_soc_get_num_soc = dp_soc_get_num_soc_be;
 	arch_ops->dp_peer_rx_reorder_queue_setup =
 					dp_peer_rx_reorder_queue_setup_be;

+ 2 - 3
dp/wifi3.0/be/dp_be_rx.c

@@ -476,7 +476,7 @@ done:
 			if (!rx_bufs_reaped[chip_id][mac_id])
 				continue;
 
-			replenish_soc = dp_rx_replensih_soc_get(soc, chip_id);
+			replenish_soc = dp_rx_replenish_soc_get(soc, chip_id);
 
 			dp_rxdma_srng =
 				&replenish_soc->rx_refill_buf_ring[mac_id];
@@ -1984,8 +1984,7 @@ done:
 			if (!rx_bufs_reaped[chip_id][mac_id])
 				continue;
 
-			replenish_soc =
-			soc->arch_ops.dp_rx_replenish_soc_get(soc, chip_id);
+			replenish_soc = dp_rx_replenish_soc_get(soc, chip_id);
 
 			dp_rxdma_srng =
 				&replenish_soc->rx_refill_buf_ring[mac_id];

+ 13 - 2
dp/wifi3.0/be/dp_be_rx.h

@@ -266,7 +266,7 @@ uint32_t dp_rx_nf_process(struct dp_intr *int_ctx,
 
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 struct dp_soc *
-dp_rx_replensih_soc_get(struct dp_soc *soc, uint8_t chip_id);
+dp_rx_replenish_soc_get(struct dp_soc *soc, uint8_t chip_id);
 
 struct dp_soc *
 dp_soc_get_by_idle_bm_id(struct dp_soc *soc, uint8_t idle_bm_id);
@@ -274,7 +274,7 @@ dp_soc_get_by_idle_bm_id(struct dp_soc *soc, uint8_t idle_bm_id);
 uint8_t dp_soc_get_num_soc_be(struct dp_soc *soc);
 #else
 static inline struct dp_soc *
-dp_rx_replensih_soc_get(struct dp_soc *soc, uint8_t chip_id)
+dp_rx_replenish_soc_get(struct dp_soc *soc, uint8_t chip_id)
 {
 	return soc;
 }
@@ -884,4 +884,15 @@ dp_rx_wbm_err_copy_desc_info_in_nbuf(struct dp_soc *soc,
 	dp_rx_set_wbm_err_info_in_nbuf(soc, nbuf, wbm_err);
 	return wbm_err.info;
 }
+
+#if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
+struct dp_soc *
+dp_get_soc_by_chip_id_be(struct dp_soc *soc, uint8_t chip_id);
+#else
+static inline struct dp_soc *
+dp_get_soc_by_chip_id_be(struct dp_soc *soc, uint8_t chip_id)
+{
+	return soc;
+}
+#endif
 #endif

+ 18 - 1
dp/wifi3.0/be/mlo/dp_mlo.c

@@ -1080,7 +1080,7 @@ void dp_mlo_get_rx_hash_key(struct dp_soc *soc,
 }
 
 struct dp_soc *
-dp_rx_replensih_soc_get(struct dp_soc *soc, uint8_t chip_id)
+dp_rx_replenish_soc_get(struct dp_soc *soc, uint8_t chip_id)
 {
 	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
 	struct dp_mlo_ctxt *mlo_ctxt = be_soc->ml_ctxt;
@@ -1687,3 +1687,20 @@ bool dp_umac_reset_is_inprogress(struct cdp_soc_t *psoc)
 	}
 }
 #endif
+
+struct dp_soc *
+dp_get_soc_by_chip_id_be(struct dp_soc *soc, uint8_t chip_id)
+{
+	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
+	struct dp_mlo_ctxt *mlo_ctxt = be_soc->ml_ctxt;
+	struct dp_soc *partner_soc;
+
+	if (!be_soc->mlo_enabled || !mlo_ctxt)
+		return soc;
+
+	if (be_soc->mlo_chip_id == chip_id)
+		return soc;
+
+	partner_soc = dp_mlo_get_soc_ref_by_chip_id(mlo_ctxt, chip_id);
+	return partner_soc;
+}

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

@@ -2205,7 +2205,7 @@ enum dp_context_type {
  * @dp_peer_rx_reorder_queue_setup: Dp peer reorder queue setup
  * @dp_find_peer_by_destmac:
  * @dp_bank_reconfig:
- * @dp_rx_replenish_soc_get:
+ * @dp_get_soc_by_chip_id: Get soc by chip id
  * @dp_soc_get_num_soc:
  * @dp_reconfig_tx_vdev_mcast_ctrl:
  * @dp_cc_reg_cfg_init:
@@ -2414,8 +2414,8 @@ struct dp_arch_ops {
 						   uint8_t vdev_id);
 	void (*dp_bank_reconfig)(struct dp_soc *soc, struct dp_vdev *vdev);
 
-	struct dp_soc * (*dp_rx_replenish_soc_get)(struct dp_soc *soc,
-						   uint8_t chip_id);
+	struct dp_soc * (*dp_get_soc_by_chip_id)(struct dp_soc *soc,
+						 uint8_t chip_id);
 
 	uint8_t (*dp_soc_get_num_soc)(struct dp_soc *soc);
 	void (*dp_reconfig_tx_vdev_mcast_ctrl)(struct dp_soc *soc,

+ 8 - 7
dp/wifi3.0/li/dp_li.c

@@ -612,12 +612,6 @@ static bool dp_reo_remap_config_li(struct dp_soc *soc,
 	return dp_reo_remap_config(soc, remap0, remap1, remap2);
 }
 
-static struct dp_soc *dp_rx_replensih_soc_get_li(struct dp_soc *soc,
-						 uint8_t chip_id)
-{
-	return soc;
-}
-
 static uint8_t dp_soc_get_num_soc_li(struct dp_soc *soc)
 {
 	return 1;
@@ -642,6 +636,13 @@ static void dp_get_vdev_stats_for_unmap_peer_li(
 {
 }
 
+static struct
+dp_soc *dp_get_soc_by_chip_id_li(struct dp_soc *soc,
+				 uint8_t chip_id)
+{
+	return soc;
+}
+
 void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
 {
 #ifndef QCA_HOST_MODE_WIFI_DISABLED
@@ -709,7 +710,7 @@ void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
 	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;
-	arch_ops->dp_rx_replenish_soc_get = dp_rx_replensih_soc_get_li;
+	arch_ops->dp_get_soc_by_chip_id = dp_get_soc_by_chip_id_li;
 	arch_ops->dp_soc_get_num_soc = dp_soc_get_num_soc_li;
 	arch_ops->get_reo_qdesc_addr = dp_rx_get_reo_qdesc_addr_li;
 	arch_ops->txrx_get_vdev_mcast_param = dp_txrx_get_vdev_mcast_param_li;

+ 7 - 2
dp/wifi3.0/li/dp_li_rx.c

@@ -1083,6 +1083,12 @@ bool dp_rx_chain_msdus_li(struct dp_soc *soc, qdf_nbuf_t nbuf,
 	return mpdu_done;
 }
 
+static struct dp_soc *dp_rx_replensih_soc_get_li(struct dp_soc *soc,
+						 uint8_t chip_id)
+{
+	return soc;
+}
+
 qdf_nbuf_t
 dp_rx_wbm_err_reap_desc_li(struct dp_intr *int_ctx, struct dp_soc *soc,
 			   hal_ring_handle_t hal_ring_hdl, uint32_t quota,
@@ -1302,8 +1308,7 @@ done:
 			continue;
 
 		replenish_soc =
-		soc->arch_ops.dp_rx_replenish_soc_get(soc, chip_id);
-
+		dp_rx_replensih_soc_get_li(soc, chip_id);
 		dp_rxdma_srng =
 			&replenish_soc->rx_refill_buf_ring[mac_id];