소스 검색

qcacmn: Add API to clear SOC from partner_map

Clear the target assert seen SOC from partner_map to disengage it from
umac reset process.

Change-Id: I588ae15977b1fd989b6dccb16c5fa3a5269f5f6c
CRs-Fixed: 3433794
Shashikala Prabhu 2 년 전
부모
커밋
f77ba421ee
3개의 변경된 파일42개의 추가작업 그리고 4개의 파일을 삭제
  1. 24 0
      dp/wifi3.0/be/mlo/dp_mlo.c
  2. 16 0
      dp/wifi3.0/dp_internal.h
  3. 2 4
      dp/wifi3.0/dp_main.c

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

@@ -1001,6 +1001,30 @@ static void dp_umac_reset_update_partner_map(struct dp_mlo_ctxt *mlo_ctx,
 		qdf_atomic_clear_bit(chip_id, &grp_umac_reset_ctx->partner_map);
 }
 
+QDF_STATUS dp_umac_reset_notify_asserted_soc(struct dp_soc *soc)
+{
+	struct dp_mlo_ctxt *mlo_ctx;
+	struct dp_soc_be *be_soc;
+
+	be_soc = dp_get_be_soc_from_dp_soc(soc);
+	if (!be_soc) {
+		dp_umac_reset_err("null be_soc");
+		return QDF_STATUS_E_NULL_VALUE;
+	}
+
+	mlo_ctx = be_soc->ml_ctxt;
+	if (!mlo_ctx) {
+		/* This API can be called for non-MLO SOC as well. Hence, return
+		 * the status as success when mlo_ctx is NULL.
+		 */
+		return QDF_STATUS_SUCCESS;
+	}
+
+	dp_umac_reset_update_partner_map(mlo_ctx, be_soc->mlo_chip_id, false);
+
+	return QDF_STATUS_SUCCESS;
+}
+
 /**
  * dp_umac_reset_complete_umac_recovery() - Complete Umac reset session
  * @soc: dp soc handle

+ 16 - 0
dp/wifi3.0/dp_internal.h

@@ -2753,6 +2753,22 @@ QDF_STATUS dp_mlo_umac_reset_stats_print(struct dp_soc *soc)
 
 #endif
 
+#if defined(DP_UMAC_HW_RESET_SUPPORT) && defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
+/**
+ * dp_umac_reset_notify_asserted_soc() - API to notify the asserted SOC
+ * @soc: dp soc
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS dp_umac_reset_notify_asserted_soc(struct dp_soc *soc);
+#else
+static inline
+QDF_STATUS dp_umac_reset_notify_asserted_soc(struct dp_soc *soc)
+{
+	return QDF_STATUS_SUCCESS;
+}
+#endif
+
 QDF_STATUS dp_reo_send_cmd(struct dp_soc *soc, enum hal_reo_cmd_type type,
 			   struct hal_reo_cmd_params *params,
 			   void (*callback_fn), void *data);

+ 2 - 4
dp/wifi3.0/dp_main.c

@@ -12150,16 +12150,14 @@ fail0:
  */
 static QDF_STATUS dp_soc_notify_asserted_soc(struct cdp_soc_t *psoc)
 {
-	struct dp_soc *soc =
-		(struct dp_soc *)psoc;
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	struct dp_soc *soc = (struct dp_soc *)psoc;
 
 	if (!soc) {
 		dp_cdp_err("%pK: soc is NULL", soc);
 		return QDF_STATUS_E_INVAL;
 	}
 
-	return status;
+	return dp_umac_reset_notify_asserted_soc(soc);
 }
 
 /**