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 <[email protected]>
---
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 2 ++
drivers/net/wireless/ath/ath9k/htc_drv_main.c | 1 +
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 3 ++-
3 files changed, 5 insertions(+), 1 deletion(-)
This depends on "mac80211: Process multicast RX registration for Action
frames" from mac80211-next.
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_init.c b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
index d961095ab01f..3fdaaf74acfe 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
@@ -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)
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
index 791f6633667c..2b7832b1c800 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
@@ -1251,6 +1251,7 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed)
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,
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
index 9cec5c216e1f..10dfc01ddedd 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
@@ -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;
--
2.20.1
Hi Jouni,
I love your patch! Yet something to improve:
[auto build test ERROR on wireless-drivers-next/master]
[also build test ERROR on wireless-drivers/master ath6kl/ath-next v5.7-rc3 next-20200424]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Jouni-Malinen/ath9k-Set-RX-filter-based-to-allow-broadcast-Action-frame-RX/20200428-022034
base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
config: nds32-allyesconfig (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=nds32
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <[email protected]>
All error/warnings (new ones prefixed by >>):
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c: In function 'ath9k_htc_calcrxfilter':
>> drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:897:40: error: 'FIF_MCAST_ACTION' undeclared (first use in this function)
897 | priv->rxfilter & (FIF_OTHER_BSS | FIF_MCAST_ACTION))
| ^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:897:40: note: each undeclared identifier is reported only once for each function it appears in
--
drivers/net/wireless/ath/ath9k/htc_drv_main.c: In function 'ath9k_htc_configure_filter':
>> drivers/net/wireless/ath/ath9k/htc_drv_main.c:1254:2: error: 'FIF_MCAST_ACTION' undeclared (first use in this function)
1254 | FIF_MCAST_ACTION | \
| ^~~~~~~~~~~~~~~~
>> drivers/net/wireless/ath/ath9k/htc_drv_main.c:1267:19: note: in expansion of macro 'SUPPORTED_FILTERS'
1267 | changed_flags &= SUPPORTED_FILTERS;
| ^~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath9k/htc_drv_main.c:1254:2: note: each undeclared identifier is reported only once for each function it appears in
1254 | FIF_MCAST_ACTION | \
| ^~~~~~~~~~~~~~~~
>> drivers/net/wireless/ath/ath9k/htc_drv_main.c:1267:19: note: in expansion of macro 'SUPPORTED_FILTERS'
1267 | changed_flags &= SUPPORTED_FILTERS;
| ^~~~~~~~~~~~~~~~~
--
drivers/net/wireless/ath/ath9k/htc_drv_init.c: In function 'ath9k_set_hw_capab':
>> drivers/net/wireless/ath/ath9k/htc_drv_init.c:784:10: error: 'NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS' undeclared (first use in this function)
784 | NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath9k/htc_drv_init.c:784:10: note: each undeclared identifier is reported only once for each function it appears in
vim +/FIF_MCAST_ACTION +897 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
864
865 struct ath_hw *ah = priv->ah;
866 u32 rfilt;
867
868 rfilt = (ath9k_hw_getrxfilter(ah) & RX_FILTER_PRESERVE)
869 | ATH9K_RX_FILTER_UCAST | ATH9K_RX_FILTER_BCAST
870 | ATH9K_RX_FILTER_MCAST;
871
872 if (priv->rxfilter & FIF_PROBE_REQ)
873 rfilt |= ATH9K_RX_FILTER_PROBEREQ;
874
875 if (ah->is_monitoring)
876 rfilt |= ATH9K_RX_FILTER_PROM;
877
878 if (priv->rxfilter & FIF_CONTROL)
879 rfilt |= ATH9K_RX_FILTER_CONTROL;
880
881 if ((ah->opmode == NL80211_IFTYPE_STATION) &&
882 (priv->nvifs <= 1) &&
883 !(priv->rxfilter & FIF_BCN_PRBRESP_PROMISC))
884 rfilt |= ATH9K_RX_FILTER_MYBEACON;
885 else
886 rfilt |= ATH9K_RX_FILTER_BEACON;
887
888 if (conf_is_ht(&priv->hw->conf)) {
889 rfilt |= ATH9K_RX_FILTER_COMP_BAR;
890 rfilt |= ATH9K_RX_FILTER_UNCOMP_BA_BAR;
891 }
892
893 if (priv->rxfilter & FIF_PSPOLL)
894 rfilt |= ATH9K_RX_FILTER_PSPOLL;
895
896 if (priv->nvifs > 1 ||
> 897 priv->rxfilter & (FIF_OTHER_BSS | FIF_MCAST_ACTION))
898 rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL;
899
900 return rfilt;
901
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
kbuild test robot <[email protected]> writes:
> Hi Jouni,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on wireless-drivers-next/master]
> [also build test ERROR on wireless-drivers/master ath6kl/ath-next v5.7-rc3 next-20200424]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system. BTW, we also suggest to use '--base' option to specify the
> base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
>
> url: https://github.com/0day-ci/linux/commits/Jouni-Malinen/ath9k-Set-RX-filter-based-to-allow-broadcast-Action-frame-RX/20200428-022034
> base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master
> config: nds32-allyesconfig (attached as .config)
> compiler: nds32le-linux-gcc (GCC) 9.3.0
> reproduce:
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=nds32
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kbuild test robot <[email protected]>
>
> All error/warnings (new ones prefixed by >>):
>
> drivers/net/wireless/ath/ath9k/htc_drv_txrx.c: In function 'ath9k_htc_calcrxfilter':
>>> drivers/net/wireless/ath/ath9k/htc_drv_txrx.c:897:40: error:
>>> 'FIF_MCAST_ACTION' undeclared (first use in this function)
> 897 | priv->rxfilter & (FIF_OTHER_BSS | FIF_MCAST_ACTION))
> | ^~~~~~~~~~~~~~~~
This is expected as the patch depends on a commit in mac80211-next:
873b1cf61105 mac80211: Process multicast RX registration for Action frames
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches