]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/wireless/rtl818x/rtl8180_dev.c
Merge tag 'v2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / net / wireless / rtl818x / rtl8180_dev.c
index 30107ce78dfb6cc8613c83c5ca525a5e8bf42314..707c688da618f7728d988dccbccb8b78ea52ab22 100644 (file)
@@ -783,6 +783,7 @@ static void rtl8180_bss_info_changed(struct ieee80211_hw *dev,
        struct rtl8180_priv *priv = dev->priv;
        struct rtl8180_vif *vif_priv;
        int i;
+       u8 reg;
 
        vif_priv = (struct rtl8180_vif *)&vif->drv_priv;
 
@@ -791,12 +792,14 @@ static void rtl8180_bss_info_changed(struct ieee80211_hw *dev,
                        rtl818x_iowrite8(priv, &priv->map->BSSID[i],
                                         info->bssid[i]);
 
-               if (is_valid_ether_addr(info->bssid))
-                       rtl818x_iowrite8(priv, &priv->map->MSR,
-                                        RTL818X_MSR_INFRA);
-               else
-                       rtl818x_iowrite8(priv, &priv->map->MSR,
-                                        RTL818X_MSR_NO_LINK);
+               if (is_valid_ether_addr(info->bssid)) {
+                       if (vif->type == NL80211_IFTYPE_ADHOC)
+                               reg = RTL818X_MSR_ADHOC;
+                       else
+                               reg = RTL818X_MSR_INFRA;
+               } else
+                       reg = RTL818X_MSR_NO_LINK;
+               rtl818x_iowrite8(priv, &priv->map->MSR, reg);
        }
 
        if (changed & BSS_CHANGED_ERP_SLOT && priv->rf->conf_erp)