diff options
| -rw-r--r-- | net/mac80211/main.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 0c02c471bca2..aa5a191598c9 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
| @@ -245,10 +245,13 @@ static int ieee80211_open(struct net_device *dev) | |||
| 245 | case IEEE80211_IF_TYPE_AP: | 245 | case IEEE80211_IF_TYPE_AP: |
| 246 | sdata->bss = &sdata->u.ap; | 246 | sdata->bss = &sdata->u.ap; |
| 247 | break; | 247 | break; |
| 248 | case IEEE80211_IF_TYPE_MESH_POINT: | ||
| 249 | /* mesh ifaces must set allmulti to forward mcast traffic */ | ||
| 250 | atomic_inc(&local->iff_allmultis); | ||
| 251 | break; | ||
| 248 | case IEEE80211_IF_TYPE_STA: | 252 | case IEEE80211_IF_TYPE_STA: |
| 249 | case IEEE80211_IF_TYPE_MNTR: | 253 | case IEEE80211_IF_TYPE_MNTR: |
| 250 | case IEEE80211_IF_TYPE_IBSS: | 254 | case IEEE80211_IF_TYPE_IBSS: |
| 251 | case IEEE80211_IF_TYPE_MESH_POINT: | ||
| 252 | /* no special treatment */ | 255 | /* no special treatment */ |
| 253 | break; | 256 | break; |
| 254 | case IEEE80211_IF_TYPE_INVALID: | 257 | case IEEE80211_IF_TYPE_INVALID: |
| @@ -495,6 +498,9 @@ static int ieee80211_stop(struct net_device *dev) | |||
| 495 | netif_addr_unlock_bh(local->mdev); | 498 | netif_addr_unlock_bh(local->mdev); |
| 496 | break; | 499 | break; |
| 497 | case IEEE80211_IF_TYPE_MESH_POINT: | 500 | case IEEE80211_IF_TYPE_MESH_POINT: |
| 501 | /* allmulti is always set on mesh ifaces */ | ||
| 502 | atomic_dec(&local->iff_allmultis); | ||
| 503 | /* fall through */ | ||
| 498 | case IEEE80211_IF_TYPE_STA: | 504 | case IEEE80211_IF_TYPE_STA: |
| 499 | case IEEE80211_IF_TYPE_IBSS: | 505 | case IEEE80211_IF_TYPE_IBSS: |
| 500 | sdata->u.sta.state = IEEE80211_DISABLED; | 506 | sdata->u.sta.state = IEEE80211_DISABLED; |
