|
@@ -1688,6 +1688,7 @@ struct wiphy_info_data {
|
|
|
int connect_supported;
|
|
|
int offchan_tx_supported;
|
|
|
int max_remain_on_chan;
|
|
|
+ int firmware_roam;
|
|
|
};
|
|
|
|
|
|
|
|
@@ -1811,6 +1812,9 @@ broken_combination:
|
|
|
if (tb[NL80211_ATTR_OFFCHANNEL_TX_OK])
|
|
|
info->offchan_tx_supported = 1;
|
|
|
|
|
|
+ if (tb[NL80211_ATTR_ROAM_SUPPORT])
|
|
|
+ info->firmware_roam = 1;
|
|
|
+
|
|
|
if (tb[NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION])
|
|
|
info->max_remain_on_chan =
|
|
|
nla_get_u32(tb[NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION]);
|
|
@@ -1884,6 +1888,11 @@ static int wpa_driver_nl80211_capa(struct wpa_driver_nl80211_data *drv)
|
|
|
drv->capa.flags |= WPA_DRIVER_FLAGS_OFFCHANNEL_TX;
|
|
|
}
|
|
|
|
|
|
+ if (info.firmware_roam) {
|
|
|
+ wpa_printf(MSG_DEBUG, "nl80211: Using driver-based roaming");
|
|
|
+ drv->capa.flags |= WPA_DRIVER_FLAGS_BSS_SELECTION;
|
|
|
+ }
|
|
|
+
|
|
|
drv->capa.flags |= WPA_DRIVER_FLAGS_SANE_ERROR_CODES;
|
|
|
drv->capa.flags |= WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC_DONE;
|
|
|
if (info.p2p_supported)
|