ath9k_htc: Set RX filter based to allow broadcast Action frame RX
authorJouni Malinen <jouni@codeaurora.org>
Sun, 26 Apr 2020 08:47:33 +0000 (11:47 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 30 May 2020 14:17:23 +0000 (17:17 +0300)
Advertise support for multicast frame registration and update the RX
filter based on the recently added FIF_MCAST_ACTION to allow broadcast
Action frames to be received. This is needed for Device Provisioning
Protocol (DPP) use cases that use broadcast Public Action frames.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200426084733.7889-2-jouni@codeaurora.org
drivers/net/wireless/ath/ath9k/htc_drv_init.c
drivers/net/wireless/ath/ath9k/htc_drv_main.c
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c

index 40a0650..1d6ad8d 100644 (file)
@@ -780,6 +780,8 @@ static void ath9k_set_hw_capab(struct ath9k_htc_priv *priv,
        SET_IEEE80211_PERM_ADDR(hw, common->macaddr);
 
        wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
+       wiphy_ext_feature_set(hw->wiphy,
+                             NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS);
 }
 
 static int ath9k_init_firmware_version(struct ath9k_htc_priv *priv)
index 791f663..2b7832b 100644 (file)
@@ -1251,6 +1251,7 @@ out:
        FIF_OTHER_BSS |                         \
        FIF_BCN_PRBRESP_PROMISC |               \
        FIF_PROBE_REQ |                         \
+       FIF_MCAST_ACTION |                      \
        FIF_FCSFAIL)
 
 static void ath9k_htc_configure_filter(struct ieee80211_hw *hw,
index 118e555..b353995 100644 (file)
@@ -893,7 +893,8 @@ u32 ath9k_htc_calcrxfilter(struct ath9k_htc_priv *priv)
        if (priv->rxfilter & FIF_PSPOLL)
                rfilt |= ATH9K_RX_FILTER_PSPOLL;
 
-       if (priv->nvifs > 1 || priv->rxfilter & FIF_OTHER_BSS)
+       if (priv->nvifs > 1 ||
+           priv->rxfilter & (FIF_OTHER_BSS | FIF_MCAST_ACTION))
                rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL;
 
        return rfilt;