mac80211: disable BSSID filtering for mesh interfaces
Mesh interfaces are currently opened with the FIF_ALLMULTI rx filter flag set, however there is no BSSID in mesh so BSSID filtering should be disabled by setting the FIF_OTHER_BSS flag as well. Also explicitly call ieee80211_configure_filter for mesh. Signed-off-by: Andrey Yurovsky <andrey@cozybit.com> Signed-off-by: Javier Cardona <javier@cozbit.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
b7b05fe7f9
commit
a3c9aa5129
1 changed files with 15 additions and 2 deletions
|
@ -229,8 +229,14 @@ static int ieee80211_open(struct net_device *dev)
|
|||
if (res)
|
||||
goto err_stop;
|
||||
|
||||
if (ieee80211_vif_is_mesh(&sdata->vif))
|
||||
if (ieee80211_vif_is_mesh(&sdata->vif)) {
|
||||
local->fif_other_bss++;
|
||||
netif_addr_lock_bh(local->mdev);
|
||||
ieee80211_configure_filter(local);
|
||||
netif_addr_unlock_bh(local->mdev);
|
||||
|
||||
ieee80211_start_mesh(sdata);
|
||||
}
|
||||
changed |= ieee80211_reset_erp_info(sdata);
|
||||
ieee80211_bss_info_change_notify(sdata, changed);
|
||||
ieee80211_enable_keys(sdata);
|
||||
|
@ -456,8 +462,15 @@ static int ieee80211_stop(struct net_device *dev)
|
|||
/* fall through */
|
||||
case NL80211_IFTYPE_MESH_POINT:
|
||||
if (ieee80211_vif_is_mesh(&sdata->vif)) {
|
||||
/* allmulti is always set on mesh ifaces */
|
||||
/* other_bss and allmulti are always set on mesh
|
||||
* ifaces */
|
||||
local->fif_other_bss--;
|
||||
atomic_dec(&local->iff_allmultis);
|
||||
|
||||
netif_addr_lock_bh(local->mdev);
|
||||
ieee80211_configure_filter(local);
|
||||
netif_addr_unlock_bh(local->mdev);
|
||||
|
||||
ieee80211_stop_mesh(sdata);
|
||||
}
|
||||
/* fall through */
|
||||
|
|
Loading…
Reference in a new issue