diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-12-14 06:20:31 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-12-15 14:46:34 -0500 |
commit | 29623892e185b65a503c925236ff73894a842d38 (patch) | |
tree | a159e711035d4003ea64b52d3601a0be6f77e61b /net/mac80211/tx.c | |
parent | d9a7ddb05e5419ca5e4b54f57074dc33c7ea991c (diff) |
mac80211: count authorized stations per BSS
Currently, each AP interface will send multicast
traffic if any interface has a station entry even
if that station entry is allocated only. With the
new station state management we can easily fix it
by adding a counter that counts each authorized
station only and send multicast traffic only when
the correct interface has at least one authorized
station.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 50c4be9a6404..6bbd6cccb4a0 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -304,17 +304,14 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx) | |||
304 | I802_DEBUG_INC(tx->local->tx_handlers_drop_not_assoc); | 304 | I802_DEBUG_INC(tx->local->tx_handlers_drop_not_assoc); |
305 | return TX_DROP; | 305 | return TX_DROP; |
306 | } | 306 | } |
307 | } else { | 307 | } else if (unlikely(tx->sdata->vif.type == NL80211_IFTYPE_AP && |
308 | if (unlikely(ieee80211_is_data(hdr->frame_control) && | 308 | ieee80211_is_data(hdr->frame_control) && |
309 | tx->local->num_sta == 0 && | 309 | !atomic_read(&tx->sdata->u.ap.num_sta_authorized))) { |
310 | tx->sdata->vif.type != NL80211_IFTYPE_ADHOC)) { | 310 | /* |
311 | /* | 311 | * No associated STAs - no need to send multicast |
312 | * No associated STAs - no need to send multicast | 312 | * frames. |
313 | * frames. | 313 | */ |
314 | */ | 314 | return TX_DROP; |
315 | return TX_DROP; | ||
316 | } | ||
317 | return TX_CONTINUE; | ||
318 | } | 315 | } |
319 | 316 | ||
320 | return TX_CONTINUE; | 317 | return TX_CONTINUE; |