Sfoglia il codice sorgente

qcacmn: Handle deprecated interface calls to IPA

As IPA has moved out of the kernel, ipa_uc_reg_rdyCB
interface call from WLAN is not needed anymore
as ipa_wdi_init_per_inst() initialization call will
handle this. This change will add support to retain
this call only for legacy devices.

Change-Id: Icb479562e091d388e03ef5a38b3e95d4dbf06271
CRs-Fixed: 3459071
Namita Nair 2 anni fa
parent
commit
59a36d8e87
4 ha cambiato i file con 32 aggiunte e 8 eliminazioni
  1. 1 1
      dp/wifi3.0/dp_htt.c
  2. 2 1
      hif/inc/hif.h
  3. 7 5
      ipa/core/src/wlan_ipa_core.c
  4. 22 1
      qdf/linux/src/i_qdf_ipa.h

+ 1 - 1
dp/wifi3.0/dp_htt.c

@@ -577,7 +577,7 @@ QDF_STATUS htt_h2t_rx_cce_super_rule_setup(struct htt_soc *soc, void *param)
 
 	pkt = htt_htc_pkt_alloc(soc);
 	if (!pkt) {
-		dp_htt_err("%pK: Fail to allocate dp_htt_htc_pkt buffer");
+		dp_htt_err("Fail to allocate dp_htt_htc_pkt buffer");
 		qdf_assert(0);
 		qdf_nbuf_free(msg);
 		return QDF_STATUS_E_NOMEM;

+ 2 - 1
hif/inc/hif.h

@@ -26,6 +26,7 @@ extern "C" {
 
 /* Header files */
 #include <qdf_status.h>
+#include "qdf_ipa.h"
 #include "qdf_nbuf.h"
 #include "qdf_lro.h"
 #include "ol_if_athvar.h"
@@ -1822,7 +1823,7 @@ enum ipa_hw_type hif_get_ipa_hw_type(void)
 static inline
 bool hif_get_ipa_present(void)
 {
-	if (ipa_uc_reg_rdyCB(NULL) != -EPERM)
+	if (qdf_ipa_uc_reg_rdyCB(NULL) != -EPERM)
 		return true;
 	else
 		return false;

+ 7 - 5
ipa/core/src/wlan_ipa_core.c

@@ -2177,7 +2177,7 @@ static QDF_STATUS wlan_ipa_setup_iface(struct wlan_ipa_priv *ipa_ctx,
 	qdf_spin_unlock_bh(&iface_context->interface_lock);
 
 	status = cdp_ipa_setup_iface(ipa_ctx->dp_soc, net_dev->name,
-				     net_dev->dev_addr,
+				     (uint8_t *)net_dev->dev_addr,
 				     iface_context->prod_client,
 				     iface_context->cons_client,
 				     wlan_ipa_set_session_id(session_id,
@@ -4790,7 +4790,8 @@ void wlan_ipa_uc_cleanup_sta(struct wlan_ipa_priv *ipa_ctx,
 		if (iface_ctx && iface_ctx->device_mode == QDF_STA_MODE &&
 		    iface_ctx->dev && iface_ctx->dev == net_dev) {
 			wlan_ipa_uc_send_evt(net_dev, QDF_IPA_STA_DISCONNECT,
-					     net_dev->dev_addr, ipa_ctx);
+					     (uint8_t *)net_dev->dev_addr,
+					     ipa_ctx);
 			wlan_ipa_cleanup_iface(iface_ctx, NULL);
 		}
 	}
@@ -4809,7 +4810,8 @@ QDF_STATUS wlan_ipa_uc_disconnect_ap(struct wlan_ipa_priv *ipa_ctx,
 	iface_ctx = wlan_ipa_get_iface(ipa_ctx, QDF_SAP_MODE);
 	if (iface_ctx)
 		status = wlan_ipa_uc_send_evt(net_dev, QDF_IPA_AP_DISCONNECT,
-					      net_dev->dev_addr, ipa_ctx);
+					      (uint8_t *)net_dev->dev_addr,
+					      ipa_ctx);
 	else
 		return QDF_STATUS_E_INVAL;
 
@@ -4846,12 +4848,12 @@ void wlan_ipa_uc_ssr_cleanup(struct wlan_ipa_priv *ipa_ctx)
 			if (iface->device_mode == QDF_SAP_MODE)
 				wlan_ipa_uc_send_evt(iface->dev,
 						     QDF_IPA_AP_DISCONNECT,
-						     iface->dev->dev_addr,
+						     (uint8_t *)iface->dev->dev_addr,
 						     ipa_ctx);
 			else if (iface->device_mode == QDF_STA_MODE)
 				wlan_ipa_uc_send_evt(iface->dev,
 						     QDF_IPA_STA_DISCONNECT,
-						     iface->dev->dev_addr,
+						     (uint8_t *)iface->dev->dev_addr,
 						     ipa_ctx);
 			wlan_ipa_cleanup_iface(iface, NULL);
 		}

+ 22 - 1
qdf/linux/src/i_qdf_ipa.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -941,6 +941,11 @@ static inline int __qdf_ipa_get_wdi_stats(struct IpaHwStatsWDIInfoData_t *stats)
 	return ipa_get_wdi_stats(stats);
 }
 
+/* IPA supports this call only on legacy devices. Starting from
+ * Linux version 6.1.15, IPA has moved out of the kernel and
+ * has deprecated this call.
+ */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 15))
 static inline int __qdf_ipa_uc_reg_rdyCB(struct ipa_wdi_uc_ready_params *param)
 {
 	return ipa_uc_reg_rdyCB(param);
@@ -950,7 +955,23 @@ static inline int __qdf_ipa_uc_dereg_rdyCB(void)
 {
 	return ipa_uc_dereg_rdyCB();
 }
+#else
+/* This call has been removed from IPA since
+ * Commit-ID: b37958da466efc1320b7f97ddf876565762f05b7.
+ * This call returns 0 here as ipa_wdi_init_per_inst()
+ * call to IPA would already handle all the initialization steps
+ * and do not require WLAN to make this IPA call.
+ */
+static inline int __qdf_ipa_uc_reg_rdyCB(struct ipa_wdi_uc_ready_params *param)
+{
+	return 0;
+}
 
+static inline int __qdf_ipa_uc_dereg_rdyCB(void)
+{
+	return 0;
+}
+#endif
 static inline int __qdf_ipa_register_ipa_ready_cb(
 	void (*ipa_ready_cb)(void *user_data),
 	void *user_data)