Skip to content

Commit

Permalink
mac80211: warn if unexpectedly removing stations
Browse files Browse the repository at this point in the history
When an interface is brought down it must have been
disconnected (or similar) in all modes other than WDS,
so warn if any stations were removed in other modes.

Tested-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Johannes Berg committed Jan 3, 2013
1 parent b998e8b commit 09f4114
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions net/mac80211/iface.c
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
unsigned long flags;
struct sk_buff *skb, *tmp;
u32 hw_reconf_flags = 0;
int i;
int i, flushed;

clear_bit(SDATA_STATE_RUNNING, &sdata->state);

Expand All @@ -772,11 +772,13 @@ 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 AP, WDS and mesh modes, since in
* all other modes we've already removed all stations when
* disconnecting etc.
* This is relevant only in WDS mode, in all other modes we've
* already removed all stations when disconnecting or similar,
* so warn otherwise.
*/
sta_info_flush(sdata);
flushed = sta_info_flush(sdata);
WARN_ON_ONCE((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
Expand Down

0 comments on commit 09f4114

Please sign in to comment.