aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/hostapd/patches/015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch')
-rw-r--r--package/network/services/hostapd/patches/015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch b/package/network/services/hostapd/patches/015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch
new file mode 100644
index 0000000000..9d6ac82bf6
--- /dev/null
+++ b/package/network/services/hostapd/patches/015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch
@@ -0,0 +1,47 @@
+From 48f31256ffebfc43d6b14b93597aa2c7e2975dc4 Mon Sep 17 00:00:00 2001
+From: Peter Oh <peter.oh@bowerswilkins.com>
+Date: Tue, 17 Apr 2018 21:55:12 -0700
+Subject: [PATCH 15/16] mesh: do not use offchan mgmt tx on DFS
+
+Drivers don't allow mesh to use offchannel on management Tx.
+
+Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
+---
+ src/drivers/driver_nl80211.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/src/drivers/driver_nl80211.c
++++ b/src/drivers/driver_nl80211.c
+@@ -7165,6 +7165,10 @@ static int wpa_driver_nl80211_send_actio
+ struct wpa_driver_nl80211_data *drv = bss->drv;
+ int ret = -1;
+ u8 *buf;
++ int offchanok = 1;
++ u16 num_modes, flags;
++ struct hostapd_hw_modes *modes;
++ u8 dfs_domain;
+ struct ieee80211_hdr *hdr;
+
+ wpa_printf(MSG_DEBUG, "nl80211: Send Action frame (ifindex=%d, "
+@@ -7190,6 +7194,12 @@ static int wpa_driver_nl80211_send_actio
+ os_memset(bss->rand_addr, 0, ETH_ALEN);
+ }
+
++ if (is_mesh_interface(drv->nlmode) &&
++ (modes = nl80211_get_hw_feature_data(bss, &num_modes, &flags,
++ &dfs_domain)) &&
++ ieee80211_is_dfs(freq, modes, num_modes))
++ offchanok = 0;
++
+ if (is_ap_interface(drv->nlmode) &&
+ (!(drv->capa.flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX) ||
+ (int) freq == bss->freq || drv->device_ap_sme ||
+@@ -7201,7 +7211,7 @@ static int wpa_driver_nl80211_send_actio
+ ret = nl80211_send_frame_cmd(bss, freq, wait_time, buf,
+ 24 + data_len,
+ &drv->send_action_cookie,
+- no_cck, 0, 1, NULL, 0);
++ no_cck, 0, offchanok, NULL, 0);
+
+ os_free(buf);
+ return ret;