RNR: Add bss_parameters to the neighbor_db
Add a new field to include BSS Parameter subfield in the neighbor database as described in IEEE Std 802.11ax-2021, Figure 9-632a (BSS Parameters subfield format). This field holds information related to multiple BSSID, access point co-location, and 20 TU probe response active/inactive state. Signed-off-by: John Crispin <john@phrozen.org> Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
This commit is contained in:
parent
9d0948ecc9
commit
1b8eb39757
4 changed files with 22 additions and 4 deletions
|
@ -3191,6 +3191,7 @@ static int hostapd_ctrl_iface_set_neighbor(struct hostapd_data *hapd, char *buf)
|
|||
u8 bssid[ETH_ALEN];
|
||||
struct wpabuf *nr, *lci = NULL, *civic = NULL;
|
||||
int stationary = 0;
|
||||
int bss_parameters = 0;
|
||||
char *tmp;
|
||||
int ret;
|
||||
|
||||
|
@ -3275,9 +3276,22 @@ static int hostapd_ctrl_iface_set_neighbor(struct hostapd_data *hapd, char *buf)
|
|||
if (os_strstr(buf, "stat"))
|
||||
stationary = 1;
|
||||
|
||||
tmp = os_strstr(buf, "bss_parameter=");
|
||||
if (tmp) {
|
||||
bss_parameters = atoi(tmp + 14);
|
||||
if (bss_parameters < 0 || bss_parameters > 0xff) {
|
||||
wpa_printf(MSG_ERROR,
|
||||
"CTRL: SET_NEIGHBOR: Bad bss_parameters subelement");
|
||||
wpabuf_free(nr);
|
||||
wpabuf_free(lci);
|
||||
wpabuf_free(civic);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
set:
|
||||
ret = hostapd_neighbor_set(hapd, bssid, &ssid, nr, lci, civic,
|
||||
stationary);
|
||||
stationary, bss_parameters);
|
||||
|
||||
wpabuf_free(nr);
|
||||
wpabuf_free(lci);
|
||||
|
|
|
@ -139,6 +139,7 @@ struct hostapd_neighbor_entry {
|
|||
struct os_time lci_date;
|
||||
int stationary;
|
||||
u32 short_ssid;
|
||||
u8 bss_parameters;
|
||||
};
|
||||
|
||||
struct hostapd_sae_commit_queue {
|
||||
|
|
|
@ -121,7 +121,8 @@ hostapd_neighbor_add(struct hostapd_data *hapd)
|
|||
int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
||||
const struct wpa_ssid_value *ssid,
|
||||
const struct wpabuf *nr, const struct wpabuf *lci,
|
||||
const struct wpabuf *civic, int stationary)
|
||||
const struct wpabuf *civic, int stationary,
|
||||
u8 bss_parameters)
|
||||
{
|
||||
struct hostapd_neighbor_entry *entry;
|
||||
|
||||
|
@ -154,6 +155,7 @@ int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
|||
}
|
||||
|
||||
entry->stationary = stationary;
|
||||
entry->bss_parameters = bss_parameters;
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -313,7 +315,7 @@ void hostapd_neighbor_set_own_report(struct hostapd_data *hapd)
|
|||
wpabuf_put_u8(nr, center_freq2_idx);
|
||||
|
||||
hostapd_neighbor_set(hapd, hapd->own_addr, &ssid, nr, hapd->iconf->lci,
|
||||
hapd->iconf->civic, hapd->iconf->stationary_ap);
|
||||
hapd->iconf->civic, hapd->iconf->stationary_ap, 0);
|
||||
|
||||
wpabuf_free(nr);
|
||||
#endif /* NEED_AP_MLME */
|
||||
|
|
|
@ -17,7 +17,8 @@ int hostapd_neighbor_show(struct hostapd_data *hapd, char *buf, size_t buflen);
|
|||
int hostapd_neighbor_set(struct hostapd_data *hapd, const u8 *bssid,
|
||||
const struct wpa_ssid_value *ssid,
|
||||
const struct wpabuf *nr, const struct wpabuf *lci,
|
||||
const struct wpabuf *civic, int stationary);
|
||||
const struct wpabuf *civic, int stationary,
|
||||
u8 bss_parameters);
|
||||
void hostapd_neighbor_set_own_report(struct hostapd_data *hapd);
|
||||
int hostapd_neighbor_remove(struct hostapd_data *hapd, const u8 *bssid,
|
||||
const struct wpa_ssid_value *ssid);
|
||||
|
|
Loading…
Reference in a new issue