Skip to content

Commit

Permalink
wifi: cfg80211: scan: skip duplicate RNR entries
Browse files Browse the repository at this point in the history
There really shouldn't be duplicate entries when we give
the list to the driver, and since we already have a list
it's easy to avoid.

While at it, remove the unnecessary allocation there.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Ilan Peer <ilan.peer@intel.com>
Reviewed-by: Benjamin Berg <benjamin.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250101070249.b0012c70f503.Id6fcad979434c1437340aa283abae2906345cca1@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Johannes Berg committed Jan 13, 2025
1 parent 69f9556 commit 993ace3
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion net/wireless/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -729,7 +729,7 @@ cfg80211_parse_colocated_ap_iter(void *_data, u8 type,
bss_params)))
return RNR_ITER_CONTINUE;

entry = kzalloc(sizeof(*entry) + IEEE80211_MAX_SSID_LEN, GFP_ATOMIC);
entry = kzalloc(sizeof(*entry), GFP_ATOMIC);
if (!entry)
return RNR_ITER_ERROR;

Expand All @@ -738,6 +738,17 @@ cfg80211_parse_colocated_ap_iter(void *_data, u8 type,

if (!cfg80211_parse_ap_info(entry, tbtt_info, tbtt_info_len,
data->ssid_elem, data->s_ssid_tmp)) {
struct cfg80211_colocated_ap *tmp;

/* Don't add duplicate BSSIDs on the same channel. */
list_for_each_entry(tmp, &data->ap_list, list) {
if (ether_addr_equal(tmp->bssid, entry->bssid) &&
tmp->center_freq == entry->center_freq) {
kfree(entry);
return RNR_ITER_CONTINUE;
}
}

data->n_coloc++;
list_add_tail(&entry->list, &data->ap_list);
} else {
Expand Down

0 comments on commit 993ace3

Please sign in to comment.