|
@@ -819,13 +819,15 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
|
|
|
* (because if we remove a STA after ops->remove_interface()
|
|
|
* the driver will have removed the vif info already!)
|
|
|
*
|
|
|
- * This is relevant only in WDS mode, in all other modes we've
|
|
|
- * already removed all stations when disconnecting or similar,
|
|
|
- * so warn otherwise.
|
|
|
+ * In WDS mode a station must exist here and be flushed, for
|
|
|
+ * AP_VLANs stations may exist since there's nothing else that
|
|
|
+ * would have removed them, but in other modes there shouldn't
|
|
|
+ * be any stations.
|
|
|
*/
|
|
|
flushed = sta_info_flush(sdata);
|
|
|
- WARN_ON_ONCE((sdata->vif.type != NL80211_IFTYPE_WDS && flushed > 0) ||
|
|
|
- (sdata->vif.type == NL80211_IFTYPE_WDS && flushed != 1));
|
|
|
+ WARN_ON_ONCE(sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
|
|
|
+ ((sdata->vif.type != NL80211_IFTYPE_WDS && flushed > 0) ||
|
|
|
+ (sdata->vif.type == NL80211_IFTYPE_WDS && flushed != 1)));
|
|
|
|
|
|
/* don't count this interface for promisc/allmulti while it is down */
|
|
|
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
|