]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
WNM: Do not store coloc_intf_elems
authorBenjamin Berg <benjamin.berg@intel.com>
Tue, 20 Feb 2024 13:18:23 +0000 (14:18 +0100)
committerJouni Malinen <j@w1.fi>
Sat, 2 Mar 2024 18:52:17 +0000 (20:52 +0200)
The elements are (currently) not used except for sending an immediate
response similar to COLOC_INTF_REPORT with the main difference being
that the dialog token is included.

Do not store the elements. It easy enough to re-add this should the
implementation improve. And this fixes the fact that the variable is
cleared at odd times as wnm_deallocate_memory() is used specifically to
clear the neighbor report list of a BTM request.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
wpa_supplicant/wnm_sta.c
wpa_supplicant/wpa_supplicant_i.h

index 749eda911b59b9789808ba65e774be945cfb0785..cd2c2903da0ec4b475d9816d4b9fba807052c48a 100644 (file)
@@ -430,9 +430,6 @@ void wnm_deallocate_memory(struct wpa_supplicant *wpa_s)
        wpa_s->wnm_num_neighbor_report = 0;
        os_free(wpa_s->wnm_neighbor_report_elements);
        wpa_s->wnm_neighbor_report_elements = NULL;
-
-       wpabuf_free(wpa_s->coloc_intf_elems);
-       wpa_s->coloc_intf_elems = NULL;
 }
 
 
@@ -2009,14 +2006,14 @@ int wnm_send_coloc_intf_report(struct wpa_supplicant *wpa_s, u8 dialog_token,
 void wnm_set_coloc_intf_elems(struct wpa_supplicant *wpa_s,
                              struct wpabuf *elems)
 {
-       wpabuf_free(wpa_s->coloc_intf_elems);
        if (elems && wpabuf_len(elems) == 0) {
                wpabuf_free(elems);
                elems = NULL;
        }
-       wpa_s->coloc_intf_elems = elems;
 
-       if (wpa_s->conf->coloc_intf_reporting && wpa_s->coloc_intf_elems &&
+       /* NOTE: The elements are not stored as they are only send out once */
+
+       if (wpa_s->conf->coloc_intf_reporting && elems &&
            wpa_s->coloc_intf_dialog_token &&
            (wpa_s->coloc_intf_auto_report == 1 ||
             wpa_s->coloc_intf_auto_report == 3)) {
@@ -2025,8 +2022,10 @@ void wnm_set_coloc_intf_elems(struct wpa_supplicant *wpa_s,
                 */
                wnm_send_coloc_intf_report(wpa_s,
                                           wpa_s->coloc_intf_dialog_token,
-                                          wpa_s->coloc_intf_elems);
+                                          elems);
        }
+
+       wpabuf_free(elems);
 }
 
 
index 513fcaadcdee5f5bac2565e75973742588d7b546..80ea515aadfd7731d228b86195f0f8d685c84e93 100644 (file)
@@ -1313,7 +1313,6 @@ struct wpa_supplicant {
        struct wpa_bss *wnm_target_bss;
        enum bss_trans_mgmt_status_code bss_tm_status;
        bool bss_trans_mgmt_in_progress;
-       struct wpabuf *coloc_intf_elems;
        u8 coloc_intf_dialog_token;
        u8 coloc_intf_auto_report;
        u8 coloc_intf_timeout;