| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- From d0a0e1030005834b99225feb64ec3794d31beab0 Mon Sep 17 00:00:00 2001
- From: Peter Oh <[email protected]>
- 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 <[email protected]>
- ---
- 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,
|