mac80211: fix num_mcast_sta counting issues
[deliverable/linux.git] / net / mac80211 / sta_info.c
index 7fd7ac48f893fee56059ff7bca20ba264864bfdd..97a9d6639fb9c2b5846dd05cec95b8da99f23e9d 100644 (file)
@@ -1417,15 +1417,19 @@ int sta_info_move_state(struct sta_info *sta,
                if (sta->sta_state == IEEE80211_STA_AUTH) {
                        set_bit(WLAN_STA_ASSOC, &sta->_flags);
                } else if (sta->sta_state == IEEE80211_STA_AUTHORIZED) {
-                       if (sta->sdata->vif.type == NL80211_IFTYPE_AP)
-                               atomic_dec(&sta->sdata->u.ap.num_sta_authorized);
+                       if (sta->sdata->vif.type == NL80211_IFTYPE_AP ||
+                           (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
+                            !sta->sdata->u.vlan.sta))
+                               atomic_dec(&sta->sdata->bss->num_mcast_sta);
                        clear_bit(WLAN_STA_AUTHORIZED, &sta->_flags);
                }
                break;
        case IEEE80211_STA_AUTHORIZED:
                if (sta->sta_state == IEEE80211_STA_ASSOC) {
-                       if (sta->sdata->vif.type == NL80211_IFTYPE_AP)
-                               atomic_inc(&sta->sdata->u.ap.num_sta_authorized);
+                       if (sta->sdata->vif.type == NL80211_IFTYPE_AP ||
+                           (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
+                            !sta->sdata->u.vlan.sta))
+                               atomic_inc(&sta->sdata->bss->num_mcast_sta);
                        set_bit(WLAN_STA_AUTHORIZED, &sta->_flags);
                }
                break;
This page took 0.045387 seconds and 5 git commands to generate.