]> err.no Git - linux-2.6/blobdiff - net/mac80211/wext.c
Merge branch 'linus' into x86/gart
[linux-2.6] / net / mac80211 / wext.c
index 69aed16faff311482a4767d928f0e3a168945045..76e1de1dc735d959e62527132bad490a3e005513 100644 (file)
@@ -236,6 +236,9 @@ static int ieee80211_ioctl_siwmode(struct net_device *dev,
        case IW_MODE_ADHOC:
                type = IEEE80211_IF_TYPE_IBSS;
                break;
+       case IW_MODE_REPEAT:
+               type = IEEE80211_IF_TYPE_WDS;
+               break;
        case IW_MODE_MONITOR:
                type = IEEE80211_IF_TYPE_MNTR;
                break;
@@ -980,6 +983,8 @@ static struct iw_statistics *ieee80211_get_wireless_stats(struct net_device *dev
        struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
        struct sta_info *sta = NULL;
 
+       rcu_read_lock();
+
        if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
            sdata->vif.type == IEEE80211_IF_TYPE_IBSS)
                sta = sta_info_get(local, sdata->u.sta.bssid);
@@ -996,6 +1001,9 @@ static struct iw_statistics *ieee80211_get_wireless_stats(struct net_device *dev
                wstats->qual.noise = sta->last_noise;
                wstats->qual.updated = local->wstats_flags;
        }
+
+       rcu_read_unlock();
+
        return wstats;
 }