diff mbox series

[2/2] ath9k_htc: Set RX filter based to allow broadcast Action frame RX

Message ID 20200426084733.7889-2-jouni@codeaurora.org (mailing list archive)
State Accepted
Commit 2a9311b5d39ab7e60e612d75fd08c78e358caf4d
Delegated to: Kalle Valo
Headers show
Series [1/2] ath9k: Set RX filter based to allow broadcast Action frame RX | expand

Commit Message

Jouni Malinen April 26, 2020, 8:47 a.m. UTC
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>
---
 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.

Comments

kernel test robot April 28, 2020, 4:35 a.m. UTC | #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 <lkp@intel.com>

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/kbuild-all@lists.01.org
Kalle Valo April 28, 2020, 5:05 a.m. UTC | #2
kbuild test robot <lkp@intel.com> 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 <lkp@intel.com>
>
> 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
diff mbox series

Patch

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;