aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlan Peer <ilan.peer@intel.com>2016-04-25 08:24:58 (GMT)
committerJouni Malinen <j@w1.fi>2016-05-14 14:19:02 (GMT)
commit3b11ad34ebac7616255577729d731e6a363e8e75 (patch)
treec75f8f88921e3f508c1bcd8aa84ede6209a10248
parentdf49b90e35ec4dbb6c6ec3fa00965ab3f4477c63 (diff)
downloadhostap-3b11ad34ebac7616255577729d731e6a363e8e75.zip
hostap-3b11ad34ebac7616255577729d731e6a363e8e75.tar.gz
hostap-3b11ad34ebac7616255577729d731e6a363e8e75.tar.bz2
Send CTRL-EVENT-REGDOM-CHANGE event on the parent interface
The NL80211_CMD_WIPHY_REG_CHANGE can be handled by any of the interfaces that are currently controlled by the wpa_supplicant. However, some applications expect the REGDOM_CHANGE event to be sent on the control interface of the initially added interface (and do not expect the event on any of child interfaces). To resolve this, when processing NL80211_CMD_WIPHY_REG_CHANGE, find the highest parent in the chain, and use its control interface to emit the CTRL-EVENT-REGDOM-CHANGE event. Signed-off-by: Ilan Peer <ilan.peer@intel.com>
-rw-r--r--wpa_supplicant/events.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 6139033..2b7c554 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -3174,7 +3174,16 @@ static void wpa_supplicant_update_channel_list(
{
struct wpa_supplicant *ifs;
- wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_REGDOM_CHANGE "init=%s type=%s%s%s",
+ /*
+ * To allow backwards compatibility with higher level layers that
+ * assumed the REGDOM_CHANGE event is sent over the initially added
+ * interface. Find the highest parent of this interface and use it to
+ * send the event.
+ */
+ for (ifs = wpa_s; ifs->parent && ifs != ifs->parent; ifs = ifs->parent)
+ ;
+
+ wpa_msg(ifs, MSG_INFO, WPA_EVENT_REGDOM_CHANGE "init=%s type=%s%s%s",
reg_init_str(info->initiator), reg_type_str(info->type),
info->alpha2[0] ? " alpha2=" : "",
info->alpha2[0] ? info->alpha2 : "");