dpp: don't allow StartEnrollee while connected

While connected the driver ends up choosing quite small ROC
durations leading to excessive calls to ROC. This also will
negatively effect any wireless performance for the current
network and possibly lead to missed DPP frames.
This commit is contained in:
James Prestwood 2022-01-07 16:13:29 -08:00 committed by Denis Kenzior
parent 0f7ea99605
commit 786e36eee6
1 changed files with 11 additions and 0 deletions

View File

@ -1638,10 +1638,21 @@ static struct l_dbus_message *dpp_dbus_start_enrollee(struct l_dbus *dbus,
struct dpp_sm *dpp = user_data;
uint32_t freq = band_channel_to_freq(6, BAND_FREQ_2_4_GHZ);
struct l_dbus_message *reply;
struct station *station = station_find(netdev_get_ifindex(dpp->netdev));
if (dpp->state != DPP_STATE_NOTHING)
return dbus_error_busy(message);
/*
* Station isn't actually required for DPP itself, although this will
* prevent connecting to the network once configured.
*/
if (station && station_get_connected_network(station)) {
l_warn("cannot be enrollee while connected, please disconnect");
return dbus_error_busy(message);
} else
l_debug("No station device, continuing anyways...");
dpp->uri = dpp_generate_uri(dpp->pub_asn1, dpp->pub_asn1_len, 2,
netdev_get_address(dpp->netdev), &freq,
1, NULL, NULL);