diff mbox series

[v5,06/17] mesh: inform kernel driver DFS handler in userspace

Message ID ae5027310dfc5c692d4a0009d8df84d010a4cd5c.1527629631.git.peter.oh@bowerswilkins.com
State Changes Requested
Headers show
Series mesh: enable DFS channels in mesh mode | expand

Commit Message

Peter Oh May 29, 2018, 9:39 p.m. UTC
From: Peter Oh <peter.oh@bowerswilkins.com>

NL80211_ATTR_HANDLE_DFS is required by kerenel space
to enable DFS channels that indicates DFS handler
resides in userspace.

Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
---
 src/drivers/driver.h         | 1 +
 src/drivers/driver_nl80211.c | 3 +++
 wpa_supplicant/mesh.c        | 1 +
 3 files changed, 5 insertions(+)

Comments

Jouni Malinen May 31, 2018, 9:02 a.m. UTC | #1
On Tue, May 29, 2018 at 02:39:10PM -0700, peter.oh@bowerswilkins.com wrote:
> NL80211_ATTR_HANDLE_DFS is required by kerenel space
> to enable DFS channels that indicates DFS handler
> resides in userspace.

Shouldn't this be at the end of the patch series (i.e., when that actual
user space functionality is fully implemented) and not somewhere in
the middle? Please note that the expectation is that one could take a
snapshot from any commit and the outcome needs to build cleanly and work
properly.
diff mbox series

Patch

diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 9922962..8d0b054 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -1390,6 +1390,7 @@  struct wpa_driver_mesh_join_params {
 #define WPA_DRIVER_MESH_FLAG_SAE_AUTH	0x00000004
 #define WPA_DRIVER_MESH_FLAG_AMPE	0x00000008
 	unsigned int flags;
+	u8 handle_dfs;
 };
 
 /**
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 0c5c6bb..9dabebd 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -9270,6 +9270,9 @@  static int nl80211_join_mesh(struct i802_bss *bss,
 
 	wpa_printf(MSG_DEBUG, "  * flags=%08X", params->flags);
 
+	if (params->handle_dfs)
+		if (nla_put_flag(msg, NL80211_ATTR_HANDLE_DFS))
+			goto fail;
 	container = nla_nest_start(msg, NL80211_ATTR_MESH_SETUP);
 	if (!container)
 		goto fail;
diff --git a/wpa_supplicant/mesh.c b/wpa_supplicant/mesh.c
index f457615..b2ae62c 100644
--- a/wpa_supplicant/mesh.c
+++ b/wpa_supplicant/mesh.c
@@ -261,6 +261,7 @@  static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
 		conf->ieee80211d = 1;
 		conf->country[0] = wpa_s->conf->country[0];
 		conf->country[1] = wpa_s->conf->country[1];
+		wpa_s->mesh_params->handle_dfs = 1;
 	}
 
 	bss->iconf = conf;