Pārlūkot izejas kodu

qcacld-3.0: Refactor the Green AP configuration

Refactor the Green AP configuration so that it can be easily excluded
when the feature is not enabled, and to support transition to the
converged configuration model that is under development.

Change-Id: I275833f4c60c315937a6fba3f403eb54925e151c
CRs-Fixed: 2218656
Jeff Johnson 7 gadi atpakaļ
vecāks
revīzija
c57c13aec7

+ 2 - 36
core/hdd/inc/wlan_hdd_cfg.h

@@ -46,6 +46,7 @@
 #include "osapi_linux.h"
 #include <wmi_unified.h>
 #include "wlan_pmo_hw_filter_public_struct.h"
+#include "wlan_hdd_green_ap_cfg.h"
 
 struct hdd_context;
 
@@ -5871,35 +5872,6 @@ enum hdd_link_speed_rpt_type {
 #define CFG_ENABLE_FW_RTS_PROFILE_MAX          (66)
 #define CFG_ENABLE_FW_RTS_PROFILE_DEFAULT      (33)
 
-#ifdef WLAN_SUPPORT_GREEN_AP
-#define CFG_ENABLE_GREEN_AP_FEATURE         "gEnableGreenAp"
-#define CFG_ENABLE_GREEN_AP_FEATURE_MIN     (0)
-#define CFG_ENABLE_GREEN_AP_FEATURE_MAX     (1)
-#define CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT (1)
-
-/* Enhanced Green AP (EGAP) flags/params */
-#define CFG_ENABLE_EGAP_ENABLE_FEATURE             "gEnableEGAP"
-#define CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN         (0)
-#define CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX         (1)
-#define CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT     (1)
-
-#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE         "gEGAPInactTime"
-#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN     (0)
-#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX     (300000)
-#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT (2000)
-
-#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE          "gEGAPWaitTime"
-#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN      (0)
-#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX      (300000)
-#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT  (150)
-
-#define CFG_ENABLE_EGAP_FLAGS_FEATURE              "gEGAPFeatures"
-#define CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN          (0)
-#define CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX          (15)
-#define CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT      (3)
-/* end Enhanced Green AP flags/params */
-
-#endif
 
 #ifdef FEATURE_WLAN_FORCE_SAP_SCC
 /*
@@ -14911,13 +14883,6 @@ struct hdd_config {
 	uint8_t ignoreCAC;
 	bool IsSapDfsChSifsBurstEnabled;
 
-#ifdef WLAN_SUPPORT_GREEN_AP
-	bool enable_green_ap;
-	bool enable_egap;
-	uint32_t egap_feature_flag;
-	uint32_t egap_inact_time;
-	uint32_t egap_wait_time;
-#endif
 	/* Flag to indicate crash inject enabled or not */
 	bool crash_inject_enabled;
 	uint8_t force_sap_acs;
@@ -15303,6 +15268,7 @@ struct hdd_config {
 	uint32_t channel_select_logic_conc;
 	bool enable_bt_chain_separation;
 	uint8_t enable_tx_sch_delay;
+	HDD_GREEN_AP_CFG_FIELDS
 };
 
 #define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))

+ 7 - 45
core/hdd/src/wlan_hdd_cfg.c

@@ -48,6 +48,8 @@
 #include "wlan_hdd_he.h"
 #include <wlan_policy_mgr_api.h>
 #include "wifi_pos_api.h"
+#include "wlan_hdd_green_ap.h"
+#include "wlan_hdd_green_ap_cfg.h"
 
 static void
 cb_notify_set_roam_prefer5_g_hz(struct hdd_context *hdd_ctx, unsigned long notifyId)
@@ -3321,39 +3323,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_MAX_CONCURRENT_CONNECTIONS_MIN,
 		     CFG_MAX_CONCURRENT_CONNECTIONS_MAX),
 
-#ifdef WLAN_SUPPORT_GREEN_AP
-	REG_VARIABLE(CFG_ENABLE_GREEN_AP_FEATURE, WLAN_PARAM_Integer,
-		     struct hdd_config, enable_green_ap,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT,
-		     CFG_ENABLE_GREEN_AP_FEATURE_MIN,
-		     CFG_ENABLE_GREEN_AP_FEATURE_MAX),
-	REG_VARIABLE(CFG_ENABLE_EGAP_ENABLE_FEATURE, WLAN_PARAM_Integer,
-		     struct hdd_config, enable_egap,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT,
-		     CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN,
-		     CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX),
-	REG_VARIABLE(CFG_ENABLE_EGAP_INACT_TIME_FEATURE, WLAN_PARAM_Integer,
-		     struct hdd_config, egap_inact_time,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT,
-		     CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN,
-		     CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX),
-	REG_VARIABLE(CFG_ENABLE_EGAP_WAIT_TIME_FEATURE, WLAN_PARAM_Integer,
-		     struct hdd_config, egap_wait_time,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT,
-		     CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN,
-		     CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX),
-	REG_VARIABLE(CFG_ENABLE_EGAP_FLAGS_FEATURE, WLAN_PARAM_Integer,
-		     struct hdd_config, egap_feature_flag,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT,
-		     CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN,
-		     CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX),
-#endif
-
 	REG_VARIABLE(CFG_ENABLE_CRASH_INJECT, WLAN_PARAM_Integer,
 		     struct hdd_config, crash_inject_enabled,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -5553,6 +5522,8 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_TX_SCH_DELAY_DEFAULT,
 		     CFG_TX_SCH_DELAY_MIN,
 		     CFG_TX_SCH_DELAY_MAX),
+
+	HDD_GREEN_AP_REG_VARIABLES
 };
 
 
@@ -6917,18 +6888,9 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
 		  hdd_ctx->config->gSapPreferredChanLocation);
 	hdd_debug("Name = [gDisableDfsJapanW53] Value = [%u] ",
 		  hdd_ctx->config->gDisableDfsJapanW53);
-#ifdef WLAN_SUPPORT_GREEN_AP
-	hdd_debug("Name = [gEnableGreenAp] Value = [%u] ",
-		  hdd_ctx->config->enable_green_ap);
-	hdd_debug("Name = [gEenableEGAP] Value = [%u] ",
-		  hdd_ctx->config->enable_egap);
-	hdd_debug("Name = [gEGAPInactTime] Value = [%u] ",
-		  hdd_ctx->config->egap_inact_time);
-	hdd_debug("Name = [gEGAPWaitTime] Value = [%u] ",
-		  hdd_ctx->config->egap_wait_time);
-	hdd_debug("Name = [gEGAPFeatures] Value = [%u] ",
-		  hdd_ctx->config->egap_feature_flag);
-#endif
+
+	hdd_green_ap_print_config(hdd_ctx);
+
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 	hdd_debug("Name = [isRoamOffloadEnabled] Value = [%u]",
 		  hdd_ctx->config->isRoamOffloadEnabled);

+ 14 - 0
core/hdd/src/wlan_hdd_green_ap.c

@@ -88,6 +88,20 @@ int hdd_green_ap_enable_egap(struct hdd_context *hdd_ctx)
 	return 0;
 }
 
+void hdd_green_ap_print_config(struct hdd_context *hdd_ctx)
+{
+	hdd_debug("Name = [gEnableGreenAp] Value = [%u] ",
+		  hdd_ctx->config->enable_green_ap);
+	hdd_debug("Name = [gEenableEGAP] Value = [%u] ",
+		  hdd_ctx->config->enable_egap);
+	hdd_debug("Name = [gEGAPInactTime] Value = [%u] ",
+		  hdd_ctx->config->egap_inact_time);
+	hdd_debug("Name = [gEGAPWaitTime] Value = [%u] ",
+		  hdd_ctx->config->egap_wait_time);
+	hdd_debug("Name = [gEGAPFeatures] Value = [%u] ",
+		  hdd_ctx->config->egap_feature_flag);
+}
+
 int hdd_green_ap_update_config(struct hdd_context *hdd_ctx)
 {
 	struct green_ap_user_cfg green_ap_cfg;

+ 15 - 0
core/hdd/src/wlan_hdd_green_ap.h

@@ -56,6 +56,16 @@ void hdd_green_ap_del_sta(struct hdd_context *hdd_ctx);
  */
 int hdd_green_ap_enable_egap(struct hdd_context *hdd_ctx);
 
+/**
+ * hdd_green_ap_print_config() - Print Green AP component configuration
+ * @hdd_ctx: Global HDD context
+ *
+ * This function will print the static Green AP configuration
+ *
+ * Return: void
+ */
+void hdd_green_ap_print_config(struct hdd_context *hdd_ctx);
+
 /**
  * hdd_green_ap_update_config() - Update Green AP component configuration
  * @hdd_ctx: Global HDD context
@@ -96,6 +106,11 @@ int hdd_green_ap_enable_egap(struct hdd_context *hdd_ctx)
 	return 0;
 }
 
+static inline
+void hdd_green_ap_print_config(struct hdd_context *hdd_ctx)
+{
+}
+
 static inline
 int hdd_green_ap_update_config(struct hdd_context *hdd_ctx)
 {

+ 108 - 0
core/hdd/src/wlan_hdd_green_ap_cfg.h

@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2012-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.
+ */
+
+#ifdef WLAN_SUPPORT_GREEN_AP
+
+#define CFG_ENABLE_GREEN_AP_FEATURE         "gEnableGreenAp"
+#define CFG_ENABLE_GREEN_AP_FEATURE_MIN     (0)
+#define CFG_ENABLE_GREEN_AP_FEATURE_MAX     (1)
+#define CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT (1)
+#define CFG_ENABLE_GREEN_AP_FEATURE_FIELD   bool enable_green_ap;
+#define CFG_ENABLE_GREEN_AP_FEATURE_REG_VARIABLE \
+	REG_VARIABLE(CFG_ENABLE_GREEN_AP_FEATURE, WLAN_PARAM_Integer,\
+		     struct hdd_config, enable_green_ap,\
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,\
+		     CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT,\
+		     CFG_ENABLE_GREEN_AP_FEATURE_MIN,\
+		     CFG_ENABLE_GREEN_AP_FEATURE_MAX),
+
+/* Enhanced Green AP (EGAP) flags/params */
+#define CFG_ENABLE_EGAP_ENABLE_FEATURE             "gEnableEGAP"
+#define CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN         (0)
+#define CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX         (1)
+#define CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT     (1)
+#define CFG_ENABLE_EGAP_ENABLE_FEATURE_FIELD       bool enable_egap;
+#define CFG_ENABLE_EGAP_ENABLE_FEATURE_REG_VARIABLE \
+	REG_VARIABLE(CFG_ENABLE_EGAP_ENABLE_FEATURE, WLAN_PARAM_Integer,\
+		     struct hdd_config, enable_egap,\
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,\
+		     CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT,\
+		     CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN,\
+		     CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX),
+
+#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE         "gEGAPInactTime"
+#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN     (0)
+#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX     (300000)
+#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT (2000)
+#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_FIELD   uint32_t egap_inact_time;
+#define CFG_ENABLE_EGAP_INACT_TIME_FEATURE_REG_VARIABLE \
+	REG_VARIABLE(CFG_ENABLE_EGAP_INACT_TIME_FEATURE, WLAN_PARAM_Integer,\
+		     struct hdd_config, egap_inact_time,\
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,\
+		     CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT,\
+		     CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN,\
+		     CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX),\
+
+#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE          "gEGAPWaitTime"
+#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN      (0)
+#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX      (300000)
+#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT  (150)
+#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_FIELD    uint32_t egap_wait_time;
+#define CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_REG_VARIABLE \
+	REG_VARIABLE(CFG_ENABLE_EGAP_WAIT_TIME_FEATURE, WLAN_PARAM_Integer,\
+		     struct hdd_config, egap_wait_time,\
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,\
+		     CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT,\
+		     CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN,\
+		     CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX),\
+
+#define CFG_ENABLE_EGAP_FLAGS_FEATURE              "gEGAPFeatures"
+#define CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN          (0)
+#define CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX          (15)
+#define CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT      (3)
+#define CFG_ENABLE_EGAP_FLAGS_FEATURE_FIELD        uint32_t egap_feature_flag;
+#define CFG_ENABLE_EGAP_FLAGS_FEATURE_REG_VARIABLE \
+	REG_VARIABLE(CFG_ENABLE_EGAP_FLAGS_FEATURE, WLAN_PARAM_Integer,\
+		     struct hdd_config, egap_feature_flag,\
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,\
+		     CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT,\
+		     CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN,\
+		     CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX),
+
+/* end Enhanced Green AP flags/params */
+
+#define HDD_GREEN_AP_REG_VARIABLES \
+	CFG_ENABLE_GREEN_AP_FEATURE_REG_VARIABLE \
+	CFG_ENABLE_EGAP_ENABLE_FEATURE_REG_VARIABLE \
+	CFG_ENABLE_EGAP_INACT_TIME_FEATURE_REG_VARIABLE \
+	CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_REG_VARIABLE \
+	CFG_ENABLE_EGAP_FLAGS_FEATURE_REG_VARIABLE
+
+#define HDD_GREEN_AP_CFG_FIELDS \
+	CFG_ENABLE_GREEN_AP_FEATURE_FIELD \
+	CFG_ENABLE_EGAP_ENABLE_FEATURE_FIELD \
+	CFG_ENABLE_EGAP_INACT_TIME_FEATURE_FIELD \
+	CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_FIELD \
+	CFG_ENABLE_EGAP_FLAGS_FEATURE_FIELD
+
+#else /* WLAN_SUPPORT_GREEN_AP */
+
+#define HDD_GREEN_AP_REG_VARIABLES
+#define HDD_GREEN_AP_CFG_FIELDS
+
+#endif /* WLAN_SUPPORT_GREEN_AP */