aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShuibing Dai <shuibing@google.com>2023-05-09 06:42:02 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-05-09 06:42:02 +0000
commitdfa517168eff2c439e838294fe482f5fc3a43c1f (patch)
treefa40e45c1aa69a86ac095bd7a3ef69f3d47ce6eb
parent3b887efee513bafc72ef0095b69902f764ee0688 (diff)
parente2fad41387f69ed12ad120a39b604fa1d8d07bf5 (diff)
downloadwpa_supplicant_8-dfa517168eff2c439e838294fe482f5fc3a43c1f.tar.gz
Fix p2p on DFS channel issue: p2p_dfs_chan_enable is NOT enabled on p2p interface am: e2fad41387
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/wpa_supplicant_8/+/23063502 Change-Id: Ic503f175ecdc35d7ec0efca0760018164b23e353 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--src/p2p/p2p.c8
-rw-r--r--src/p2p/p2p.h6
-rw-r--r--wpa_supplicant/p2p_supplicant.c3
3 files changed, 16 insertions, 1 deletions
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
index 5d50726d..a1fe1213 100644
--- a/src/p2p/p2p.c
+++ b/src/p2p/p2p.c
@@ -2960,6 +2960,14 @@ bool is_p2p_6ghz_disabled(struct p2p_data *p2p)
}
+bool is_p2p_dfs_chan_enabled(struct p2p_data *p2p)
+{
+ if (p2p)
+ return p2p->cfg->p2p_dfs_chan_enable;
+ return false;
+}
+
+
struct p2p_data * p2p_init(const struct p2p_config *cfg)
{
struct p2p_data *p2p;
diff --git a/src/p2p/p2p.h b/src/p2p/p2p.h
index 27bdac3b..77841285 100644
--- a/src/p2p/p2p.h
+++ b/src/p2p/p2p.h
@@ -508,6 +508,11 @@ struct p2p_config {
bool p2p_6ghz_disable;
/**
+ * p2p_dfs_chan_enable - Enable p2p Go to operate on dfs channel
+ */
+ bool p2p_dfs_chan_enable;
+
+ /**
* pri_dev_type - Primary Device Type (see WPS)
*/
u8 pri_dev_type[8];
@@ -2114,6 +2119,7 @@ void p2p_update_channel_list(struct p2p_data *p2p,
const struct p2p_channels *cli_chan);
bool is_p2p_6ghz_disabled(struct p2p_data *p2p);
+bool is_p2p_dfs_chan_enabled(struct p2p_data *p2p);
/**
* p2p_set_best_channels - Update best channel information
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index 5cf67300..09c11e06 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -3993,7 +3993,7 @@ static int wpas_p2p_setup_channels(struct wpa_supplicant *wpa_s,
const struct oper_class_map *o = &global_op_class[op];
unsigned int ch;
struct p2p_reg_class *reg = NULL, *cli_reg = NULL;
- bool check_dfs_supported = (wpa_s->conf->p2p_dfs_chan_enable
+ bool check_dfs_supported = (is_p2p_dfs_chan_enabled(wpa_s->global->p2p)
&& is_dfs_global_op_class(o->op_class));
if ((!check_dfs_supported && o->p2p == NO_P2P_SUPP) ||
@@ -4971,6 +4971,7 @@ int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s)
p2p.p2ps_group_capability = p2ps_group_capability;
p2p.get_pref_freq_list = wpas_p2p_get_pref_freq_list;
p2p.p2p_6ghz_disable = wpa_s->conf->p2p_6ghz_disable;
+ p2p.p2p_dfs_chan_enable = wpa_s->conf->p2p_dfs_chan_enable;
os_memcpy(wpa_s->global->p2p_dev_addr, wpa_s->own_addr, ETH_ALEN);
os_memcpy(p2p.dev_addr, wpa_s->global->p2p_dev_addr, ETH_ALEN);