diff --git a/[refs] b/[refs] index 60712aff745c..bcc2935e92f2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e32f85f7b917456265d4c30d15f734c4912cfa6a +refs/heads/master: 8dbc1722a78343eb80f0ce1a3ef1965a9774ad5b diff --git a/trunk/net/mac80211/main.c b/trunk/net/mac80211/main.c index 0c02c471bca2..aa5a191598c9 100644 --- a/trunk/net/mac80211/main.c +++ b/trunk/net/mac80211/main.c @@ -245,10 +245,13 @@ static int ieee80211_open(struct net_device *dev) case IEEE80211_IF_TYPE_AP: sdata->bss = &sdata->u.ap; break; + case IEEE80211_IF_TYPE_MESH_POINT: + /* mesh ifaces must set allmulti to forward mcast traffic */ + atomic_inc(&local->iff_allmultis); + break; case IEEE80211_IF_TYPE_STA: case IEEE80211_IF_TYPE_MNTR: case IEEE80211_IF_TYPE_IBSS: - case IEEE80211_IF_TYPE_MESH_POINT: /* no special treatment */ break; case IEEE80211_IF_TYPE_INVALID: @@ -495,6 +498,9 @@ static int ieee80211_stop(struct net_device *dev) netif_addr_unlock_bh(local->mdev); break; case IEEE80211_IF_TYPE_MESH_POINT: + /* allmulti is always set on mesh ifaces */ + atomic_dec(&local->iff_allmultis); + /* fall through */ case IEEE80211_IF_TYPE_STA: case IEEE80211_IF_TYPE_IBSS: sdata->u.sta.state = IEEE80211_DISABLED;