wpabuf_free(conf->lci);
conf->lci = NULL;
}
+ if (conf->lci) {
+ /* Enable LCI capability in RM Enabled Capabilities
+ * element */
+ bss->radio_measurements[1] |=
+ WLAN_RRM_CAPS_LCI_MEASUREMENT;
+ } else {
+ bss->radio_measurements[1] &=
+ ~WLAN_RRM_CAPS_LCI_MEASUREMENT;
+ }
} else if (os_strcmp(buf, "civic") == 0) {
wpabuf_free(conf->civic);
conf->civic = wpabuf_parse_bin(pos);
wpabuf_free(conf->civic);
conf->civic = NULL;
}
+ if (conf->civic) {
+ /* Enable civic location capability in RM Enabled
+ * Capabilities element */
+ bss->radio_measurements[4] |=
+ WLAN_RRM_CAPS_CIVIC_LOCATION_MEASUREMENT;
+ } else {
+ bss->radio_measurements[4] &=
+ ~WLAN_RRM_CAPS_CIVIC_LOCATION_MEASUREMENT;
+ }
} else if (os_strcmp(buf, "rrm_neighbor_report") == 0) {
if (atoi(pos))
bss->radio_measurements[0] |=
/* Bit 13 - Collocated Interference Reporting */
*pos |= 0x20;
}
+ if (hapd->iface->conf->civic)
+ *pos |= 0x40; /* Bit 14 - Civic Location */
+ if (hapd->iface->conf->lci)
+ *pos |= 0x80; /* Bit 15 - Geospatial Location */
break;
case 2: /* Bits 16-23 */
if (hapd->conf->wnm_sleep_mode)
#define WLAN_RRM_CAPS_LCI_MEASUREMENT BIT(4)
/* byte 5 (out of 5) */
#define WLAN_RRM_CAPS_FTM_RANGE_REPORT BIT(2)
+#define WLAN_RRM_CAPS_CIVIC_LOCATION_MEASUREMENT BIT(3)
/*
* IEEE Std 802.11-2020, 9.4.2.20.19 (Fine Timing Measurement Range