summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h9
-rw-r--r--CORE/HDD/inc/wlan_hdd_main.h1
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c2
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c18
-rw-r--r--CORE/VOSS/src/vos_nvitem.c4
5 files changed, 33 insertions, 1 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 85f10d82603c..c71f65cc3233 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -5598,6 +5598,15 @@ void print_hdd_cfg(hdd_context_t *pHddCtx);
void hdd_set_btc_bt_wlan_interval(hdd_context_t *pHddCtx);
VOS_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss);
+/**
+ * hdd_set_dfs_regdomain() - During SSR, restore DFS regulatory domain
+ * with valid value
+ * @phddctx: context for hdd
+ * @restore: valure to verify the state
+ *
+ * Return: None
+ */
+void hdd_set_dfs_regdomain(hdd_context_t *phddctx, bool restore);
#ifdef FEATURE_WLAN_SUB_20_MHZ
uint8_t hdd_cfg_get_sub20_dyn_capabilities(hdd_context_t *hdd_ctx_ptr);
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 9691a30368c0..b912069c1d2e 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -2099,6 +2099,7 @@ struct hdd_context_s
v_U8_t last_scan_reject_session_id;
scan_reject_states last_scan_reject_reason;
v_TIME_t last_scan_reject_timestamp;
+ uint8_t hdd_dfs_regdomain;
};
/*---------------------------------------------------------------------------
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 091d1b16db1d..e6d2bec7fd37 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -2291,6 +2291,8 @@ VOS_STATUS hdd_wlan_re_init(void *hif_sc)
goto err_vosclose;
}
+ hdd_set_dfs_regdomain(pHddCtx,true);
+
vosStatus = hdd_set_sme_chan_list(pHddCtx);
if (!VOS_IS_STATUS_SUCCESS(vosStatus)) {
hddLog(VOS_TRACE_LEVEL_FATAL,
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 6c63415b5bfe..0df6fb764f07 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -13923,6 +13923,24 @@ VOS_STATUS hdd_set_sme_chan_list(hdd_context_t *hdd_ctx)
hdd_ctx->reg.cc_src);
}
+void hdd_set_dfs_regdomain(hdd_context_t *phddctx, bool restore)
+{
+ if(!restore) {
+ if (vos_nv_get_dfs_region(&phddctx->hdd_dfs_regdomain)) {
+ hddLog(VOS_TRACE_LEVEL_FATAL,
+ "%s: unable to retrieve dfs region from hdd",
+ __func__);
+ }
+ }
+ else {
+ if (vos_nv_set_dfs_region(phddctx->hdd_dfs_regdomain)) {
+ hddLog(VOS_TRACE_LEVEL_FATAL,
+ "%s: unable to set dfs region",
+ __func__);
+ }
+ }
+}
+
/**
* hdd_is_5g_supported() - to know if ini configuration supports 5GHz
* @pHddCtx: Pointer to the hdd context
diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
index 4f3c87798a7a..5cae9a048acf 100644
--- a/CORE/VOSS/src/vos_nvitem.c
+++ b/CORE/VOSS/src/vos_nvitem.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -2388,6 +2388,8 @@ int __wlan_hdd_linux_reg_notifier(struct wiphy *wiphy,
regdmn_set_dfs_region(&pHddCtx->reg);
+ hdd_set_dfs_regdomain(pHddCtx,false);
+
if ((NL80211_REGDOM_SET_BY_DRIVER == request->initiator) ||
(NL80211_REGDOM_SET_BY_USER == request->initiator))
complete(&pHddCtx->reg_init);