rtl8180: use RTL818X_MSR_ADHOC for IBSS connection
authorJohn W. Linville <linville@tuxdriver.com>
Fri, 30 Jul 2010 01:50:29 +0000 (21:50 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 16 Aug 2010 18:39:47 +0000 (14:39 -0400)
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rtl818x/rtl8180_dev.c

index 02d0f71d0faa526dad2d08e4c722aa9186327f7a..9544eb1a23dc387fdd204ae253c7e0f6092bfbf9 100644 (file)
@@ -790,6 +790,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;
 
@@ -798,12 +799,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)