diff options
author | Michael Braun <michael-dev@fami-braun.de> | 2016-10-10 19:12:22 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2016-10-27 16:03:27 +0200 |
commit | ce0ce13a1c89ff8b94b7f8fb32eb4c43e111c82e (patch) | |
tree | caa13d6ec3e5afd7e617030042e6b513a5438fee /net/wireless/rdev-ops.h | |
parent | f3ca52aa52eebdcad0e6fd99586e0068e899caa7 (diff) | |
download | linux-stable-ce0ce13a1c89ff8b94b7f8fb32eb4c43e111c82e.tar.gz linux-stable-ce0ce13a1c89ff8b94b7f8fb32eb4c43e111c82e.tar.bz2 linux-stable-ce0ce13a1c89ff8b94b7f8fb32eb4c43e111c82e.zip |
cfg80211: configure multicast to unicast for AP interfaces
Add the ability to configure if an AP (and associated VLANs) will
do multicast-to-unicast conversion for ARP, IPv4 and IPv6 frames
(possibly within 802.1Q). If enabled, such frames are to be sent
to each station separately, with the DA replaced by their own MAC
address rather than the group address.
Note that this may break certain expectations of the receiver,
such as the ability to drop unicast IP packets received within
multicast L2 frames, or the ability to not send ICMP destination
unreachable messages for packets received in L2 multicast (which
is required, but the receiver can't tell the difference if this
new option is enabled.)
This also doesn't implement the 802.11 DMS (directed multicast
service).
Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
[fix disabling, add better documentation & commit message]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/rdev-ops.h')
-rw-r--r-- | net/wireless/rdev-ops.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h index 11cf83c8ad4f..e9ecf23e7942 100644 --- a/net/wireless/rdev-ops.h +++ b/net/wireless/rdev-ops.h @@ -562,6 +562,18 @@ static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev, return ret; } +static inline int +rdev_set_multicast_to_unicast(struct cfg80211_registered_device *rdev, + struct net_device *dev, + const bool enabled) +{ + int ret; + trace_rdev_set_multicast_to_unicast(&rdev->wiphy, dev, enabled); + ret = rdev->ops->set_multicast_to_unicast(&rdev->wiphy, dev, enabled); + trace_rdev_return_int(&rdev->wiphy, ret); + return ret; +} + static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev) { trace_rdev_rfkill_poll(&rdev->wiphy); |