Browse Source

qcacld-3.0: IPA offload enable compilation issue fix

Currently there is compilation issue in case of IPA
offload enable case due to code changes done as
part of DP componentization.
Fix compilation issue by adding calls to DP component APIs

Change-Id: Id545f67bff75682ceccba5725f956a89c6b9b9f8
CRs-Fixed: 3259293
Amit Mehta 2 years ago
parent
commit
5bda120bfa

+ 24 - 0
components/dp/dispatcher/inc/wlan_dp_ucfg_api.h

@@ -1198,4 +1198,28 @@ uint32_t ucfg_dp_fw_data_stall_evt_enabled(void);
  */
 uint32_t ucfg_dp_get_bus_bw_high_threshold(struct wlan_objmgr_psoc *psoc);
 
+/**
+ * ucfg_dp_event_eapol_log() - send event to wlan diag
+ * @nbuf: Network buffer ptr
+ * @dir: direction
+ * @eapol_key_info: eapol key info
+ *
+ * Return: None
+ */
+void ucfg_dp_event_eapol_log(qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
+
+/**
+ * ucfg_dp_softap_inspect_dhcp_packet() - Inspect DHCP packet
+ * @vdev: Vdev handle
+ * @nbuf: pointer to network buffer
+ * @dir: direction
+ *
+ * Inspect the Tx/Rx frame, and send DHCP START/STOP notification to the FW
+ * through WMI message, during DHCP based IP address acquisition phase.
+ *
+ * Return: error number
+ */
+QDF_STATUS
+ucfg_dp_softap_inspect_dhcp_packet(struct wlan_objmgr_vdev *vdev,
+				   qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
 #endif /* _WLAN_DP_UCFG_API_H_ */

+ 19 - 0
components/dp/dispatcher/src/wlan_dp_ucfg_api.c

@@ -2132,3 +2132,22 @@ uint32_t ucfg_dp_fw_data_stall_evt_enabled(void)
 	return cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
 			   cfg_dp_enable_data_stall) & FW_DATA_STALL_EVT_MASK;
 }
+
+void ucfg_dp_event_eapol_log(qdf_nbuf_t nbuf, enum qdf_proto_dir dir)
+{
+	dp_event_eapol_log(nbuf, dir);
+}
+
+QDF_STATUS
+ucfg_dp_softap_inspect_dhcp_packet(struct wlan_objmgr_vdev *vdev,
+				   qdf_nbuf_t nbuf, enum qdf_proto_dir dir)
+{
+	struct wlan_dp_intf *dp_intf = dp_get_vdev_priv_obj(vdev);
+
+	if (!dp_intf) {
+		dp_err("Unable to get DP interface");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	return dp_softap_inspect_dhcp_packet(dp_intf, nbuf, dir);
+}

+ 9 - 2
core/hdd/src/wlan_hdd_ipa.c

@@ -36,6 +36,8 @@
 	IS_ENABLED(CONFIG_SCHED_WALT)
 #include <linux/sched/walt.h>
 #endif
+#include "wlan_hdd_object_manager.h"
+#include "wlan_dp_ucfg_api.h"
 
 void hdd_ipa_set_tx_flow_info(void)
 {
@@ -452,6 +454,7 @@ static int hdd_ipa_aggregated_rx_ind(qdf_nbuf_t skb)
 void hdd_ipa_send_nbuf_to_network(qdf_nbuf_t nbuf, qdf_netdev_t dev)
 {
 	struct hdd_adapter *adapter = (struct hdd_adapter *) netdev_priv(dev);
+	struct wlan_objmgr_vdev *vdev;
 	int result;
 	bool delivered = false;
 	uint32_t enabled;
@@ -476,14 +479,18 @@ void hdd_ipa_send_nbuf_to_network(qdf_nbuf_t nbuf, qdf_netdev_t dev)
 	if ((adapter->device_mode == QDF_SAP_MODE) &&
 	    (qdf_nbuf_is_ipv4_dhcp_pkt(nbuf) == true)) {
 		/* Send DHCP Indication to FW */
-		hdd_softap_inspect_dhcp_packet(adapter, nbuf, QDF_RX);
+		vdev = hdd_objmgr_get_vdev_by_user(adapter, WLAN_DP_ID);
+		if (vdev) {
+			ucfg_dp_softap_inspect_dhcp_packet(vdev, nbuf, QDF_RX);
+			hdd_objmgr_put_vdev_by_user(vdev, WLAN_DP_ID);
+		}
 	}
 
 	is_eapol = qdf_nbuf_is_ipv4_eapol_pkt(nbuf);
 
 	qdf_dp_trace_set_track(nbuf, QDF_RX);
 
-	hdd_event_eapol_log(nbuf, QDF_RX);
+	ucfg_dp_event_eapol_log(nbuf, QDF_RX);
 	qdf_dp_trace_log_pkt(adapter->vdev_id,
 			     nbuf, QDF_RX, QDF_TRACE_DEFAULT_PDEV_ID);
 	DPTRACE(qdf_dp_trace(nbuf,