* spp_amsdu - SPP A-MSDU used on this connection
*/
bool spp_amsdu;
+
+ /**
+ * bssid_filter - Allowed BSSIDs for the current association
+ * This can be %NULL to indicate no constraint. */
+ const u8 *bssid_filter;
+
+ /**
+ * bssid_filter_count - Number of allowed BSSIDs
+ */
+ unsigned int bssid_filter_count;
};
enum hide_ssid {
sizeof(features), features))
goto fail;
+ if (params->bssid_filter && params->bssid_filter_count) {
+ struct nlattr *bssid_list;
+ unsigned int i;
+
+ bssid_list = nla_nest_start(
+ msg, QCA_WLAN_VENDOR_ATTR_CONNECT_EXT_ALLOWED_BSSIDS);
+ if (!bssid_list)
+ goto fail;
+
+ for (i = 0; i < params->bssid_filter_count; i++) {
+ wpa_printf(MSG_DEBUG, "- bssid_filter[%d]=" MACSTR, i,
+ MAC2STR(¶ms->bssid_filter[i * ETH_ALEN]));
+ if (nla_put(msg, i + 1, ETH_ALEN,
+ ¶ms->bssid_filter[i * ETH_ALEN]))
+ goto fail;
+ }
+
+ nla_nest_end(msg, bssid_list);
+ }
+
nla_nest_end(msg, attr);
return send_and_recv_cmd(drv, msg);
params.pbss = (ssid->pbss != 2) ? ssid->pbss : 0;
}
+ params.bssid_filter = wpa_s->bssid_filter;
+ params.bssid_filter_count = wpa_s->bssid_filter_count;
+
if (ssid->mode == WPAS_MODE_IBSS && ssid->bssid_set &&
wpa_s->conf->ap_scan == 2) {
params.bssid = ssid->bssid;