[NET]: Make the device list and device lookups per namespace.
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / mac80211 / ieee80211.c
index 5d5034f36fde1a740f8ec42b56ff9c5cdc1a9a44..506cfa06b18415f01cfa5f118b092f73ded0e6e6 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/wireless.h>
 #include <linux/rtnetlink.h>
 #include <linux/bitmap.h>
+#include <net/net_namespace.h>
 #include <net/cfg80211.h>
 
 #include "ieee80211_common.h"
@@ -442,6 +443,7 @@ static int ieee80211_open(struct net_device *dev)
        } else {
                ieee80211_if_config(dev);
                ieee80211_reset_erp_info(dev);
+               ieee80211_enable_keys(sdata);
        }
 
        if (sdata->type == IEEE80211_IF_TYPE_STA &&
@@ -510,6 +512,9 @@ static int ieee80211_stop(struct net_device *dev)
                local->monitors--;
                if (!local->monitors)
                        local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP;
+       } else {
+               /* disable all keys for as long as this netdev is down */
+               ieee80211_disable_keys(sdata);
        }
 
        local->open_count--;
@@ -908,7 +913,7 @@ static void ieee80211_remove_tx_extra(struct ieee80211_local *local,
        }
 
        if (skb->len >= mic_len &&
-           (key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT))
+           !(key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE))
                skb_trim(skb, skb->len - mic_len);
        if (skb->len >= iv_len && skb->len > hdrlen) {
                memmove(skb->data + iv_len, skb->data, hdrlen);