فهرست منبع

qcacmn: Setup DS VP on FW recovery

On FW recovery, do not allocate a new VP and use
the existing profile to setup DS VP

Change-Id: I330613fa104c51becc1018750edf91d8055edb01
CRs-Fixed: 3427382
Parikshit Gune 2 سال پیش
والد
کامیت
ba18ce8164
3فایلهای تغییر یافته به همراه31 افزوده شده و 0 حذف شده
  1. 3 0
      dp/inc/cdp_txrx_ops.h
  2. 27 0
      dp/inc/cdp_txrx_ppe.h
  3. 1 0
      dp/wifi3.0/be/dp_be.c

+ 3 - 0
dp/inc/cdp_txrx_ops.h

@@ -2356,6 +2356,9 @@ struct cdp_sawf_ops {
 #ifdef WLAN_SUPPORT_PPEDS
 struct cdp_ppeds_txrx_ops {
 	QDF_STATUS
+	(*ppeds_vp_setup_recovery)(struct cdp_soc_t *soc,
+				   uint8_t vdev_id, uint16_t profile_idx);
+	QDF_STATUS
 	(*ppeds_entry_attach)(struct cdp_soc_t *soc,
 			      uint8_t vdev_id, void *vpai,
 			      int32_t *ppe_vp_num,

+ 27 - 0
dp/inc/cdp_txrx_ppe.h

@@ -17,6 +17,33 @@
 #ifndef _CDP_TXRX_PPE_H_
 #define _CDP_TXRX_PPE_H_
 
+/**
+ * cdp_ppesds_vp_setup_fw_recovery() - Setup DS VP on FW recovery.
+ * @soc: data path soc handle
+ * @vdev_id: vdev id
+ * @profile_idx: DS profile index.
+ *
+ * return: qdf_status where DS VP setup is done or not.
+ */
+static inline
+QDF_STATUS cdp_ppesds_vp_setup_fw_recovery(struct cdp_soc_t *soc,
+					   uint8_t vdev_id,
+					   uint16_t profile_idx)
+{
+	if (!soc || !soc->ops || !soc->ops->ppeds_ops) {
+		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
+			  "%s invalid instance", __func__);
+		return QDF_STATUS_E_NOSUPPORT;
+	}
+
+	if (soc->ops->ppeds_ops->ppeds_vp_setup_recovery)
+		return soc->ops->ppeds_ops->ppeds_vp_setup_recovery(soc,
+								    vdev_id,
+								    profile_idx);
+
+	return QDF_STATUS_E_INVAL;
+}
+
 /**
  * cdp_ppesds_entry_attach() - attach the ppe vp interface.
  * @soc: data path soc handle

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

@@ -74,6 +74,7 @@ static struct cdp_ppeds_txrx_ops dp_ops_ppeds_be = {
 	.ppeds_update_int_pri2tid = dp_ppeds_update_int_pri2tid_be,
 	.ppeds_entry_dump = dp_ppeds_dump_ppe_vp_tbl_be,
 	.ppeds_enable_pri2tid = dp_ppeds_vdev_enable_pri2tid_be,
+	.ppeds_vp_setup_recovery = dp_ppeds_vp_setup_on_fw_recovery,
 };
 
 static void dp_ppeds_rings_status(struct dp_soc *soc)