|
@@ -1719,6 +1719,29 @@ qdf_nbuf_t dp_tx_send_ipa_data_frame(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+#ifdef QCA_IPA_LL_TX_FLOW_CONTROL
|
|
|
+/**
|
|
|
+ * dp_ipa_is_target_ready() - check if target is ready or not
|
|
|
+ * @soc: datapath soc handle
|
|
|
+ *
|
|
|
+ * Return: true if target is ready
|
|
|
+ */
|
|
|
+static inline
|
|
|
+bool dp_ipa_is_target_ready(struct dp_soc *soc)
|
|
|
+{
|
|
|
+ if (hif_get_target_status(soc->hif_handle) == TARGET_STATUS_RESET)
|
|
|
+ return false;
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline
|
|
|
+bool dp_ipa_is_target_ready(struct dp_soc *soc)
|
|
|
+{
|
|
|
+ return true;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
QDF_STATUS dp_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
|
{
|
|
|
struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl);
|
|
@@ -1739,6 +1762,9 @@ QDF_STATUS dp_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
|
if (!hif_is_target_ready(HIF_GET_SOFTC(soc->hif_handle)))
|
|
|
return QDF_STATUS_E_AGAIN;
|
|
|
|
|
|
+ if (!dp_ipa_is_target_ready(soc))
|
|
|
+ return QDF_STATUS_E_AGAIN;
|
|
|
+
|
|
|
/* Call HAL API to remap REO rings to REO2IPA ring */
|
|
|
ix_map[0] = REO_REMAP_TCL;
|
|
|
ix_map[1] = REO_REMAP_SW4;
|
|
@@ -1799,6 +1825,9 @@ QDF_STATUS dp_ipa_disable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|
|
if (!hif_is_target_ready(HIF_GET_SOFTC(soc->hif_handle)))
|
|
|
return QDF_STATUS_E_AGAIN;
|
|
|
|
|
|
+ if (!dp_ipa_is_target_ready(soc))
|
|
|
+ return QDF_STATUS_E_AGAIN;
|
|
|
+
|
|
|
ix0_map[0] = REO_REMAP_TCL;
|
|
|
ix0_map[1] = REO_REMAP_SW1;
|
|
|
ix0_map[2] = REO_REMAP_SW2;
|