Add an option for driver wrappers to report operational frequency

This commit is contained in:
Jouni Malinen 2009-12-28 13:23:13 +02:00 committed by Jouni Malinen
parent cd7d80f373
commit 4832ecd754
4 changed files with 16 additions and 1 deletions

View file

@ -1797,6 +1797,11 @@ union wpa_event_data {
/** /**
* beacon_ies_len - Length of beacon_ies */ * beacon_ies_len - Length of beacon_ies */
size_t beacon_ies_len; size_t beacon_ies_len;
/**
* freq - Frequency of the operational channel in MHz
*/
unsigned int freq;
} assoc_info; } assoc_info;
/** /**

View file

@ -91,6 +91,7 @@ struct wpa_driver_nl80211_data {
size_t ssid_len; size_t ssid_len;
int nlmode; int nlmode;
int ap_scan_as_station; int ap_scan_as_station;
unsigned int assoc_freq;
int monitor_sock; int monitor_sock;
int monitor_ifidx; int monitor_ifidx;
@ -536,6 +537,8 @@ static void mlme_event_assoc(struct wpa_driver_nl80211_data *drv,
len - 24 - sizeof(mgmt->u.assoc_resp); len - 24 - sizeof(mgmt->u.assoc_resp);
} }
event.assoc_info.freq = drv->assoc_freq;
wpa_supplicant_event(drv->ctx, EVENT_ASSOC, &event); wpa_supplicant_event(drv->ctx, EVENT_ASSOC, &event);
} }
@ -3442,7 +3445,9 @@ static int wpa_driver_nl80211_associate(
if (params->freq) { if (params->freq) {
wpa_printf(MSG_DEBUG, " * freq=%d", params->freq); wpa_printf(MSG_DEBUG, " * freq=%d", params->freq);
NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq); NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq);
} drv->assoc_freq = params->freq;
} else
drv->assoc_freq = 0;
if (params->ssid) { if (params->ssid) {
wpa_hexdump_ascii(MSG_DEBUG, " * SSID", wpa_hexdump_ascii(MSG_DEBUG, " * SSID",
params->ssid, params->ssid_len); params->ssid, params->ssid_len);

View file

@ -888,6 +888,8 @@ static void wpa_supplicant_event_associnfo(struct wpa_supplicant *wpa_s,
wpa_hexdump(MSG_DEBUG, "beacon_ies", wpa_hexdump(MSG_DEBUG, "beacon_ies",
data->assoc_info.beacon_ies, data->assoc_info.beacon_ies,
data->assoc_info.beacon_ies_len); data->assoc_info.beacon_ies_len);
if (data->assoc_info.freq)
wpa_printf(MSG_DEBUG, "freq=%u MHz", data->assoc_info.freq);
p = data->assoc_info.req_ies; p = data->assoc_info.req_ies;
l = data->assoc_info.req_ies_len; l = data->assoc_info.req_ies_len;
@ -975,6 +977,8 @@ static void wpa_supplicant_event_associnfo(struct wpa_supplicant *wpa_s,
wpa_sm_set_ap_rsn_ie(wpa_s->wpa, NULL, 0); wpa_sm_set_ap_rsn_ie(wpa_s->wpa, NULL, 0);
if (wpa_found || rsn_found) if (wpa_found || rsn_found)
wpa_s->ap_ies_from_associnfo = 1; wpa_s->ap_ies_from_associnfo = 1;
wpa_s->assoc_freq = data->assoc_info.freq;
} }

View file

@ -326,6 +326,7 @@ struct wpa_supplicant {
* before this has been cleared */ * before this has been cleared */
struct wpa_ssid *current_ssid; struct wpa_ssid *current_ssid;
int ap_ies_from_associnfo; int ap_ies_from_associnfo;
unsigned int assoc_freq;
/* Selected configuration (based on Beacon/ProbeResp WPA IE) */ /* Selected configuration (based on Beacon/ProbeResp WPA IE) */
int pairwise_cipher; int pairwise_cipher;