wlan: allow SAP to setup in 5GHz DFS channel
A new ini parameter added for allowing SAP to start in 5Ghz DFS channel also
CRs-fixed: 440003
Change-Id: Id03a6fd3ef8453c21f47ae1f094a970498f40d72
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 2c3829e..6b05dc4 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1597,6 +1597,15 @@
#define CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT ( WNI_CFG_VHT_SU_BEAMFORMEE_CAP_STADEF )
#endif
+/*
+ * SAP ALLOW All Channels
+ */
+#define CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME "gSapAllowAllChannel"
+#define CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN ( 0 )
+#define CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX ( 1 )
+#define CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT ( 0 )
+
+
/*---------------------------------------------------------------------------
Type declarations
-------------------------------------------------------------------------*/
@@ -1948,6 +1957,7 @@
v_BOOL_t enableTxLdpc;
v_U8_t enableMCCAdaptiveScheduler;
v_BOOL_t isAndroidPsEn;
+ v_BOOL_t sapAllowAllChannel;
} hdd_config_t;
/*---------------------------------------------------------------------------
Function declarations and documenation
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index dc809bd..581fc02 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -1981,6 +1981,13 @@
CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN,
CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX ),
#endif
+
+REG_VARIABLE( CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, sapAllowAllChannel,
+ VAR_FLAGS_OPTIONAL,
+ CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT,
+ CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN,
+ CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX ),
};
/*
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index d48a98d..bcd42f8 100755
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -104,6 +104,7 @@
#ifdef FEATURE_WLAN_TDLS
#include "wlan_hdd_tdls.h"
#endif
+#include "wlan_nv.h"
#define g_mode_rates_size (12)
#define a_mode_rates_size (8)
@@ -1309,30 +1310,52 @@
u8 valid_ch[WNI_CFG_VALID_CHANNEL_LIST_LEN];
u32 indx = 0;
tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(pAdapter);
+ v_U8_t fValidChannel = FALSE, count = 0;
+ hdd_config_t *hdd_pConfig_ini= (WLAN_HDD_GET_CTX(pAdapter))->cfg_ini;
num_ch = WNI_CFG_VALID_CHANNEL_LIST_LEN;
- if (0 != ccmCfgGetStr(hHal, WNI_CFG_VALID_CHANNEL_LIST,
- valid_ch, &num_ch))
+ if ( hdd_pConfig_ini->sapAllowAllChannel)
{
- hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: failed to get valid channel list\n", __func__);
- return VOS_STATUS_E_FAILURE;
- }
-
- for (indx = 0; indx < num_ch; indx++)
- {
- if (channel == valid_ch[indx])
+ /* Validate the channel */
+ for (count = RF_CHAN_1 ; count <= RF_CHAN_165 ; count++)
{
- break;
+ if ( channel == rfChannels[count].channelNum )
+ {
+ fValidChannel = TRUE;
+ break;
+ }
+ }
+ if (fValidChannel != TRUE)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: Invalid Channel [%d]", __func__, channel);
+ return VOS_STATUS_E_FAILURE;
}
}
-
- if (indx >= num_ch)
+ else
{
- hddLog(VOS_TRACE_LEVEL_ERROR,
- "%s: Invalid Channel [%d] \n", __func__, channel);
- return VOS_STATUS_E_FAILURE;
+ if (0 != ccmCfgGetStr(hHal, WNI_CFG_VALID_CHANNEL_LIST,
+ valid_ch, &num_ch))
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: failed to get valid channel list", __func__);
+ return VOS_STATUS_E_FAILURE;
+ }
+ for (indx = 0; indx < num_ch; indx++)
+ {
+ if (channel == valid_ch[indx])
+ {
+ break;
+ }
+ }
+
+ if (indx >= num_ch)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: Invalid Channel [%d]", __func__, channel);
+ return VOS_STATUS_E_FAILURE;
+ }
}
return VOS_STATUS_SUCCESS;