if (type == NL80211_IFTYPE_MONITOR && flags) {
                sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);
-               sdata->u.mntr_flags = *flags;
+               sdata->u.mntr.flags = *flags;
        }
 
        return wdev;
                         *      cooked_mntrs, monitor and all fif_* counters
                         *      reconfigure hardware
                         */
-                       if ((*flags & mask) != (sdata->u.mntr_flags & mask))
+                       if ((*flags & mask) != (sdata->u.mntr.flags & mask))
                                return -EBUSY;
 
                        ieee80211_adjust_monitor_flags(sdata, -1);
-                       sdata->u.mntr_flags = *flags;
+                       sdata->u.mntr.flags = *flags;
                        ieee80211_adjust_monitor_flags(sdata, 1);
 
                        ieee80211_configure_filter(local);
                         * and ieee80211_do_open take care of "everything"
                         * mentioned in the comment above.
                         */
-                       sdata->u.mntr_flags = *flags;
+                       sdata->u.mntr.flags = *flags;
                }
        }
 
 
        if (WARN_ON(sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
                    (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
                     !ieee80211_hw_check(&local->hw, WANT_MONITOR_VIF) &&
-                    !(sdata->u.mntr_flags & MONITOR_FLAG_ACTIVE))))
+                    !(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))))
                return -EINVAL;
 
        trace_drv_add_interface(local, sdata);
 
        struct ieee80211_txq txq;
 };
 
+struct ieee80211_if_mntr {
+       u32 flags;
+};
+
 struct ieee80211_sub_if_data {
        struct list_head list;
 
                struct ieee80211_if_ibss ibss;
                struct ieee80211_if_mesh mesh;
                struct ieee80211_if_ocb ocb;
-               u32 mntr_flags;
+               struct ieee80211_if_mntr mntr;
        } u;
 
 #ifdef CONFIG_MAC80211_DEBUGFS
 
                        continue;
 
                if (iter->vif.type == NL80211_IFTYPE_MONITOR &&
-                   !(iter->u.mntr_flags & MONITOR_FLAG_ACTIVE))
+                   !(iter->u.mntr.flags & MONITOR_FLAG_ACTIVE))
                        continue;
 
                m = iter->vif.addr;
                return -EBUSY;
 
        if (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
-           !(sdata->u.mntr_flags & MONITOR_FLAG_ACTIVE))
+           !(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))
                check_dup = false;
 
        ret = ieee80211_verify_mac(sdata, sa->sa_data, check_dup);
                                    const int offset)
 {
        struct ieee80211_local *local = sdata->local;
-       u32 flags = sdata->u.mntr_flags;
+       u32 flags = sdata->u.mntr.flags;
 
 #define ADJUST(_f, _s) do {                                    \
        if (flags & MONITOR_FLAG_##_f)                          \
                }
                break;
        case NL80211_IFTYPE_MONITOR:
-               if (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) {
+               if (sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES) {
                        local->cooked_mntrs++;
                        break;
                }
 
-               if (sdata->u.mntr_flags & MONITOR_FLAG_ACTIVE) {
+               if (sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE) {
                        res = drv_add_interface(local, sdata);
                        if (res)
                                goto err_stop;
                /* no need to tell driver */
                break;
        case NL80211_IFTYPE_MONITOR:
-               if (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) {
+               if (sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES) {
                        local->cooked_mntrs--;
                        break;
                }
                ieee80211_recalc_idle(local);
                mutex_unlock(&local->mtx);
 
-               if (!(sdata->u.mntr_flags & MONITOR_FLAG_ACTIVE))
+               if (!(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))
                        break;
 
                /* fall through */
        case NL80211_IFTYPE_MONITOR:
                sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
                sdata->dev->netdev_ops = &ieee80211_monitorif_ops;
-               sdata->u.mntr_flags = MONITOR_FLAG_CONTROL |
+               sdata->u.mntr.flags = MONITOR_FLAG_CONTROL |
                                      MONITOR_FLAG_OTHER_BSS;
                break;
        case NL80211_IFTYPE_WDS:
 
                if (sdata->vif.type != NL80211_IFTYPE_MONITOR)
                        continue;
 
-               if (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES)
+               if (sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES)
                        continue;
 
                if (!ieee80211_sdata_running(sdata))
                        continue;
 
                if (sdata->vif.type != NL80211_IFTYPE_MONITOR ||
-                   !(sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES))
+                   !(sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES))
                        continue;
 
                if (prev_dev) {
 
                        if (!ieee80211_sdata_running(sdata))
                                continue;
 
-                       if ((sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) &&
+                       if ((sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES) &&
                            !send_to_cooked)
                                continue;
 
 
 
        switch (sdata->vif.type) {
        case NL80211_IFTYPE_MONITOR:
-               if (sdata->u.mntr_flags & MONITOR_FLAG_ACTIVE) {
+               if (sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE) {
                        vif = &sdata->vif;
                        break;
                }
 
        list_for_each_entry_rcu(sdata, &local->interfaces, list) {
                switch (sdata->vif.type) {
                case NL80211_IFTYPE_MONITOR:
-                       if (!(sdata->u.mntr_flags & MONITOR_FLAG_ACTIVE))
+                       if (!(sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE))
                                continue;
                        break;
                case NL80211_IFTYPE_AP_VLAN: