]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/wireless/scan.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / net / wireless / scan.c
index 503ebb86ba1836f5d2c8709c75bae5eff83c5de6..ea427f418f641c28f3b19b62fce74984ae86d8fd 100644 (file)
@@ -464,6 +464,9 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
                if (res->pub.beacon_ies) {
                        size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
                        size_t ielen = res->pub.len_beacon_ies;
+                       bool information_elements_is_beacon_ies =
+                               (found->pub.information_elements ==
+                                found->pub.beacon_ies);
 
                        if (found->pub.beacon_ies &&
                            !found->beacon_ies_allocated &&
@@ -487,6 +490,14 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
                                        found->pub.len_beacon_ies = ielen;
                                }
                        }
+
+                       /* Override IEs if they were from a beacon before */
+                       if (information_elements_is_beacon_ies) {
+                               found->pub.information_elements =
+                                       found->pub.beacon_ies;
+                               found->pub.len_information_elements =
+                                       found->pub.len_beacon_ies;
+                       }
                }
 
                kref_put(&res->ref, bss_release);