From dec9b81811784e4cf3c784662359e0307ae49f44 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 19 Oct 2022 10:55:06 +0200 Subject: [PATCH] mt76: add support for NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS Signed-off-by: Felix Fietkau --- mac80211.c | 1 + mt7603/main.c | 3 +++ mt7615/main.c | 3 +++ mt7915/main.c | 3 +++ mt7921/main.c | 3 +++ 5 files changed, 13 insertions(+) diff --git a/mac80211.c b/mac80211.c index c59d1200..c552a0bc 100644 --- a/mac80211.c +++ b/mac80211.c @@ -419,6 +419,7 @@ mt76_phy_init(struct mt76_phy *phy, struct ieee80211_hw *hw) wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST); wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_AIRTIME_FAIRNESS); wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_AQL); + wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS); wiphy->available_antennas_tx = phy->antenna_mask; wiphy->available_antennas_rx = phy->antenna_mask; diff --git a/mt7603/main.c b/mt7603/main.c index ca50feb0..5cd19a3c 100644 --- a/mt7603/main.c +++ b/mt7603/main.c @@ -280,6 +280,9 @@ mt7603_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags, MT_WF_RFCR_DROP_UNWANTED_CTL | MT_WF_RFCR_DROP_STBC_MULTI); + if (*total_flags & FIF_MCAST_ACTION) + flags |= FIF_MCAST_ACTION | FIF_OTHER_BSS; + MT76_FILTER(OTHER_BSS, MT_WF_RFCR_DROP_OTHER_TIM | MT_WF_RFCR_DROP_A3_MAC | MT_WF_RFCR_DROP_A3_BSSID); diff --git a/mt7615/main.c b/mt7615/main.c index ab4c1b44..5dca70d5 100644 --- a/mt7615/main.c +++ b/mt7615/main.c @@ -531,6 +531,9 @@ static void mt7615_configure_filter(struct ieee80211_hw *hw, if (phy->n_beacon_vif || !mt7615_firmware_offload(dev)) phy->rxfilter &= ~MT_WF_RFCR_DROP_OTHER_BEACON; + if (*total_flags & FIF_MCAST_ACTION) + flags |= FIF_MCAST_ACTION | FIF_OTHER_BSS; + MT76_FILTER(OTHER_BSS, MT_WF_RFCR_DROP_OTHER_TIM | MT_WF_RFCR_DROP_A3_MAC | MT_WF_RFCR_DROP_A3_BSSID); diff --git a/mt7915/main.c b/mt7915/main.c index 7422a5a7..f6d2361b 100644 --- a/mt7915/main.c +++ b/mt7915/main.c @@ -538,6 +538,9 @@ static void mt7915_configure_filter(struct ieee80211_hw *hw, MT_WF_RFCR_DROP_UNWANTED_CTL | MT_WF_RFCR_DROP_STBC_MULTI); + if (*total_flags & FIF_MCAST_ACTION) + flags |= FIF_MCAST_ACTION | FIF_OTHER_BSS; + MT76_FILTER(OTHER_BSS, MT_WF_RFCR_DROP_OTHER_TIM | MT_WF_RFCR_DROP_A3_MAC | MT_WF_RFCR_DROP_A3_BSSID); diff --git a/mt7921/main.c b/mt7921/main.c index 730a8842..517af666 100644 --- a/mt7921/main.c +++ b/mt7921/main.c @@ -628,6 +628,9 @@ static void mt7921_configure_filter(struct ieee80211_hw *hw, MT_WF_RFCR_DROP_UNWANTED_CTL | MT_WF_RFCR_DROP_STBC_MULTI); + if (*total_flags & FIF_MCAST_ACTION) + flags |= FIF_MCAST_ACTION | FIF_OTHER_BSS; + MT76_FILTER(OTHER_BSS, MT_WF_RFCR_DROP_OTHER_TIM | MT_WF_RFCR_DROP_A3_MAC | MT_WF_RFCR_DROP_A3_BSSID);