Browse Source

qcacld-3.0: Refactor "set dbg" ioctl processing

One of the HDD functions with the highest cyclomatic complexity is
__iw_setint_getnone(). In order to reduce the complexity there is a
plan to replace the existing switch with a vtable. As part of that
goal refactor the "set dbg" ioctl handling into separate functions.
Note that the existing logic that updates the fw_log_settings in the
HDD context is obsolete, so remove that logic as part of the
refactoring.

Change-Id: Ibf632d1ef37905ca8159ea997dc07e4f2f7d12cc
CRs-Fixed: 2348502
Jeff Johnson 6 years ago
parent
commit
22e57f1269
3 changed files with 94 additions and 76 deletions
  1. 0 1
      core/hdd/inc/wlan_hdd_main.h
  2. 0 3
      core/hdd/src/wlan_hdd_main.c
  3. 94 72
      core/hdd/src/wlan_hdd_wext.c

+ 0 - 1
core/hdd/inc/wlan_hdd_main.h

@@ -1866,7 +1866,6 @@ struct hdd_context {
 	uint8_t dev_dfs_cac_status;
 
 	bool bt_coex_mode_set;
-	struct fw_log_info fw_log_settings;
 #ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
 	qdf_mc_timer_t skip_acs_scan_timer;
 	uint8_t skip_acs_scan_status;

+ 0 - 3
core/hdd/src/wlan_hdd_main.c

@@ -9122,9 +9122,6 @@ struct hdd_context *hdd_context_create(struct device *dev)
 	if (ret)
 		goto err_hdd_objmgr_destroy;
 
-	/* Uses to enabled logging after SSR */
-	hdd_ctx->fw_log_settings.enable = hdd_ctx->config->enable_fw_log;
-
 	if (QDF_GLOBAL_FTM_MODE == hdd_get_conparam())
 		goto skip_multicast_logging;
 

+ 94 - 72
core/hdd/src/wlan_hdd_wext.c

@@ -4955,6 +4955,87 @@ static int hdd_we_set_range_ext(struct hdd_adapter *adapter, int value)
 			       value);
 }
 
+static int hdd_we_set_dbg(struct hdd_adapter *adapter,
+			  int id,
+			  const char *id_string,
+			  int value)
+{
+	int errno;
+
+	hdd_debug("%s %d", id_string, value);
+	errno = wma_cli_set_command(adapter->session_id, id, value, DBG_CMD);
+	if (errno)
+		hdd_err("Failed to set firmware, errno %d", errno);
+
+	return errno;
+}
+
+#define hdd_we_set_dbg(adapter, id, value) \
+			hdd_we_set_dbg(adapter, id, #id, value)
+
+static int hdd_we_dbglog_log_level(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_LOG_LEVEL,
+			      value);
+}
+
+static int hdd_we_dbglog_vap_enable(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_VAP_ENABLE,
+			      value);
+}
+
+static int hdd_we_dbglog_vap_disable(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_VAP_DISABLE,
+			      value);
+}
+
+static int hdd_we_dbglog_module_enable(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_MODULE_ENABLE,
+			      value);
+}
+
+static int hdd_we_dbglog_module_disable(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_MODULE_DISABLE,
+			      value);
+}
+
+static int hdd_we_dbglog_mod_log_level(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_MOD_LOG_LEVEL,
+			      value);
+}
+
+static int hdd_we_dbglog_type(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_TYPE,
+			      value);
+}
+
+static int hdd_we_dbglog_report_enable(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_DBGLOG_REPORT_ENABLE,
+			      value);
+}
+
+static int hdd_we_start_fw_profile(struct hdd_adapter *adapter, int value)
+{
+	return hdd_we_set_dbg(adapter,
+			      WMI_WLAN_PROFILE_TRIGGER_CMDID,
+			      value);
+}
+
 /**
  * iw_setint_getnone() - Generic "set integer" private ioctl handler
  * @dev: device upon which the ioctl was received
@@ -5166,92 +5247,36 @@ static int __iw_setint_getnone(struct net_device *dev,
 
 	/* Firmware debug log */
 	case WE_DBGLOG_LOG_LEVEL:
-	{
-		hdd_debug("WE_DBGLOG_LOG_LEVEL val %d", set_value);
-		hdd_ctx->fw_log_settings.dl_loglevel = set_value;
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_LOG_LEVEL,
-					  set_value, DBG_CMD);
+		ret = hdd_we_dbglog_log_level(adapter, set_value);
 		break;
-	}
 
 	case WE_DBGLOG_VAP_ENABLE:
-	{
-		hdd_debug("WE_DBGLOG_VAP_ENABLE val %d", set_value);
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_VAP_ENABLE,
-					  set_value, DBG_CMD);
+		ret = hdd_we_dbglog_vap_enable(adapter, set_value);
 		break;
-	}
 
 	case WE_DBGLOG_VAP_DISABLE:
-	{
-		hdd_debug("WE_DBGLOG_VAP_DISABLE val %d", set_value);
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_VAP_DISABLE,
-					  set_value, DBG_CMD);
+		ret = hdd_we_dbglog_vap_disable(adapter, set_value);
 		break;
-	}
 
 	case WE_DBGLOG_MODULE_ENABLE:
-	{
-		hdd_debug("WE_DBGLOG_MODULE_ENABLE val %d",
-		       set_value);
-		hdd_ctx->fw_log_settings.enable = set_value;
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_MODULE_ENABLE,
-					  set_value, DBG_CMD);
+		ret = hdd_we_dbglog_module_enable(adapter, set_value);
 		break;
-	}
 
 	case WE_DBGLOG_MODULE_DISABLE:
-	{
-		hdd_debug("WE_DBGLOG_MODULE_DISABLE val %d",
-		       set_value);
-		hdd_ctx->fw_log_settings.enable = set_value;
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_MODULE_DISABLE,
-					  set_value, DBG_CMD);
+		ret = hdd_we_dbglog_module_disable(adapter, set_value);
 		break;
-	}
-	case WE_DBGLOG_MOD_LOG_LEVEL:
-	{
-		hdd_debug("WE_DBGLOG_MOD_LOG_LEVEL val %d",
-		       set_value);
-
-		if (hdd_ctx->fw_log_settings.index >= MAX_MOD_LOGLEVEL)
-			hdd_ctx->fw_log_settings.index = 0;
-
-		hdd_ctx->fw_log_settings.
-		dl_mod_loglevel[hdd_ctx->fw_log_settings.index] =
-			set_value;
-		hdd_ctx->fw_log_settings.index++;
 
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_MOD_LOG_LEVEL,
-					  set_value, DBG_CMD);
+	case WE_DBGLOG_MOD_LOG_LEVEL:
+		ret = hdd_we_dbglog_mod_log_level(adapter, set_value);
 		break;
-	}
 
 	case WE_DBGLOG_TYPE:
-	{
-		hdd_debug("WE_DBGLOG_TYPE val %d", set_value);
-		hdd_ctx->fw_log_settings.dl_type = set_value;
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_TYPE,
-					  set_value, DBG_CMD);
+		ret = hdd_we_dbglog_type(adapter, set_value);
 		break;
-	}
+
 	case WE_DBGLOG_REPORT_ENABLE:
-	{
-		hdd_debug("WE_DBGLOG_REPORT_ENABLE val %d",
-		       set_value);
-		hdd_ctx->fw_log_settings.dl_report = set_value;
-		ret = wma_cli_set_command(adapter->session_id,
-					  WMI_DBGLOG_REPORT_ENABLE,
-					  set_value, DBG_CMD);
+		ret = hdd_we_dbglog_report_enable(adapter, set_value);
 		break;
-	}
 
 	case WE_SET_TXRX_FWSTATS:
 		ret = hdd_we_set_txrx_fwstats(adapter, set_value);
@@ -5395,14 +5420,11 @@ static int __iw_setint_getnone(struct net_device *dev,
 		sme_set_scan_disable(mac_handle, set_value);
 		break;
 	}
+
 	case WE_START_FW_PROFILE:
-	{
-		hdd_debug("WE_START_FW_PROFILE %d", set_value);
-		ret = wma_cli_set_command(adapter->session_id,
-					WMI_WLAN_PROFILE_TRIGGER_CMDID,
-					set_value, DBG_CMD);
+		ret = hdd_we_start_fw_profile(adapter, set_value);
 		break;
-	}
+
 	case WE_SET_CHANNEL:
 	{
 		hdd_debug("Set Channel %d Session ID %d mode %d", set_value,