Handle survey event properly in wpa_supplicant

Let's reuse hostapd code for such handling. This will be useful to get
ACS support into wpa_supplicant where this one needs to handle the
survey event so it fills in the result ACS subsystem will require.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
[u.oelmann@pengutronix.de: rebased series from hostap_2_1~944 to master]
Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
This commit is contained in:
Tomasz Bursztyka 2015-11-27 12:40:36 +01:00 committed by Jouni Malinen
parent be9fe3d8af
commit 96bc508684
3 changed files with 17 additions and 4 deletions

View File

@ -945,6 +945,8 @@ static void hostapd_event_eapol_rx(struct hostapd_data *hapd, const u8 *src,
ieee802_1x_receive(hapd, src, data, data_len); ieee802_1x_receive(hapd, src, data, data_len);
} }
#endif /* HOSTAPD */
static struct hostapd_channel_data * hostapd_get_mode_channel( static struct hostapd_channel_data * hostapd_get_mode_channel(
struct hostapd_iface *iface, unsigned int freq) struct hostapd_iface *iface, unsigned int freq)
@ -1019,10 +1021,9 @@ static void hostapd_single_channel_get_survey(struct hostapd_iface *iface,
} }
static void hostapd_event_get_survey(struct hostapd_data *hapd, void hostapd_event_get_survey(struct hostapd_iface *iface,
struct survey_results *survey_results) struct survey_results *survey_results)
{ {
struct hostapd_iface *iface = hapd->iface;
struct freq_survey *survey, *tmp; struct freq_survey *survey, *tmp;
struct hostapd_channel_data *chan; struct hostapd_channel_data *chan;
@ -1054,6 +1055,7 @@ static void hostapd_event_get_survey(struct hostapd_data *hapd,
} }
#ifdef HOSTAPD
#ifdef NEED_AP_MLME #ifdef NEED_AP_MLME
static void hostapd_event_iface_unavailable(struct hostapd_data *hapd) static void hostapd_event_iface_unavailable(struct hostapd_data *hapd)
@ -1261,7 +1263,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
data->connect_failed_reason.code); data->connect_failed_reason.code);
break; break;
case EVENT_SURVEY: case EVENT_SURVEY:
hostapd_event_get_survey(hapd, &data->survey_results); hostapd_event_get_survey(hapd->iface, &data->survey_results);
break; break;
#ifdef NEED_AP_MLME #ifdef NEED_AP_MLME
case EVENT_INTERFACE_UNAVAILABLE: case EVENT_INTERFACE_UNAVAILABLE:

View File

@ -493,6 +493,9 @@ int hostapd_probe_req_rx(struct hostapd_data *hapd, const u8 *sa, const u8 *da,
int ssi_signal); int ssi_signal);
void hostapd_event_ch_switch(struct hostapd_data *hapd, int freq, int ht, void hostapd_event_ch_switch(struct hostapd_data *hapd, int freq, int ht,
int offset, int width, int cf1, int cf2); int offset, int width, int cf1, int cf2);
struct survey_results;
void hostapd_event_get_survey(struct hostapd_iface *iface,
struct survey_results *survey_results);
const struct hostapd_eap_user * const struct hostapd_eap_user *
hostapd_get_eap_user(struct hostapd_data *hapd, const u8 *identity, hostapd_get_eap_user(struct hostapd_data *hapd, const u8 *identity,

View File

@ -3938,6 +3938,14 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
data->mesh_peer.ie_len); data->mesh_peer.ie_len);
#endif /* CONFIG_MESH */ #endif /* CONFIG_MESH */
break; break;
case EVENT_SURVEY:
#ifdef CONFIG_AP
if (!wpa_s->ap_iface)
break;
hostapd_event_get_survey(wpa_s->ap_iface,
&data->survey_results);
#endif /* CONFIG_AP */
break;
default: default:
wpa_msg(wpa_s, MSG_INFO, "Unknown event %d", event); wpa_msg(wpa_s, MSG_INFO, "Unknown event %d", event);
break; break;