Browse Source

qcacmn: Add QDF abstraction for IPA enums

Add QDF abstraction for Linux kernel IPA driver enums.

Change-Id: I9b61917768a109d12aefdc19a7822287337c9c18
CRs-Fixed: 2194166
Sravan Kumar Kairam 7 years ago
parent
commit
4af5290d97
5 changed files with 174 additions and 4 deletions
  1. 58 1
      qdf/inc/qdf_ipa.h
  2. 4 1
      qdf/inc/qdf_ipa_wdi3.h
  3. 30 1
      qdf/linux/src/i_qdf_ipa.h
  4. 4 1
      qdf/linux/src/i_qdf_ipa_wdi3.h
  5. 78 0
      qdf/linux/src/qdf_ipa.c

+ 58 - 1
qdf/inc/qdf_ipa.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2018, The Linux Foundation. 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
@@ -17,8 +17,40 @@
 #ifndef _QDF_IPA_H
 #define _QDF_IPA_H
 
+#ifdef IPA_OFFLOAD
+
 #include <i_qdf_ipa.h>
 
+/**
+ * enum qdf_ipa_wlan_event - QDF IPA events
+ * @QDF_IPA_CLIENT_CONNECT: Client Connects
+ * @QDF_IPA_CLIENT_DISCONNECT: Client Disconnects
+ * @QDF_IPA_AP_CONNECT: SoftAP is started
+ * @QDF_IPA_AP_DISCONNECT: SoftAP is stopped
+ * @QDF_IPA_STA_CONNECT: STA associates to AP
+ * @QDF_IPA_STA_DISCONNECT: STA dissociates from AP
+ * @QDF_IPA_CLIENT_CONNECT_EX: Peer associates/re-associates to softap
+ * @QDF_SWITCH_TO_SCC: WLAN interfaces in scc mode
+ * @QDF_SWITCH_TO_MCC: WLAN interfaces in mcc mode
+ * @QDF_WDI_ENABLE: WDI enable complete
+ * @QDF_WDI_DISABLE: WDI teardown
+ * @QDF_IPA_WLAN_EVENT_MAX: Max value for the enum
+ */
+typedef enum {
+	QDF_IPA_CLIENT_CONNECT,
+	QDF_IPA_CLIENT_DISCONNECT,
+	QDF_IPA_AP_CONNECT,
+	QDF_IPA_AP_DISCONNECT,
+	QDF_IPA_STA_CONNECT,
+	QDF_IPA_STA_DISCONNECT,
+	QDF_IPA_CLIENT_CONNECT_EX,
+	QDF_SWITCH_TO_SCC,
+	QDF_SWITCH_TO_MCC,
+	QDF_WDI_ENABLE,
+	QDF_WDI_DISABLE,
+	QDF_IPA_WLAN_EVENT_MAX
+} qdf_ipa_wlan_event;
+
 /**
  * qdf_ipa_wdi_meter_evt_type_t - type of event client callback is
  * for AP+STA mode metering
@@ -200,6 +232,23 @@ typedef __qdf_ipa_wlan_hdr_attrib_val_t qdf_ipa_wlan_hdr_attrib_val_t;
 typedef int (*qdf_ipa_msg_pull_fn)(void *buff, u32 len, u32 type);
 typedef void (*qdf_ipa_ready_cb)(void *user_data);
 
+#define QDF_IPA_SET_META_MSG_TYPE(meta, msg_type) \
+	__QDF_IPA_SET_META_MSG_TYPE(meta, msg_type)
+
+#define QDF_IPA_RM_RESOURCE_GRANTED __QDF_IPA_RM_RESOURCE_GRANTED
+#define QDF_IPA_RM_RESOURCE_RELEASED __QDF_IPA_RM_RESOURCE_RELEASED
+
+#define QDF_IPA_VOLTAGE_LEVEL __QDF_IPA_VOLTAGE_LEVEL
+
+#define QDF_IPA_RM_RESOURCE_WLAN_PROD __QDF_IPA_RM_RESOURCE_WLAN_PROD
+#define QDF_IPA_RM_RESOURCE_WLAN_CONS __QDF_IPA_RM_RESOURCE_WLAN_CONS
+#define QDF_IPA_RM_RESOURCE_APPS_CONS __QDF_IPA_RM_RESOURCE_APPS_CONS
+
+#define QDF_IPA_CLIENT_WLAN1_PROD __QDF_IPA_CLIENT_WLAN1_PROD
+#define QDF_IPA_CLIENT_WLAN2_CONS __QDF_IPA_CLIENT_WLAN2_CONS
+#define QDF_IPA_CLIENT_WLAN3_CONS __QDF_IPA_CLIENT_WLAN3_CONS
+#define QDF_IPA_CLIENT_WLAN4_CONS __QDF_IPA_CLIENT_WLAN4_CONS
+
 /*
  * Resume / Suspend
  */
@@ -590,4 +639,12 @@ static inline int qdf_ipa_register_ipa_ready_cb(
 	return __qdf_ipa_register_ipa_ready_cb(qdf_ipa_ready_cb, user_data);
 }
 
+#ifdef FEATURE_METERING
+static inline int qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index,
+							uint64_t quota_bytes)
+{
+	return __qdf_ipa_broadcast_wdi_quota_reach_ind(index, quota_bytes);
+}
+#endif
+#endif /* IPA_OFFLOAD */
 #endif /* _QDF_IPA_H */

+ 4 - 1
qdf/inc/qdf_ipa_wdi3.h

@@ -22,6 +22,8 @@
 #ifndef _QDF_IPA_WDI3_H
 #define _QDF_IPA_WDI3_H
 
+#ifdef IPA_OFFLOAD
+
 #ifdef CONFIG_IPA_WDI_UNIFIED_API
 
 #include <qdf_ipa.h>
@@ -341,4 +343,5 @@ static inline int qdf_ipa_wdi3_set_perf_profile(
 
 #endif /* CONFIG_IPA_WDI_UNIFIED_API */
 
-#endif
+#endif /* IPA_OFFLOAD */
+#endif /* _QDF_IPA_WDI3_H */

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

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2018, The Linux Foundation. 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
@@ -17,6 +17,8 @@
 #ifndef _I_QDF_IPA_H
 #define _I_QDF_IPA_H
 
+#ifdef IPA_OFFLOAD
+
 #include <linux/ipa.h>
 
 /**
@@ -482,6 +484,23 @@ typedef struct ipa_ioc_rx_intf_prop __qdf_ipa_ioc_rx_intf_prop_t;
 
 typedef struct ipa_wlan_hdr_attrib_val __qdf_ipa_wlan_hdr_attrib_val_t;
 
+#define __QDF_IPA_SET_META_MSG_TYPE(meta, msg_type)	\
+	__qdf_ipa_set_meta_msg_type(meta, msg_type)
+
+#define __QDF_IPA_RM_RESOURCE_GRANTED IPA_RM_RESOURCE_GRANTED
+#define __QDF_IPA_RM_RESOURCE_RELEASED IPA_RM_RESOURCE_RELEASED
+
+#define __QDF_IPA_RM_RESOURCE_WLAN_PROD IPA_RM_RESOURCE_WLAN_PROD
+#define __QDF_IPA_RM_RESOURCE_WLAN_CONS IPA_RM_RESOURCE_WLAN_CONS
+#define __QDF_IPA_RM_RESOURCE_APPS_CONS IPA_RM_RESOURCE_APPS_CONS
+
+#define __QDF_IPA_VOLTAGE_LEVEL IPA_VOLTAGE_SVS
+
+#define __QDF_IPA_CLIENT_WLAN1_PROD IPA_CLIENT_WLAN1_PROD
+#define __QDF_IPA_CLIENT_WLAN2_CONS IPA_CLIENT_WLAN2_CONS
+#define __QDF_IPA_CLIENT_WLAN3_CONS IPA_CLIENT_WLAN3_CONS
+#define __QDF_IPA_CLIENT_WLAN4_CONS IPA_CLIENT_WLAN4_CONS
+
 /*
  * Resume / Suspend
  */
@@ -886,4 +905,14 @@ static inline int __qdf_ipa_register_ipa_ready_cb(
 	return ipa_register_ipa_ready_cb(ipa_ready_cb, user_data);
 }
 
+#ifdef FEATURE_METERING
+static inline int __qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index,
+							  uint64_t quota_bytes)
+{
+	return ipa_broadcast_wdi_quota_reach_ind(index, quota_bytes);
+}
+#endif
+
+void __qdf_ipa_set_meta_msg_type(__qdf_ipa_msg_meta_t *meta, int type);
+#endif /* IPA_OFFLOAD */
 #endif /* _I_QDF_IPA_H */

+ 4 - 1
qdf/linux/src/i_qdf_ipa_wdi3.h

@@ -22,6 +22,8 @@
 #ifndef I_QDF_IPA_WDI_H
 #define I_QDF_IPA_WDI_H
 
+#ifdef IPA_OFFLOAD
+
 #include <qdf_status.h>         /* QDF_STATUS */
 #include <linux/ipa_wdi3.h>
 
@@ -552,4 +554,5 @@ static inline int __qdf_ipa_wdi3_set_perf_profile(
 
 #endif /* CONFIG_IPA_WDI_UNIFIED_API */
 
-#endif
+#endif /* IPA_OFFLOAD */
+#endif /* I_QDF_IPA_WDI_H */

+ 78 - 0
qdf/linux/src/qdf_ipa.c

@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018 The Linux Foundation. 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 copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: qdf_ipa.c
+ *
+ * This source file contains linux specific definitions for QDF IPA APIs
+ */
+
+/* Include Files */
+#include <qdf_ipa.h>
+
+static enum ipa_wlan_event __qdf_to_ipa_wlan_event(int qdf_ipa_event)
+{
+	enum ipa_wlan_event ipa_event;
+
+	switch (qdf_ipa_event) {
+	case QDF_IPA_CLIENT_CONNECT:
+		ipa_event = WLAN_CLIENT_CONNECT;
+		break;
+	case QDF_IPA_CLIENT_DISCONNECT:
+		ipa_event = WLAN_CLIENT_DISCONNECT;
+		break;
+	case QDF_IPA_AP_CONNECT:
+		ipa_event = WLAN_AP_CONNECT;
+		break;
+	case QDF_IPA_AP_DISCONNECT:
+		ipa_event = WLAN_AP_DISCONNECT;
+		break;
+	case QDF_IPA_STA_CONNECT:
+		ipa_event = WLAN_STA_CONNECT;
+		break;
+	case QDF_IPA_STA_DISCONNECT:
+		ipa_event = WLAN_STA_DISCONNECT;
+		break;
+	case QDF_IPA_CLIENT_CONNECT_EX:
+		ipa_event = WLAN_CLIENT_CONNECT_EX;
+		break;
+	case QDF_SWITCH_TO_SCC:
+		ipa_event = WLAN_SWITCH_TO_SCC;
+		break;
+	case QDF_SWITCH_TO_MCC:
+		ipa_event = WLAN_SWITCH_TO_MCC;
+		break;
+	case QDF_WDI_ENABLE:
+		ipa_event = WLAN_WDI_ENABLE;
+		break;
+	case QDF_WDI_DISABLE:
+		ipa_event = WLAN_WDI_DISABLE;
+		break;
+	case QDF_IPA_WLAN_EVENT_MAX:
+	default:
+		ipa_event = IPA_WLAN_EVENT_MAX;
+		break;
+	}
+
+	return ipa_event;
+}
+
+void __qdf_ipa_set_meta_msg_type(__qdf_ipa_msg_meta_t *meta, int type)
+{
+	meta->msg_type = __qdf_to_ipa_wlan_event(type);
+}