#endif /* NEED_AP_MLME */
+#ifdef CONFIG_IEEE80211AX
+static void hostapd_event_color_change(struct hostapd_data *hapd, bool success)
+{
+ struct hostapd_data *bss;
+ size_t i;
+
+ for (i = 0; i < hapd->iface->num_bss; i++) {
+ bss = hapd->iface->bss[i];
+ if (bss->cca_color == 0)
+ continue;
+
+ if (success)
+ hapd->iface->conf->he_op.he_bss_color = bss->cca_color;
+
+ bss->cca_in_progress = 0;
+ if (ieee802_11_set_beacon(bss)) {
+ wpa_printf(MSG_ERROR, "Failed to remove BCCA element");
+ bss->cca_in_progress = 1;
+ } else {
+ hostapd_cleanup_cca_params(bss);
+ }
+ }
+}
+#endif /* CONFIG_IEEE80211AX */
+
+
void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
union wpa_event_data *data)
{
case EVENT_CCA_ABORTED_NOTIFY:
wpa_printf(MSG_DEBUG, "CCA aborted on %s",
hapd->conf->iface);
- hostapd_cleanup_cca_params(hapd);
+ hostapd_event_color_change(hapd, false);
break;
case EVENT_CCA_NOTIFY:
wpa_printf(MSG_DEBUG, "CCA finished on %s",
hapd->conf->iface);
- if (hapd->cca_color)
- hapd->iface->conf->he_op.he_bss_color = hapd->cca_color;
- hostapd_cleanup_cca_params(hapd);
+ hostapd_event_color_change(hapd, true);
break;
#endif /* CONFIG_IEEE80211AX */
default: