diff options
author | Daniel Golle <daniel@makrotopia.org> | 2018-04-12 13:07:22 +0200 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2018-04-13 03:27:01 +0200 |
commit | d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884 (patch) | |
tree | aa77211ec0f1b6add8ea048d789fb1061f9089b5 /package/network/services/hostapd/patches/0110-mesh-consider-mesh-interface-on-dfs-event-handler.patch | |
parent | b28e995fc736a78adda9e3c554653c795bd408b0 (diff) | |
download | mtk-20170518-d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884.zip mtk-20170518-d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884.tar.gz mtk-20170518-d88934aa5aa9b61ec66a6f7ae0fb61d1ef889884.tar.bz2 |
hostapd: update to git snapshot of 2018-04-09
And import patchset to allow 802.11s mesh on DFS channels, see also
http://lists.infradead.org/pipermail/hostap/2018-April/038418.html
Fix sae_password for encryption mesh (sent upstream as well).
Also refreshed existing patches and fixed 463-add-mcast_rate-to-11s.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'package/network/services/hostapd/patches/0110-mesh-consider-mesh-interface-on-dfs-event-handler.patch')
-rw-r--r-- | package/network/services/hostapd/patches/0110-mesh-consider-mesh-interface-on-dfs-event-handler.patch | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/0110-mesh-consider-mesh-interface-on-dfs-event-handler.patch b/package/network/services/hostapd/patches/0110-mesh-consider-mesh-interface-on-dfs-event-handler.patch new file mode 100644 index 0000000..0c78dd4 --- /dev/null +++ b/package/network/services/hostapd/patches/0110-mesh-consider-mesh-interface-on-dfs-event-handler.patch @@ -0,0 +1,138 @@ +From d0a0e1030005834b99225feb64ec3794d31beab0 Mon Sep 17 00:00:00 2001 +From: Peter Oh <peter.oh@bowerswilkins.com> +Date: Thu, 12 Apr 2018 02:49:07 -0700 +Subject: [PATCH 10/15] mesh: consider mesh interface on dfs event handler + +Once mesh starts supporting DFS channels, it has to handle DFS related events +from drivers, hence add mesh interface to the check list. + +Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com> +--- + wpa_supplicant/ap.c | 55 ++++++++++++++++++++++++++++++++--------- + wpa_supplicant/events.c | 1 + + 2 files changed, 44 insertions(+), 12 deletions(-) + +--- a/wpa_supplicant/ap.c ++++ b/wpa_supplicant/ap.c +@@ -1328,13 +1328,18 @@ int ap_ctrl_iface_chanswitch(struct wpa_ + void wpas_ap_ch_switch(struct wpa_supplicant *wpa_s, int freq, int ht, + int offset, int width, int cf1, int cf2) + { ++ struct hostapd_iface *iface = wpa_s->ap_iface; ++ + if (!wpa_s->ap_iface) +- return; ++ if (!wpa_s->ifmsh) ++ return; ++ else ++ iface = wpa_s->ifmsh; + + wpa_s->assoc_freq = freq; + if (wpa_s->current_ssid) + wpa_s->current_ssid->frequency = freq; +- hostapd_event_ch_switch(wpa_s->ap_iface->bss[0], freq, ht, ++ hostapd_event_ch_switch(iface->bss[0], freq, ht, + offset, width, cf1, cf2); + } + +@@ -1531,10 +1536,15 @@ int wpas_ap_pmksa_cache_add_external(str + void wpas_event_dfs_radar_detected(struct wpa_supplicant *wpa_s, + struct dfs_event *radar) + { ++ struct hostapd_iface *iface = wpa_s->ap_iface; ++ + if (!wpa_s->ap_iface || !wpa_s->ap_iface->bss[0]) +- return; ++ if (!wpa_s->ifmsh || !wpa_s->ifmsh->bss[0]) ++ return; ++ else ++ iface = wpa_s->ifmsh; + wpa_printf(MSG_DEBUG, "DFS radar detected on %d MHz", radar->freq); +- hostapd_dfs_radar_detected(wpa_s->ap_iface, radar->freq, ++ hostapd_dfs_radar_detected(iface, radar->freq, + radar->ht_enabled, radar->chan_offset, + radar->chan_width, + radar->cf1, radar->cf2); +@@ -1544,10 +1554,15 @@ void wpas_event_dfs_radar_detected(struc + void wpas_event_dfs_cac_started(struct wpa_supplicant *wpa_s, + struct dfs_event *radar) + { ++ struct hostapd_iface *iface = wpa_s->ap_iface; ++ + if (!wpa_s->ap_iface || !wpa_s->ap_iface->bss[0]) +- return; ++ if (!wpa_s->ifmsh || !wpa_s->ifmsh->bss[0]) ++ return; ++ else ++ iface = wpa_s->ifmsh; + wpa_printf(MSG_DEBUG, "DFS CAC started on %d MHz", radar->freq); +- hostapd_dfs_start_cac(wpa_s->ap_iface, radar->freq, ++ hostapd_dfs_start_cac(iface, radar->freq, + radar->ht_enabled, radar->chan_offset, + radar->chan_width, radar->cf1, radar->cf2); + } +@@ -1556,10 +1571,16 @@ void wpas_event_dfs_cac_started(struct w + void wpas_event_dfs_cac_finished(struct wpa_supplicant *wpa_s, + struct dfs_event *radar) + { ++ struct hostapd_iface *iface = wpa_s->ap_iface; ++ + if (!wpa_s->ap_iface || !wpa_s->ap_iface->bss[0]) +- return; ++ if (!wpa_s->ifmsh || !wpa_s->ifmsh->bss[0]) ++ return; ++ else ++ iface = wpa_s->ifmsh; ++ + wpa_printf(MSG_DEBUG, "DFS CAC finished on %d MHz", radar->freq); +- hostapd_dfs_complete_cac(wpa_s->ap_iface, 1, radar->freq, ++ hostapd_dfs_complete_cac(iface, 1, radar->freq, + radar->ht_enabled, radar->chan_offset, + radar->chan_width, radar->cf1, radar->cf2); + } +@@ -1568,10 +1589,15 @@ void wpas_event_dfs_cac_finished(struct + void wpas_event_dfs_cac_aborted(struct wpa_supplicant *wpa_s, + struct dfs_event *radar) + { ++ struct hostapd_iface *iface = wpa_s->ap_iface; ++ + if (!wpa_s->ap_iface || !wpa_s->ap_iface->bss[0]) +- return; ++ if (!wpa_s->ifmsh || !wpa_s->ifmsh->bss[0]) ++ return; ++ else ++ iface = wpa_s->ifmsh; + wpa_printf(MSG_DEBUG, "DFS CAC aborted on %d MHz", radar->freq); +- hostapd_dfs_complete_cac(wpa_s->ap_iface, 0, radar->freq, ++ hostapd_dfs_complete_cac(iface, 0, radar->freq, + radar->ht_enabled, radar->chan_offset, + radar->chan_width, radar->cf1, radar->cf2); + } +@@ -1580,10 +1606,15 @@ void wpas_event_dfs_cac_aborted(struct w + void wpas_event_dfs_cac_nop_finished(struct wpa_supplicant *wpa_s, + struct dfs_event *radar) + { ++ struct hostapd_iface *iface = wpa_s->ap_iface; ++ + if (!wpa_s->ap_iface || !wpa_s->ap_iface->bss[0]) +- return; ++ if (!wpa_s->ifmsh || !wpa_s->ifmsh->bss[0]) ++ return; ++ else ++ iface = wpa_s->ifmsh; + wpa_printf(MSG_DEBUG, "DFS NOP finished on %d MHz", radar->freq); +- hostapd_dfs_nop_finished(wpa_s->ap_iface, radar->freq, ++ hostapd_dfs_nop_finished(iface, radar->freq, + radar->ht_enabled, radar->chan_offset, + radar->chan_width, radar->cf1, radar->cf2); + } +--- a/wpa_supplicant/events.c ++++ b/wpa_supplicant/events.c +@@ -4168,6 +4168,7 @@ void wpa_supplicant_event(void *ctx, enu + + if (wpa_s->current_ssid->mode == WPAS_MODE_AP || + wpa_s->current_ssid->mode == WPAS_MODE_P2P_GO || ++ wpa_s->current_ssid->mode == WPAS_MODE_MESH || + wpa_s->current_ssid->mode == + WPAS_MODE_P2P_GROUP_FORMATION) { + wpas_ap_ch_switch(wpa_s, data->ch_switch.freq, |