diff options
author | Arnd Bergmann <arnd@arndb.de> | 2011-11-29 14:50:17 +0000 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2011-11-29 14:50:17 +0000 |
commit | 98014be39bda8277a5ad130bb274ed6eb18b74df (patch) | |
tree | 974620a47c9350ff9b3c06ffd2b49470bbda72ab /net/wireless/scan.c | |
parent | 55135dfbf3dd83cb3e98deed8271b62d188404e1 (diff) | |
parent | 6e2a587eb99267367409097b70cb2d61b09e5269 (diff) |
Merge branch 'defconfigs-for-arnd' of git://git.linaro.org/people/triad/linux-stericsson into fixes
Diffstat (limited to 'net/wireless/scan.c')
-rw-r--r-- | net/wireless/scan.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index 0fb142410404..dc23b31594e0 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c @@ -259,17 +259,20 @@ static int cmp_ies(u8 num, u8 *ies1, size_t len1, u8 *ies2, size_t len2) { const u8 *ie1 = cfg80211_find_ie(num, ies1, len1); const u8 *ie2 = cfg80211_find_ie(num, ies2, len2); - int r; + /* equal if both missing */ if (!ie1 && !ie2) return 0; - if (!ie1 || !ie2) + /* sort missing IE before (left of) present IE */ + if (!ie1) return -1; + if (!ie2) + return 1; - r = memcmp(ie1 + 2, ie2 + 2, min(ie1[1], ie2[1])); - if (r == 0 && ie1[1] != ie2[1]) + /* sort by length first, then by contents */ + if (ie1[1] != ie2[1]) return ie2[1] - ie1[1]; - return r; + return memcmp(ie1 + 2, ie2 + 2, ie1[1]); } static bool is_bss(struct cfg80211_bss *a, |