--- src/wiphy.c | 5 +++++ src/wiphy.h | 1 + src/wsc.c | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/src/wiphy.c b/src/wiphy.c index 4446abba..e9397187 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -369,6 +369,11 @@ uint16_t wiphy_get_max_scan_ie_len(struct wiphy *wiphy) return wiphy->max_scan_ie_len; } +bool wiphy_is_scan_ie_supported(struct wiphy *wiphy) +{ + return wiphy->max_scan_ie_len ? true : false; +} + uint32_t wiphy_get_max_roc_duration(struct wiphy *wiphy) { return wiphy->max_roc_duration; diff --git a/src/wiphy.h b/src/wiphy.h index 67eafe3c..7d378aa0 100644 --- a/src/wiphy.h +++ b/src/wiphy.h @@ -65,6 +65,7 @@ bool wiphy_has_feature(struct wiphy *wiphy, uint32_t feature); bool wiphy_has_ext_feature(struct wiphy *wiphy, uint32_t feature); uint8_t wiphy_get_max_num_ssids_per_scan(struct wiphy *wiphy); uint16_t wiphy_get_max_scan_ie_len(struct wiphy *wiphy); +bool wiphy_is_scan_ie_supported(struct wiphy *wiphy); uint32_t wiphy_get_max_roc_duration(struct wiphy *wiphy); bool wiphy_supports_iftype(struct wiphy *wiphy, uint32_t iftype); const uint8_t *wiphy_get_supported_rates(struct wiphy *wiphy, unsigned int band, diff --git a/src/wsc.c b/src/wsc.c index bac6e0cc..ed211834 100644 --- a/src/wsc.c +++ b/src/wsc.c @@ -1108,6 +1108,13 @@ static void wsc_add_interface(struct netdev *netdev) struct l_dbus *dbus = dbus_get_bus(); struct wsc *wsc; + if (!wiphy_is_scan_ie_supported(netdev_get_wiphy(netdev))) { + l_info("Simple Configuration isn't supported by ifindex %u", + netdev_get_ifindex(netdev)); + + return; + } + wsc = l_new(struct wsc, 1); wsc->netdev = netdev; -- 2.21.0