diff options
author | Alexander Bondar <alexander.bondar@intel.com> | 2013-02-11 14:56:29 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-03-11 16:22:14 +0200 |
commit | 488b366a452934141959384c7a1b52b22d6154ef (patch) | |
tree | 85851d49961be9db15cbeea8038e873e4fc9028a /net/mac80211/iface.c | |
parent | 511044ea0bfc06614d903263ad094d1071fa172f (diff) |
mac80211: add driver callback for per-interface multicast filter
Some devices have multicast filter capability for each individual
virtual interface rather than just a global one. Add an interface
specific driver callback allowing such drivers to configure this.
Signed-off-by: Alexander Bondar <alexander.bondar@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r-- | net/mac80211/iface.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index d85282f6440..9875e321c9e 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -919,6 +919,17 @@ static void ieee80211_set_multicast_list(struct net_device *dev) atomic_dec(&local->iff_promiscs); sdata->flags ^= IEEE80211_SDATA_PROMISC; } + + /* + * TODO: If somebody needs this on AP interfaces, + * it can be enabled easily but multicast + * addresses from VLANs need to be synced. + */ + if (sdata->vif.type != NL80211_IFTYPE_MONITOR && + sdata->vif.type != NL80211_IFTYPE_AP_VLAN && + sdata->vif.type != NL80211_IFTYPE_AP) + drv_set_multicast_list(local, sdata, &dev->mc); + spin_lock_bh(&local->filter_lock); __hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len); spin_unlock_bh(&local->filter_lock); |