diff --git a/doc/dbus.doxygen b/doc/dbus.doxygen index 87f4c02fb..409db9522 100644 --- a/doc/dbus.doxygen +++ b/doc/dbus.doxygen @@ -212,6 +212,8 @@ fi.w1.wpa_supplicant1.CreateInterface. IEsaayInformation elements to used in active scan (applies only if scan type is active)No Channelsa(uu)Array of frequencies to scan in form of (center, width) in MHz.No AllowRoambTRUE (or absent) to allow a roaming decision based on the results of this scan, FALSE to prevent a roaming decision.No + NonColoc6GHzbTRUE to force scanning of non-PSC 6 GHz channels, FALSE (or absent) to skip scanning of non-PSC 6 GHz channels.No + 6GHzOnlybTRUE to scan only 6 GHz channels, FALSE (or absent) to scan all channels. Applies only if Channels is absent.No diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c index 67ce970d0..12d6f6759 100644 --- a/wpa_supplicant/dbus/dbus_new_handlers.c +++ b/wpa_supplicant/dbus/dbus_new_handlers.c @@ -1594,10 +1594,10 @@ static int wpas_dbus_get_scan_channels(DBusMessage *message, } -static int wpas_dbus_get_scan_allow_roam(DBusMessage *message, - DBusMessageIter *var, - dbus_bool_t *allow, - DBusMessage **reply) +static int wpas_dbus_get_scan_boolean(DBusMessage *message, + DBusMessageIter *var, + dbus_bool_t *allow, + DBusMessage **reply) { if (dbus_message_iter_get_arg_type(var) != DBUS_TYPE_BOOLEAN) { wpa_printf(MSG_DEBUG, "%s[dbus]: Type must be a boolean", @@ -1630,6 +1630,8 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message, struct wpa_driver_scan_params params; size_t i; dbus_bool_t allow_roam = 1; + dbus_bool_t non_coloc_6ghz = FALSE; + dbus_bool_t scan_6ghz_only = FALSE; os_memset(¶ms, 0, sizeof(params)); @@ -1661,10 +1663,22 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message, ¶ms, &reply) < 0) goto out; } else if (os_strcmp(key, "AllowRoam") == 0) { - if (wpas_dbus_get_scan_allow_roam(message, - &variant_iter, - &allow_roam, - &reply) < 0) + if (wpas_dbus_get_scan_boolean(message, + &variant_iter, + &allow_roam, + &reply) < 0) + goto out; + } else if (os_strcmp(key, "NonColoc6GHz") == 0) { + if (wpas_dbus_get_scan_boolean(message, + &variant_iter, + &non_coloc_6ghz, + &reply) < 0) + goto out; + } else if (os_strcmp(key, "6GHzOnly") == 0) { + if (wpas_dbus_get_scan_boolean(message, + &variant_iter, + &scan_6ghz_only, + &reply) < 0) goto out; } else { wpa_printf(MSG_DEBUG, "%s[dbus]: Unknown argument %s", @@ -1683,6 +1697,13 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message, goto out; } + if (non_coloc_6ghz) + params.non_coloc_6ghz = 1; + + if (scan_6ghz_only && !params.freqs) + wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211A, ¶ms, + true, false, false); + if (os_strcmp(type, "passive") == 0) { if (params.num_ssids || params.extra_ies_len) { wpa_printf(MSG_DEBUG,