mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-29 05:29:38 +01:00
station: replace old BSS with 'best_bss' on roam scan
The logic here assumed any BSS's in the roam scan were identical to ones in station's bss_list with the same address. Usually this is true but, for example, if the BSS changed frequency the one in station's list is invalid. Instead when a match is found remove the old BSS and re-insert the new one.
This commit is contained in:
parent
1c5a2da046
commit
7bbcb67892
@ -2368,8 +2368,12 @@ next:
|
|||||||
|
|
||||||
bss = network_bss_find_by_addr(network, best_bss->addr);
|
bss = network_bss_find_by_addr(network, best_bss->addr);
|
||||||
if (bss) {
|
if (bss) {
|
||||||
scan_bss_free(best_bss);
|
network_bss_update(network, best_bss);
|
||||||
best_bss = bss;
|
l_queue_remove(station->bss_list, bss);
|
||||||
|
scan_bss_free(bss);
|
||||||
|
|
||||||
|
l_queue_insert(station->bss_list, best_bss,
|
||||||
|
scan_bss_rank_compare, NULL);
|
||||||
} else {
|
} else {
|
||||||
network_bss_add(network, best_bss);
|
network_bss_add(network, best_bss);
|
||||||
l_queue_push_tail(station->bss_list, best_bss);
|
l_queue_push_tail(station->bss_list, best_bss);
|
||||||
|
Loading…
Reference in New Issue
Block a user