OSDN Git Service

wifi: cfg80211: fix comparison of BSS frequencies
authorJUN-KYU SHIN <jk.shin@newratek.com>
Fri, 11 Nov 2022 02:33:04 +0000 (11:33 +0900)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 1 Dec 2022 14:09:09 +0000 (15:09 +0100)
If the "channel->freq_offset" comparison is omitted in cmp_bss(),
BSS with different kHz units cannot be distinguished in the S1G Band.
So "freq_offset" should also be included in the comparison.

Signed-off-by: JUN-KYU SHIN <jk.shin@newratek.com>
Link: https://lore.kernel.org/r/20221111023301.6395-1-jk.shin@newratek.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/scan.c

index e70302a..a39c937 100644 (file)
@@ -1289,7 +1289,8 @@ static int cmp_bss(struct cfg80211_bss *a,
        int i, r;
 
        if (a->channel != b->channel)
-               return b->channel->center_freq - a->channel->center_freq;
+               return (b->channel->center_freq * 1000 + b->channel->freq_offset) -
+                      (a->channel->center_freq * 1000 + a->channel->freq_offset);
 
        a_ies = rcu_access_pointer(a->ies);
        if (!a_ies)