Pārlūkot izejas kodu

qcacmn: Update the MLO ops to include attach and detach

To handle dp_mlo_ctxt assignments from the UMAC module,
moving the callers for attach and detach to the list of
MLO operations for multi chip.

CRs-Fixed: 3355400
Change-Id: Id743ec1086cf1b3ba0a3ec42212dc21c5a9ccc6b
Sreeramya Soratkal 2 gadi atpakaļ
vecāks
revīzija
27f8943f9c
3 mainītis faili ar 35 papildinājumiem un 9 dzēšanām
  1. 24 9
      dp/inc/cdp_txrx_mlo.h
  2. 9 0
      dp/inc/cdp_txrx_ops.h
  3. 2 0
      dp/wifi3.0/be/mlo/dp_mlo.c

+ 24 - 9
dp/inc/cdp_txrx_mlo.h

@@ -19,25 +19,40 @@
 
 struct cdp_mlo_ctxt;
 
-/**
- * cdp_ctrl_mlo_mgr - opaque handle for mlo manager context
- */
-struct cdp_ctrl_mlo_mgr;
-
 struct
 cdp_mlo_ctxt *dp_mlo_ctxt_attach_wifi3(struct cdp_ctrl_mlo_mgr *ctrl_ctxt);
 void dp_mlo_ctxt_detach_wifi3(struct cdp_mlo_ctxt *ml_ctxt);
 
 static inline
-struct cdp_mlo_ctxt *cdp_mlo_ctxt_attach(struct cdp_ctrl_mlo_mgr *ctrl_ctxt)
+struct cdp_mlo_ctxt *cdp_mlo_ctxt_attach(ol_txrx_soc_handle soc,
+					 struct cdp_ctrl_mlo_mgr *ctrl_ctxt)
 {
-	return dp_mlo_ctxt_attach_wifi3(ctrl_ctxt);
+	if (!soc || !soc->ops) {
+		QDF_BUG(0);
+		return NULL;
+	}
+
+	if (!soc->ops->mlo_ops ||
+	    !soc->ops->mlo_ops->mlo_ctxt_attach)
+		return NULL;
+
+	return soc->ops->mlo_ops->mlo_ctxt_attach(ctrl_ctxt);
 }
 
 static inline
-void cdp_mlo_ctxt_detach(struct cdp_mlo_ctxt *ml_ctxt)
+void cdp_mlo_ctxt_detach(ol_txrx_soc_handle soc,
+			 struct cdp_mlo_ctxt *ml_ctxt)
 {
-	dp_mlo_ctxt_detach_wifi3(ml_ctxt);
+	if (!soc || !soc->ops) {
+		QDF_BUG(0);
+		return;
+	}
+
+	if (!soc->ops->mlo_ops ||
+	    !soc->ops->mlo_ops->mlo_ctxt_detach)
+		return;
+
+	soc->ops->mlo_ops->mlo_ctxt_detach(ml_ctxt);
 }
 
 static inline void cdp_soc_mlo_soc_setup(ol_txrx_soc_handle soc,

+ 9 - 0
dp/inc/cdp_txrx_ops.h

@@ -48,6 +48,11 @@
 #define CDP_PEER_DO_NOT_START_UNMAP_TIMER      1
 
 struct hif_opaque_softc;
+/**
+ * cdp_ctrl_mlo_mgr - opaque handle for mlo manager context
+ */
+struct cdp_ctrl_mlo_mgr;
+
 
 /* same as ieee80211_nac_param */
 enum cdp_nac_param_cmd {
@@ -148,6 +153,8 @@ enum cdp_peer_txq_flush_policy {
  * @mlo_update_delta_tsf2: update delta tsf2 for link
  * @mlo_update_delta_tqm: update delta tqm for SOC
  * @mlo_update_mlo_ts_offset: update MLO timestamp offset for SOC
+ * @mlo_ctxt_attach: Attach DP MLO context
+ * @mlo_ctxt_detach: Detach DP MLO context
  */
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 struct cdp_mlo_ops {
@@ -160,6 +167,8 @@ struct cdp_mlo_ops {
 					   int8_t *vdev_ids, uint8_t num_vdevs,
 					   uint8_t vdev_id);
 	void (*mlo_setup_complete)(struct cdp_mlo_ctxt *mlo_ctxt);
+	struct cdp_mlo_ctxt *(*mlo_ctxt_attach)(struct cdp_ctrl_mlo_mgr *m_ctx);
+	void (*mlo_ctxt_detach)(struct cdp_mlo_ctxt *mlo_ctxt);
 	void (*mlo_update_delta_tsf2)(struct cdp_soc_t *soc_hdl,
 				      uint8_t pdev_id,
 				      uint64_t delta_tsf2);

+ 2 - 0
dp/wifi3.0/be/mlo/dp_mlo.c

@@ -523,6 +523,8 @@ static struct cdp_mlo_ops dp_mlo_ops = {
 	.mlo_update_delta_tsf2 = dp_mlo_update_delta_tsf2,
 	.mlo_update_delta_tqm = dp_mlo_update_delta_tqm,
 	.mlo_update_mlo_ts_offset = dp_mlo_update_mlo_ts_offset,
+	.mlo_ctxt_attach = dp_mlo_ctxt_attach_wifi3,
+	.mlo_ctxt_detach = dp_mlo_ctxt_detach_wifi3,
 };
 
 void dp_soc_mlo_fill_params(struct dp_soc *soc,